ソフトウェア


物事を習得するためには順序があります。いきなりステップを駆け上がろうとすれば必ずどこかで壁にぶつかります。


まずは、ハードウェアとソフトウェアの基礎知識に目を通して下さい。

     


◆ 壁を打ち砕く力を身につけよう!


ソフトウェア開発をしているとさまざまな壁にぶつかります。

 

・プログラミング特有の考え方の壁

・ポインタの壁

・オブジェクト指向の壁

・良い設計ができるようになる壁

・誰にでもわかりやすくするための壁

・プロジェクト管理の壁

・チームマネージメントの壁

・短納期で高品質・高機能なソフト

・なくならないバグ

・なくならない困難な追加要求

・人材不足、リソース不足

・人材育成の壁

 

経験年数を重ねればその経験に応じた壁が現れます。

 

プロになることは簡単です。しかし、本当に難しいのはプロであり続けることです。

 

壁はあなた自身の力で打ち砕きましょう。あなたならどんな壁も必ず壊せます。それがプロであり続けるということです。

 

今、あなたの目の前に立ちふさがっている壁を壊す手助けができたら嬉しいです。

 

〜世界に変化を望むのであれば、我々は自らその変化にならなければならない〜

 

何か問題が起こったとき「誰がやったのか?」ではなく、「なぜこのような問題が起こるのか?」を考えましょう。

 

この質問を5回繰り返せば問題の本質にたどり着けます。どんな組織、システムにも問題はあります。


問題を見つけるだけなら誰でもできます。問題を指摘するのではなく問題の本質を解決する方法を考えましょう。

 


〜良い人を悪いシステムに入れれば悪い結果を生み出す〜


これからの先行き不透明な時代を生き残っていけるソフトウェアエンジニアとは?

 

いくら優秀な人が集まっても、システムが悪ければすべてが台無しになります。

 

目的と意味を共有する。

みんなが同じ目的を持っていれば手段を決めずに任せることができる。

みんなが同じ方向に向かい、協力し合い、自分の発想とアイディアを最大限に打ちだしカオスの中から新しいより優れた秩序が生まれる。

戦略、プロセス、組織構造のすべてがひとつの方向に向かい一貫性を持つ必要があります。

 

このためにあなたは日ごろから「システム作り」に専念しなければいけません。

 

 

生き残っていける人は「よいシステムを作れる人」だと私は思います。

 

一番大切なのはシステムの本質を理解しシステムを使う人が使いやすい設計をすること。

クライアントの要求や変更に短期間で対応可能な設計にすること。

そして、ソフトをメンテナンスする人が理解しやすいコーディングをすること。

このようなシステムを構築できる人が技術力が高いと私は思います。


細かい技術、たとえばテキストボックスをグレー化するなど、調べればすぐわかるようなことは覚える必要はない気がします。細かい技術を覚えていれば作業は早くなりますが、設計という根本がうまくできてなければ付焼刃的な修正しかできません。

だから、ここで学ぶのは、

基礎知識

● あなたの設計力を高めるための知識

● プロジェクト管理/人材育成

● 日常の業務を効率化する部品集

 


◆ ソフトウェアに関する名著


ここで紹介する書籍は発売から数年〜数十年経っていますが今でもこの状況は変わってません。

ソフトウェアの歴史に多大な影響を与えてきた不朽の名著からソフトウェア開発の”本質”を読み解きましょう。

 




● ソフトウェア開発の基本


・ ソフトウェア職人気質

 → 工学ではなく、職人気質という基本に戻る。

 

・ 達人プログラマー

 → 本物のプログラマーになるためのアドバイス。

 

・ コードコンプリート

 

・ プログラミング作法

 

・ポインタ

 → ポインタが苦手な人、ポインタを使いこなしたい人

 

デザインパターン

 → きれいな設計をするために

 


● プロジェクト管理