プログラマに必要な三つの理解
とかいうお題目を聞くことが稀にありますね。
ちなみに、言語理解、ライブラリ理解、プロジェクト理解の三つだったかしら。
現役プログラマとして、ライブラリ理解ってなんだよと思う。
ライブラリに対して持つものと言えば理解というより知識だろうと。
ライブラリの中身理解してもSDKのバージョンによっては挙動変わったりするだろうがと。
いやまあ、いいんですけどね。
単に三つとも共通の言葉で括りたかっただけだろうから。
そもそもこの三つで合ってたかどうかもうろ覚えですし。
実際問題プログラマやってて必要なものっていうと……、
・コミュニケーション能力
・管理能力
・検索能力
この三つだと思う。
ぶっちゃけ言語に対する理解なんて業務やってりゃ嫌でも深まりますし。
ライブラリに対する知識もそうですし。
経験を経験または知識として蓄積できてるなら、ですが。
それとそもそもプロジェクトに対する理解が足りないなら帰れよという話になってきますし。
いやまあ、理解の方で挙げた三つも必要は必要なんですけどね。
太平洋のど真ん中で方位磁針ぶっ壊れたような遭難系プロジェクトって結構あるのは確かですし。
そういう場合に必要なのってどうやって漂着地点を決めるかですけど、そこでなら確かにプロジェクトに対する理解って重要です。
まあ漂着地点決めるまでに一番必要なのってコミュ力なんですけどね。
現状洗い出すにしてもそこからの落とし所決める話し合いするにしても予算なりなんなり都合付けるにしても。
それ以前にそんな大変なことになる前にしっかり舵取りできてればそもそも遭難することもなかっただろうよという意味では管理能力が必要ですね。
スケジュールからリスクから人員から何から何まで。
そして管理するにしてもコミュ力が大事になってくるという。
で、ぶっちゃけるなら管理してコミュニケーションだけしててもモノが上がってこないんだから作る力が必要になる。
その作る力って言語に対する理解より、ライブラリの知識より何よりネット上を効率良く検索できる能力が強いという。
正直現役プログラマが口走って良い言葉じゃないとは思うんですけど、わりと事実です。
あ、あとそういう判例って英語で書かれてることが多いんで英語力(読解力の方)が必要になる場合もあるか。
とまあ、とりあえず現役プログラマにどうこう言っても仕方ないだろうからプログラマ志望とかそういう人向けに『これだけは理解してから目指すべき』というのを挙げるとするなら……。
職業としてのプログラマって年齢が上がると共に求められるものが変わってきます。
まずリーダー的なことを求められますし、次に管理。
その後は営業とかそういうのを求められ始めます。
成果によっては、とか、企業の規模と立ち位置によっては経営的な部分も入る場合がありますね。
それは第一に理解しておくべき。
それが嫌なら誰よりも技術力が高くないと話にならない。
その次に、長々書いたようにプログラマって職は他の職種よりコミュニケーションを求められます。
というか、コミュ力が低いプログラマの場合高い確率で炎上プロジェクトにしかアサインされないと思っておいた方が良いです。
炎上を回避したいならコミュニケーションを取るべきです。
上手くアラートを上げられれば炎上するにしても『マシ』な燃え方をしますし、より上手くコミュニケーションを図れるならそもそも燃やさずに済むことが多いです。
最後に一番重要なこととして、プログラマとしていろんなことができるようになればなるほど、自分が作りたいプログラムというのを仕事上で作ることはできなくなっていきます。
というか、コーディング自体できなくなるかもしれない。
そういう職種だということをまず理解すべきでしょう。