昨日、せっかく更新したのだから久しぶりに連続更新というものをしてみたいと思い、更新。
今回の中身も飲んだくれの戯言のようなものと思って下さい。お酒飲んでないけど(よりたちが悪い)。
お付き合いできる方のみ続きを読んでいって下さい。
お決まりを書いた所で、今日は優秀なプログラマについて考えてみる。
色んなところで、優秀なプログラマになるためにはこういうことが必要だというハックの記事を
目にかける。
ところで、”優秀”なプログラマってなんだろう?そのために、どういうことが必要とされるのだろう?
とふと思い、考えて見ることにしてみました。とりあえず、今回はプログラマという観点について考えたい。つまりは、開発者としての優秀さ。
先日のCommunity Open Dayでのεπιστημη(エピステーメー)さんのセッションの影響を非常に受けていると思うけど、
そこは生暖かい目で見て頂ければ幸いです。
まず、自分の持っている道具の特性を理解することが非常に大事だと思っています
例えば、自分が家を建てる時に、特段の理由もないのにも関わらず、大工の方々が鉋(かんな)をトンカチのように使っている
風景を見たら、どう思いますか?不安になりませんか?
まず利用者は自分の使っている言語がどういうふうにすればどういう結果が帰ってくるのかとか
変数はどういうタイプがあるんだろうとかそういうことは知っている必要があります。
もし、知らない場合は自ら調べて学んでいくことが大事だと思います。
これはCommunity Open Dayでのεπιστημη(エピステーメー)さんのセッションの受け売り。
作って想定した情報(しかも大概はエラーを起こすデータは考えていなかったりする)をクリアすればよしというわけではなく、
今後このプログラムを拡張しやすいようにするであったり、他の人が見てもわかりやすい形にするということこそが肝要というわけです。
リーダブルコードとかで調べるとこれに近いのではないかなと思います。
これは新しいものを作るときにも必要ですし、相手と情報を共有する時にも必要だと思います。
なぜなら最近の流行りの技術は組み合わせやある部分を少しだけ変えたというものが多いためです。だから構成要素に分解をするという力は非常に価値があると思います。
もしかしたら、ZというテクノロジのAという機能とYというテクノロジのBという機能を組み合わせれば新しいものができるかもしれませんが、ZとYというテクノロジ同士で見るとあまり使えないように見えてしまう可能性もあると思います。
これについては専門用語はなるべく使わずに話すという形で私も非常に考えて話しているつもりではいますがなかなか実行できなくてやきもきしているところです。
これは、枯れた技術もいいけど、最新技術の動向を調べて理解することも必要だということです。
なぜなら、その最新技術もいつかは新たな枯れた技術になりえるからです(そうならずに消えてしまう技術も多くありますが……)
枯れた技術になってから動くのではなく、いつも興味を持ってアンテナを貼っておくことが必要だと思います。
コミュニケーションという意味でも大事だし、コミュニティに属するためにはこれは必要だと思います。わからなかったら人に聞くというのはその場でなくてもいい、懇親会でもいいし、ブログのコメントとかでもいいとεπιστημη(エピステーメー)さんがセッションで言ってました。(最後の最後で完全な受け売り)
逆に、発表とかをしたら、金とってない限りなるべくはスライドを上げたり、ブログの記事にしてそれをオープンにするということが相手から尋ねてもらえるためにプラットフォームを作る必要があると思います。
さて、ここまでで自分として優秀なプログラマって最低限ここは抑えてるんじゃないかなというところを書いてみました(私は優秀とは程遠いけど周りの優秀な方を見ていると最低限ここは抑えていると感じました)。
他にも、技術にこだわりを持っているとか、専門性とか色いろあるとは思います。
会社に依存しきって、会社から切られてその時に何の力もなくて呆然とするなんてことの無いようにするために、
自分の名前でしっかりと食べていけるように、
私も日々目標をもって頑張っていきたいと思います。
以上。