今月の Software Design : 2013/04 (その2)

 「今月の Software Design 」の4月号の投稿の2回です。

 今回も、感想は特に気になったもの以外は省略して書かせてもらいます。

 それでは、第一特集の残り4つのパートについて、要約と感想を以下のフォーマットで書いてゆきます。

 

・記事のタイトル
( 1 行目 ) 記事の要約
( 2 行目以降 ) 感想

 

○ 第一特集④ :文系書店員→ スタートアップエンジニアへの180度転回

 大学や研究所に本を売り歩くお仕事をしていた方がエンジニアに転向した事例の紹介です。バックグラウンドが文系で且つ、プログラミング経験が無い中でソフトウェアエンジニアに転向し、RoomClip という iPhone アプリの開発で会社を立ち上げた話を苦労話と共に紹介しています。

 

○ 第一特集⑤ :今すぐはじめよう!脱超初心者からのベストプラクティス

 プログラミング歴10年の筆者が、これからプログラミングを始める人に対して、自分の経験を振り返りながらアドバイスをするという内容の記事です。具体的には、使う言語を決めてその言語に関する入門書をキッチリ読み、コードをひたすら書く。そして尊敬できるプログラマを見つけ、自分が作りたいモノを作り、キッチリ成果(プロダクトやブログなどのドキュメント、そしてカンファレンス発表)を出すことが重要だと言っています。

 

○ 第一特集⑥ :これからエンジニアになるあなたへ

 新人から3年目くらいまでのエンジニアを対象とした、"文献の読み方"、"プログラミング能力向上の方法"、そして "モチベーションの保ち方" の3つについて、それぞれ心構えや効果的な方法について紹介しています。まず "文献の読み方" では一時配布元のオジリナルソースを見ましょうという内容の話をしています。また "プログラミング能力向上" については、キレイに書かれたコードを読むことの重要性と他人に理解してもらう事を意識しながらコードを記述することの重要性を説いています。そして "モチベーションの保ち方" では、コミュニティへの参加、学習内容の発信、そして仲間づくりの3つの具体的な方法を紹介しています。

 本特集の他の人も、中身の詳細は違えどほとんど、皆「ソフトウェアエンジニアとしてどういった心構えや方法を採るべきか」という点で一致しています。その中でも、個人的には本パートの中原さんの意見にかなり同意です。

 

○ 第一特集⑦ :プログラミング言語への理解を深めようーオススメの学習ステップ

 それぞれのプログラミング言語の特性を理解するためにはどうすべきかというテーマについて、言語の特性を理解することの重要性と、言語の特性を理解するための方法論について紹介しています。言語特性を理解するための方法論としては "言語開発者の苦悩を追体験すること" を紹介しており、アセンブラなどの高級「でない」言語から、徐々に C や C++ といった高級な言語について学習し、最終的に LL を触るといった方法を紹介しています。

 非常に面白いテーマです。また言語の特性を理解する重要性にも非常に共感できますし、筆者の言う「あるプログラミング言語を使ってプログラムを書けることと、プログラミング言語を理解している事は別次元の話」といった内容についても非常によくわかります。個人的な経験からも、かつて Common Lisp を使ってオセロの AI を作って @m2ym さんに見せた際「これは CommonLisp で書かれた C プログラムですね」と言われた事がいまだに忘れられません。また 4,5 年前に Java っぽい JavaScript のコードをガシガシ書いていましたが、JavaScript のプロトタイプベースのオブジェクト指向がどんなものかという事はここ最近になって理解しました。こんな風に、プログラミング言語の特性を理解しないでも「動く」プログラムは書けちゃいますが、とても他人に見せられたものではありません。

 では具体的にどういう方法でそれが理解できるかについて。ここで書かれている内容も良さそうですが、個人的には別の意見です。それは、他人に見られても恥ずかしくないコードを意識する事。そしてそれに必要なものはエンジニアのプロとしてのプライドです(これは一個前のパートで中原さんが捨てろといったプライドではない方のプライドだと思っています)。自分がこの業界の一流のプロフェッショナルかどうかはこの際置いておいて、『曲がりなりにも自分はこれでメシを食っているんだから、これが現時点での自分が書ける最高傑作だ!』という意気込みでコードを書こうとすると、なかなか書けません。そしてどうやったらキレイに書けるかを真剣に調べるようになります。そしてコードを書いても、もっとキレイに書けるんじゃないかと真剣に見直すはずです。こうした過程でプログラミング言語の特製を理解するようになるんじゃないかと思っています。