私は最近、ソロ開発者が作成した専用プログラムを使用する新しいオフィスで仕事を始めました。彼は時々パートタイムの技術サポートとして働いていますが、会社はこのソフトウェアにサインオフしており、彼はそれを開発するためにもはや支払われていません。
彼のソフトウェアのユーザーとして、懸念の源として私に飛び出す多くの問題があります:
これらは深刻な問題であり、私が彼である場合は指摘されたいと思いますが、私は資格のあるプログラマーではありません(私はソーシャルワーカーです)。失礼かどうかわかりません。特に、これがもはや彼の有料の仕事ではないとき、彼のボタン穴を開けて、塩漬けのハッシュと通常の形式についてはしゃぎ始めます。
それは外れていますか?そうでない場合は、どのようにブローチしますか?
編集-コメントによって促される詳細情報:
自分でコードを変更する立場にない場合は、どの問題が最も重要であるかを決定し、彼にアプローチする必要があります。 「批判」としてそれを非難するのではなく、「フィードバック」を装ってそれを行います。
私がフィードバックを言うとき、私は「あなたがXのとき、ここに何が起こるか...」の線に沿って、行動とその効果を述べる非常に明確なプロセスを意味し、物事を厳密に話すことは直接観察可能です。彼や彼のプロ意識などを攻撃しないでください。事実に固執してください。
ピアフィードバックの提供に関する優れた概要については、次の投稿を聞いてください: http://www.manager-tools.com/2006/10/the-peer-feedback-model
最初の項目で成功した場合は、次に重要な項目に進みます。
幸運を!
ソーシャルワーカーとして、このプログラマーが、あなたがかつて取り組んだ重要なケースを誤って処理したが、もはや割り当てられていなかったと彼がどのように考えたかをアドバイスするように来てくれたら、感謝しますか?
彼はあなたに近づくために非常に不安定な地面にいると思います。逆もまた真です。
そのような状況下で、問題のアプリケーションのセキュリティ状態に懸念がある場合(そして、ここに書いたことを考えると、すべきそのような懸念がある場合)、それが最善だと思います。あなたの懸念を修正に影響を与えるいくつかの力を持っている人に持ってくることによって提供されます。元の開発者を教育しようとすることはあなたの代官管轄区ではなく、他の何よりも干渉と見なされる可能性が高くなります。
プログラマーとこれについて議論することはあまり意味がないと思います。そもそも、彼は「アマチュア」から自分の仕事のやり方を教えられても親切ではないかもしれません。
ただし、深刻なセキュリティ問題を管理者に指摘する場合があります。彼らにそれについて何をすべきかを決めさせてください。場合によっては、修正はデータベースアカウントのアクセス許可の単純な変更であり、数分で実装できるように思われます。
ただし、この管理者は、このアプリケーションのセキュリティが本当に重要かどうかを検討する必要もあります。貴重な情報や機密情報が含まれていますか?不満を持つ従業員に問題が発生する可能性はありますか?ネットワークは適切に保護されていますか?
プログラムの裏話を知っていますか?おそらくそれは非常に短い時間枠で書かれ、開発者はこれらの決定をかなり迅速に行いました。ソフトウェアは、調査を行わずにできるだけ早く実行する必要があったからです。
サポートにはコードのパッチが含まれていますか?これは、コードが持っているいくつかのマイナーな問題で機能する場合があります。もう1つの考えは、このソフトウェアを置き換えるのがどれほど難しいかということです。
未承諾の建設的な批評を持つピアを助けるピアが機能する場合がありますが、これは私の心とは少し異なります。私はあなたが問題をどのように伝えるかについて敏感であり、それを専門的に保つように努めると思います。
彼はもう仕事にお金を払っていないので、おそらくそうではありません。 2つの可能性があります。
どちらの場合も、それはもはや開発されていないので、深刻な欠陥があると彼に言ってもそれを改善することはできません。
まず第一に、エンドユーザーとして、あなたはこのソフトウェア開発プロジェクトの最も重要な利害関係者の1人です。あなたの意見は完全に有効であり、経営陣に聞かれるに値します!
次に、職種や学歴に関係なく、あなたが話していることを知っているように見えます(DBが適切に正規化されていない場合を知っています)。
第三に、あなたは明らかにこの問題について非常に強く感じています。
ですから、経営陣に懸念を表明する必要があります。ケースを明確に、そして非常に敬意を持って述べるようにしてください。
彼にそれを持ち込まないでください。上司にそれを持ってきてください。
---編集---
ああ、それを書面で電子メールで送信します(メールサーバーがサポートしている場合は、受信確認をオンにします)。電子メールとその後のすべての受信確認と受信を保持します(印刷してPDFでスキャンし、... PDFと印刷物の両方。)
あなたが今述べた問題のふたを吹くと、あなたは逆効果になるかもしれないからです。結局のところ、彼らはあなたの上司の鼻の下で書かれたので、彼らはそれ(または食物連鎖の上の誰か)に部分的に責任があります。
つまり、深刻な問題を提起するためのあなたの専門的および倫理的な努力があなたの上の誰かによって歓迎されないかもしれないという独特の可能性があるということです。したがって、この問題に関連するすべての会話を記録してください。
なぜなら、セキュリティ上の懸念から物事が扇風機に当たった場合、あなたが自分の役割を果たしたという記録があるからです。そして、すべて(セキュリティの問題を含む)を文書化することで、スピンドクターが配置されたときにお尻をカバーできます。
プログラマーにコードの改善が必要であることを伝える意図は何ですか?
彼をより良いプログラマーにしようとしていますか?そうです、あなたはラインから外れています。彼のプログラミングスキルが劣っていると彼に言うのはあなたの場所ではありません。
コードに関するセキュリティ上の懸念を提起することが目的である場合、そうです。それは適切なことですが、プログラマーにとってはそうではありません。アプリケーションの担当者に相談し、あなたが抱えている懸念事項に関心があるかどうかを尋ねます。 「fooに関する記録を保持しているアプリをご存知ですか?それはうんざりです、そしてここに理由があります。」それがどのようになってきたのか、誰がやったのかという問題とは別に問題を説明してください。
倉庫への頭上のドアが夜にひもの部分で固定されていたことに気づいたかどうかを検討してください。あなたは「あなたのセキュリティはひどいです、そしてそれを設定した人はばかです、そしてあなたが今それを修正しなければ、あなたは失敗します」とは言わないでしょう。それがどうあるべきかについてのすべての裏話を知っていたとしても、あなたはそれをすべて省くでしょう。
代わりに、「指摘しておかなければならないことを見ました。倉庫のドアが麻ひもで閉まっているのを見ました。そして、それは、強固な強盗を入れないほど強くはありません。」それはあなたが目にする問題に完全に焦点を当てており、それがそのようになっていた方法のドラマには入りません。
そして、あなたが「ねえ、私はセキュリティ上の懸念を持っている」と言って、彼らが「ええ、それは大丈夫です、それは内部です、それは大したことではありません」と言うなら、それを落としてください。あなたはあなたの仕事をしました。
私の経験では、開発者が批判をうまく受けることはめったにありません(誰がそうしますか?)。そのため、プログラミング(最高の言語、プラットフォーム、フレームワーク)とは何でも関係することについて、非常に多くの熱烈な宗教的議論があります。それで、あなたがシステムを見ているとあなたが言うように、私はそれをカジュアルな会話で取り上げるでしょう。