私の長年の経験:
- 言語が変更されました(通常は比較的遅い)。
- 実際に解決できる問題の範囲は拡大しました(多少速くなりました)。
- ソリューションのサイズと複雑さが(比較的迅速に)増加しました。
- あるものがありました
flavor of the day
(時々良い、しばしば悪い)。
パターンに関する議論で述べたように、4人のギャングはパターンを発明しませんでした。彼らは、すでに適用されているソリューションの用語とテンプレートを考案しました。
他の多くの分野とは異なり、まだ一般的ではない多くのことがあります。私は多くの最先端のものが行き来するのを見てきました。これらの多くはすでに実践されている技術の言い換えであり、通常はある程度成功しました。他の人は多かれ少なかれ去り、ほとんどの場合新しいアプローチがあります。(最近第5世代の言語を見た人はいますか?)
私が見た中で最も効果的なプログラマーは、実績のあるコンポーネントを選択し、実用的なソリューションに組み込むことができます。これには、最先端のものがほとんど含まれないため、一般にプロジェクトのリスクが増大します。すでに行われた作業に基づいて構築する機能により、可能な範囲を広げることができます。
プログラミング言語は、比較的少数のファミリに分類される傾向があります。家族の1つの言語に精通していると、同様の言語での作業が簡単になります。言語で利用可能なライブラリを理解し、それらを活用すると、生産性と信頼性が大幅に向上します。一般的に、適切なライブラリのない新しい言語よりも適切なライブラリのある古い言語を選択します。
Because We Can
シンドロームを回避するには、新しいテクノロジーを適用することが重要です。それは一年の風味であるため、新しい技術を追加すると、解決するよりも多くの問題を引き起こす傾向があります。テクノロジーが実際の問題を解決する時期と、複雑さを追加する時期を知ることは有用なスキルです。
本当に優れたプログラマーが新しい問題を解決し、残りは既存のソリューションを使用します。最先端のテクノロジーを必要とする企業はほとんどなく、すべてが堅実なソリューションを必要としています。
私は通常、カミソリの刃を滑り落ちることを後悔しています。実績のある技術を使用して後悔したことは今まで覚えていません。ただし、記述されてnew
いるものの多くは、既存のものの再パッケージ化です。通常、この再パッケージ化により、物事が理解しやすくなり、適切に適用されます。