ソフトウェア開発のベストプラクティスを、ソフトウェアのバックグラウンドを持たない人々にとってより興味深いものにするにはどうすればよいですか?


8

私が働いている場所には、ソフトウェアのバックグラウンドを持つ経験豊富なソフトウェア開発者が何人かいますが、開発者の大多数は、優れたドメイン知識はあるものの、高品質で保守可能なソフトウェアの開発に関して限られた経験を持つ物理学者または化学者です。これに対処するために、私たちは定期的な話し合いやワークショップを開催し始めました。

これらの人々をより効果的なソフトウェア開発者にするのに役立つように、どのようなトピックについて話し合うべきだと思いますか?

特に、多くの開発者はソフトウェアを興味深いテーマと見なしていないため、これらの講演に熱心に取り組むのに苦労しています。 ソフトウェアのバックグラウンドを持たない人々にとって、これらをどのようにもっと面白くできるでしょうか?

ありがとう


言い換えましょう-トラックの運転手にF1レースに参加するように伝えるにはどうすればよいですか?(それはこのようなものですか?)
Ayush Goyal

私たちの状況をよりよく説明するために、私たちは全員、大規模な組織のソフトウェア部門の一員です。会社の歴史では、科学はソフトウェアよりも以前より重要でした。そのため、私たちは多くのソフトウェア開発者が科学のバックグラウンドを持っています。しかし、会社は変わり、私たちは今より大きな会社になり(5か国でソフトウェア開発者が40人から250人に)、私たちが抱える課題のほとんどは科学ベースではないソフトウェアです。
Andy Lowry、2010年

回答:


4

大変になると思いますので、闘いに備えましょう。結局のところ、プログラミング(特にカウボーイハックとスラッシュ以外のコーディング)は、誰にとってもわくわくするようなものではありません。これは、知的に挑戦し、それなりにやりがいのある分野ですでに働いている人々に特に当てはまります。

まず最初に、トークやワークショップ自体を楽しいものにします-無料の食べ物(それが素晴らしい食べ物であることを確認してください!)と同様のごちそうは、開始するのに適しています。少しのユーモアも注入してみてください。少なくとも最初は、できるだけ簡潔かつ非公式にしてください。

次に、話し合いとワークショップが適切であることを確認します。それらが抽象化しすぎないようにしてください(たとえカバーされている概念が抽象的であっても)、可能であれば、カバーされているものを試すことができることを確認してください。セッション間で彼らが何をしたかをさらにチェックし、肯定的なフィードバックを提供します。それらが関連性がなく、あなたが議論したことを適用していない場合、彼らはそれらを(正しく)時間の無駄と見なします。

最後に、いくつかの基本的なコーディング標準の導入を試みます。できれば、それらが現在どのように動作しているかをあまり邪魔しないものが望ましいです。.netの世界にいる場合、Resharperは、命名規則などについて警告するため、最初に使用するのに適しています。StyleCop(Resharperに統合可能)を使用して、さらにそれを行うことができますが、必ず最初にルールセットをカスタマイズしてください。.netを使用していない場合は、他の場所にも同様のツールが存在すると確信しています。それは多くはありませんが、それは始まりです。

即時の結果を期待しないでください(おそらく自動的に適用されるコーディング標準を除いて)-ベストプラクティスを紹介するために6、9、12か月間ぐらついていたと聞きました。

私はこれまでたどり着いただけですが、次の本Driving Technical Changeには、かなり適切で適切なアドバイスがあるようです。


素晴らしいアドバイス、ありがとう。Driving Technical Changeの最新のベータ版を読み終えたところです。これは非常に参考になったので、読むことをお勧めします。
Andy Lowry 2010年

5

これらの化学者と物理学者が主にプロの開発者ではなく、そうなることを意図していない場合、問題について別の考えをすることをお勧めします。

「実際の」開発者は、開発者が開発しやすい環境を提供する必要があります。あなたはメンタリングを提供し、彼らのコードのピアレビューを提供して、コードを最初から渡すのに十分なものにするための強力なインセンティブを提供する必要があります。

言い換えれば、彼らを平等に扱うのではなく、彼らが実際に何をしているのか、彼らの強みであると彼らが勝てるようにできる限りのことを提供します。


2

私は、開発者ではない、なりたくない非常にスマートなネットワークエンジニアと協力しています。私はネットワークエンジニアになりたくないので理解できます。

うまく機能していることがわかったのは、エンジニアと私がチームプログラミングを行うことです。私たちは別々のサイトにいるので、電話に出て、通常はscreenコマンドを使用して画面共有セッションを開き、コードをバストアウトします。

私たちは何度もそれを実行し、それが本当にうまく機能していると感じました。私は彼らが彼らの仕事をよりよくする方法を理解しています、そしてエンジニアは私たちが保守可能でテストされたコードを書く方法を学んでいます。


1

彼らは会社でどのような役割を果たしていますか?あなたが開発者を必要とするならば、彼らが良い開発者ではなく、良い開発者になることに興味がないなら、彼らを手放してください。彼らが物理学者や化学者であることになっている場合は、ワークショップを実行できますが、彼らが高いレベルの関心を維持することを期待しないでください。それらが両方であることになっている場合は、期待を高め、複雑なドメインの知識とスキルを維持しながらソフトウェア開発者の役割を引き受けることを正当化するのに十分な金額を支払うようにしてください。

誰かの定義された役割の一部が開発者である場合を除いて、彼らはおそらく高品質のソフトウェアの開発にそれほど関心を持つことは決してないでしょう。誰かが簡単なスクリプトやハックを作成しているからといって、必ずしもソフトウェア開発者になりたいというわけではありません。これは、会計士が複雑なExcelの数式を考え出すような、目的を達成するための手段にすぎません。高品質で保守可能なソフトウェアが必要な場合は、ソフトウェア開発者が作成する必要があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.