困難に対する認識の変化

過去50年間の複雑さに対する態度の変化に関する非常に主観的な考えを共有したいと思います。



近年、ソフトウェア開発の方法に何かが欠けているように思えました。 全世界が喜んで、歌で加速し、ソフトウェアをどんどん作成します。そしてブレーキをかけます。 追いつくためには、あいまいな性質の内部障壁を克服する必要があり、その外側で行動することは有益であるが(私にとっては)不快です。 なぜ有益なのかは明らかではありません。 そして、それが不快な理由は明らかではありません。



今日理解しました。 昔は彼らは複雑さで戦っていましたが、今ではそれを無視しています。 これらのビュー間の移行は長くスムーズでしたが、顕著な違いはすでに見られます。



主に前世紀に作成された資料「古代の原稿」から学び、古典的なSFも読んだため、知らずに「古い学校」の支持者になりました。 違いは何ですか?



コンピューターが大きく、ソフトウェアが小さいとき、私たちは複雑に陥り、それを恐れました。 理解することなく、彼らは恐怖の源と戦い始めました。 したがって、すべてを形式化し、標準化し、分類したいという願望。



いくつかの予約
以下で説明することは、業界全体に適用されるわけではありません(常に特別な要件で規定されている飛び地があります)が、それでも大多数に適用されると思います。



また、私はこの記事の目的としてこの問題の包括的な研究を設定していないため、大規模な包括的な例を挙げようとはしません。 良い例(または反例)があれば、コメントに書いてください。



最初に、私たちは戦いに勝ちました。なぜなら、私たちは私たちのために新しい領域に入り、最も単純なタスクを引き受けたからです。 成功により、さらに多くの形式と標準が生成されました。順次ソフトウェア開発モデル(ウォーターフォール)、OOP(一般的になった形式)、「ハード」プロトコルとフォーマット(XML)、リレーショナルデータベース、対応するイディオム(RAII)など。



時間が経つにつれて、タスクはより複雑になり、複雑さに立ち向かうことはより困難になりました。 この問題には2つの影響がありました。



  1. 過度に複雑な「フリーク」を生み出しました-複雑さから別の島を勝ち取ろうとする短命の技術。
  2. 開発者自身による世界の認識を変えました。


その結果、複雑さに対する新しい態度が形成されました。 彼女は私たちの宇宙の属性の1つとして単純に受け入れられました。 重力のように。 重力からの防御は無意味で高価です。 ですから、複雑です。



この見解が広まるにつれて、対応するテクノロジーの開発が始まりました。柔軟な方法論、NoSQLデータベース、動的型付けを備えた言語、単純なプロトコルと形式(JSON)、Fail Fastなどの柔軟なイディオムです。



もう一つ注意点
アイデア(ほとんどすべての現代のアイデアはかなり前に登場した)の出現とその分布を混同しないようにすることが重要です。



複雑さについての新しい見方は、多くの場合に非常に有益であることが判明しました(すべてではありません)。 外部世界からの形式によって完全に隔離されたシステムを作成するために膨大なリソースを費やす代わりに、既存のランドスケープにソリューションを適合させ、その不規則性を巧みに活用して、直接直面している問題を迅速に修正できます。



しかし、これらの利点を活用するには、複雑さを恐れることをやめる必要がありますが、これはそれほど単純ではありません。



All Articles