プログラマーのすごい人っていうと、テレビドラマで見る「ハッカー」のようなイメージが強いのではないかと思います。
かれこれ10年近くプログラムに関わってきていますが、ドラマチックなハッカーに出会ったことはありません(笑)
それでも、実際の現場で「この人ヤバッ!頭の中どうなってるんだろ?」と思うようなすごい先輩にたくさん出会ってきましたので、その一部を紹介します。
プログラマーのすごい人ってどんな人?
すごいプログラマーって、どういう人を言うのだろうか。一般的には論理的思考に長けている人ということだと思います。プログラムって処理の順序を組み立てる作業ですからね。
ではそれができる人というのはどういう人かを私なりに感じたのは、圧倒的に経験豊富な人だと思いました。いわゆる匠の技に近いものもあるように思います。
中には天才的に頭がヤバイ人(いい意味で)もいましたが、そういった地頭が良い人はもちろんのこと、多くの経験によって鍛えられた引き出しの多さにすごさを感じさせられる方が多かったです。
例えばこういう方
- コーディングが早い、かつコードが計算されていて美しい
- バグの特定がとにかく早い
- 後輩への教え方、ヒントの出し方がうまい
- チームワークがうまい
では、順番に私が出会った中で、この人すごいなと思ったプログラマーのタイプを紹介します。天才型で真似できないと思った方から、努力や思考において尊敬でき真似したいと思える方、様々です。
体験談を交えて紹介します♪
コーディングが早い、かつコードが美しい
やっぱり、プログラムを書くのが早い人はすごいですね。単純にタイピングが早いということもありますが、それよりもキーボードのショートカット詳しすぎ(笑)
ショートカットを駆使して爆速でコードが出来上がっていく様子をみて、すごい人だなと思ったことがありました。
しかし、ただ早いだけではダメで、すごい人はコードもきれいです。
プログラムの世界で美しいコードというのは、色々なポイントがありますが、結局のところシンプルで読みやすいかということだと思います。
自分なりの成功体験を多く積んできていないと、なかなか難しい技かなと思います。
バグの特定がとにかく早い
失礼ながら天才型というタイプではありませんでしたが、努力が確実に実っていたタイプの方のお話です。
プログラマが不具合の調査を行う時、原因を予測し色々なことを試しながら問題を特定するという手順を使うことがあります。
この試すという点において、数え切れないほどの引き出しを持っていた先輩がいました。
1つの不具合という事実から、正確な情報と不確かな情報など様々に報告される情報から分析し、これを試したら原因に近づけるのでは?という方法を出すのが本当に上手な方でした。
何度も修羅場を乗り越えてきた成果というか、問題解決までの道のりに無駄のない方でとても尊敬できる先輩でした。
後輩への教え方、ヒントの出し方がうまい
頼りにさせていただいた先輩の話です。その方は有名大学出身でいわゆる天才タイプだったと思うのですが、アドバイスが本当に上手でした。
実は質問をしたときに、答えを教えてもらったことはありません!質問の答えとしては、検索用のキーワードと、調べて良い時間を提示されます。
で、そのキーワードだけで解決できたこともありますが、時間内に分からなかったときもおよそ私がどの程度理解できて、次何をしたら解決に近づけるかまた次のヒントを与えてくれました。
そういったやりとりで、問題を解決するだけでなく、問題に対する考え方や調べ方なども学ばせていただくことができ、徐々に独りで解決することもできるようになってきました。
こういったアドバイスって、自身でかなり広い全体像が見えていないと他人にヒントなど与えられませんから、こういう先輩になりたいと思ったものです。
プログラム全体の設計がうまい
システム設計が上手だった先輩の話です。
中規模以上のシステムを構築したり運用するときは、1人のエンジニアが全部やるということはまずないと思います。何人かのチームで一緒に携わっていくことが多いのが一般的ではないでしょうか。
このとき、プログラムの骨格というか根っこの仕組みづくりが上手な先輩がいて、色んな人が同じシステムを開発する上で起こるバグをできるだけ抑える仕組みを作りました。
プログラムに精通してるメンバーもいれば、当時の私のようにまだ経験数ヶ月のひよこメンバーもいます。経験の浅い新人はベテランからみたらありえないこと平気でさらっとやって壊します(笑)
ただ、そういうトラブルを未然に防ぐ仕組みというか、馬鹿なことをしてもシステム全体に影響しにくい基礎を作ったというイメージです。
これをやり遂げるには、未来が見えてるの??と思えるような先を見通す想像力や経験値が必要で、かつ色んな人が開発するという多種性までも考慮できないとできないことで、すごく難しい仕事だと思います。
この先輩のように広い視野を持ってチームに貢献できるプログラマーを目指したいと思ったものです。
真似できないと思ったすごい人
天才ってこういう人を言うのかなと思った人たちです。脳の作り的に真似できそうにないと思ってしまった人の例です(笑)
システム全体が頭の中にある人
以前関わっていたシステムに不具合が生じ、その仕様に詳しい先輩に不具合の状況を相談したことがありました。
すると、すぐに〇〇というファイルの〇〇行目を確認してほしいと言われ、その通りに確認したらまさにその付近に問題の原因がありました。
なんでもその先輩、システムのプログラム全体が全て頭の中に入っているとかで、不具合の傾向からかなり正確に原因を予測できる人でした。
大規模といってもいいシステムだったので、真相を疑いつつも何度かその実績を目の当たりにし、これは真似できないと思いました。
同僚の先輩も、この人のアドバイスは参考にならない(思考回路が違うという意味で)と言ってたくらいでした。
私の場合、自分で書いたプログラムも結構な確率でなぜそのように書いたかなど当時の思考は覚えていないです…とても真似できない(笑)
「プログラムが全部頭の中に入っている」ってめっちゃかっこよくないですか!?
脳内デバッグができる人
上の方と似てますが、脳内デバッグ、つまり不具合の起きた原因を頭の中でプログラムの処理を走らせ、かなり正確に原因を言い当てることができる先輩がいました。
その先輩は、私が書いてバグが発生していたシステムに対して、その状況から考察し「この処理をするときにこういうことしていないか」のように、プログラムを見ていないのに問題を言い当ててくる人でした・・・
そのシステムはSQLというデータベースに絡むプログラムが混ざったり、処理過程で繰り返し処理や分岐が何度も登場するかなり複雑なシステムだったのですが。
先輩は数秒目をつぶってブツブツ言いながら大体言い当ててくるんです・・・
初心者や多くのプログラマーは、ステップ実行といった開発環境の機能を使って、プログラムを1行1行を実行しながら問題を特定していくという方法を取るかと思います。
そういうのを頭の中だけでおよそやってしまえる先輩に悔しさすら覚えたくらいです。
せめて言い当てられないバグを作ってやりたいと思った日々でした(笑)
まとめ
私がこれまでに出会ったプログラマーのすごい人を紹介してみました。
「いやいや、プログラマーならそのくらい当然よ!」なんて思われた方はすみません。私のレベルの問題ですね💦
ただ、失礼ながらあまりすごいと思えないプログラマーでも、各々の経験してきたことは少なからずスキルになっていることを感じさせられ、尊敬できる先輩に多く出会うことができました。
プログラマー=ハッカーみたいなイメージがなくもないですが、ドラマのようなハッカーでなくてもすごい人はたくさんいて、多くが圧倒的な経験を積んでいるというのが現場のリアルではないかなと思います。
私は凡人側ですが、少しでも経験を積んで役に立っていきたいものです。(´・ω・`)