読者です 読者をやめる 読者になる 読者になる

give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

犬小屋と高層ビルの違い

システム開発

ちょっと興味深いエントリを見つけました。


IDE教育に不安を覚えること - みねこあ


なるほど、Smart UIと呼ばれる作り方が、システムの品質を下げるという点は同意です。
ただ、その原因がIDEにあるのかというと、必ずしもそれだけではない気がします。


おいらが思う一番の原因は、犬小屋と高層ビルの作り方の違いに気づいていないプログラマが多いせいではないかと思っています。
つまり、「はじめてのXXX」とか「一週間でわかるXXX」みたいな本やWeb記事には、ごく基本的な文法の説明や簡単なサンプルプログラムの作り方しか載っていません。
こうした説明のほとんどはSmart UIパターンになっていると思います。


もちろん初心者向けの内容なので、簡単な内容に終始してしまうのは仕方ありません。
しかし、ここで説明されているのは、いわば犬小屋の作り方です。
実際に業務でシステムを構築する場合は犬小屋レベルの案件はほとんどありません。
業務で遭遇するのは一軒家やマンション、もしくは高層ビルです。


犬小屋の作り方しか知らない人間が果たして高層ビルをまともに構築できるでしょうか?
もちろん無理な話なんですが、そのままやっちゃうんですよね〜。犬小屋の作り方で。


実際の建築ではビルは作れませんが、システム開発においては「とりあえず動くレベル」のものは作れちゃったりします。
そして、なまじそんなシステムがリリースできたりすると、開発者は変な自信を持ってしまったりします。
でも、所詮犬小屋の作り方がベースなので、フタを開けてみると中は目も当てられない惨状が広がっています。。。


というわけで、犬小屋と高層ビルの違いを認識し、「はじめてのXXX」とか「一週間でわかるXXX」で書かれている内容はあくまで参考程度にしかならないということを理解することが重要だと思います。


高層ビルを作るには高層ビルを作るための高度なスキルやテクニックが要求されます。
その中の一つとして挙げられるのが「設計力」です。
一つ一つのプログラムを作り上げるスキルだけではなく、システム全体のアーキテクチャを設計するスキルが重要になってくると思います。


ところが大規模システムを開発する際に参考になる文献は、というと非常に数が限定されます。
大体において分厚い本になってしまうので、読みたがらないプログラマも多いです。
その結果、犬小屋しか作れないプログラマが蔓延する・・・という好ましくない状況が続いている気がします。


そこで「それじゃあダメだ!」と思った方のために、おいらが今までに読んで参考になった本を紹介しておきます。


入門 オブジェクト指向設計―変更に強く生産性が高いシステムを

入門 オブジェクト指向設計―変更に強く生産性が高いシステムを


プログラマから設計者へのステップアップを説いています。
それほど分厚くないので読みやすいです。


実践!ソフトウェアアーキテクチャ ~VisualStudioとASP.NETによる業務システム開発方法~ (.NET TECHNOLOGY)

実践!ソフトウェアアーキテクチャ ~VisualStudioとASP.NETによる業務システム開発方法~ (.NET TECHNOLOGY)


上の本と同様、こちらもプログラマからソフトウェアアーキテクトへのステップアップを推奨しています。分厚くない点も同じです。
具体的なアプリケーションを構築しながら、一つの設計例を示してくれます。
もちろん、Smart UIパターンではありません。


UMLによるエンタープライズJava開発―ソフトウェアモデリングによる効率的なJavaシステムの構築 (Object Oriented SELECTION)

UMLによるエンタープライズJava開発―ソフトウェアモデリングによる効率的なJavaシステムの構築 (Object Oriented SELECTION)


一つのサンプルプロジェクトを最初から最後まで具体的に説明してくれます。
UMLなんかでシステムが作れるんかい!?と思っている方にはオススメです。



このシリーズのVol.3〜5は、大規模な情報システムを構築する際に参考になる考え方がたくさん載っています。


エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)


ビジネスロジックを構築する主要なパターンとして、トランザクションスクリプト、ドメインモデル、テーブルモジュールがあることは押さえておきたいですね。
あと、システムのレイヤー化についても載っています。
ただし、訳が読みにくいのが難点。


システムアーキテクチャ構築の原理 ITアーキテクトが持つべき3つの思考 (IT Architects’Archive ソフトウェア開発の実践)

システムアーキテクチャ構築の原理 ITアーキテクトが持つべき3つの思考 (IT Architects’Archive ソフトウェア開発の実践)


プログラミングだけでなく、システムを配置するハードウェアや運用面など、システム全体のアーキテクチャを構築する際に参考になる情報がたくさん載っています。


Code Complete第2版〈上〉―完全なプログラミングを目指して

Code Complete第2版〈上〉―完全なプログラミングを目指して


プログラミング技術だけでなく、システムを設計する際にも参考になる情報が非常に多いです。
技術者として幅広い知識を身につけることができます。
読むときは必ず上下巻セットで!


P.S.
犬小屋と高層ビルのメタファはおいらが考えたものではなく、どこかで読んだ本に書いてあった話です。
何の本だったかな〜?CODE COMPLETEだったような気もするんですけど。。。


P.S. 2
ちょっとこの話に関連した小ネタを追記しておきます。



ご参考までに〜。