読者です 読者をやめる 読者になる 読者になる

アラタナエンジニアブログ

aratana Engineer's Blog

プログラマになりたいんですが、何が大事なのでしょうか?

こんにちは。
開発チームの川口です。

これまで色々な技術ノウハウのお話で盛り上がっていますが、今回はちょっと趣向を変えて、
プログラマ」って何なの?という部分に触れてみようかと思います。

プログラマ=プログラミングできる人

まぁ、そうですよね。趣味であれなんであれプログラミングできたらプログラマです。
プログラム言語を利用し、自分の作りたいと思ったモノを思った通りに作れたら立派なプログラマです。
そしてプログラミングすることに面白味を感じればプログラマとしてやっていくことができます。




・・・。ものすごく浅い話で終わってしまいますね。このままじゃ。

じゃあ、ちょっと掘り下げます。企業の求める「プログラマ」って何なの?という点にしましょうか。

※ここからは結構偏見もあるかと思うのですが、あたたかい目で見守って下さい。。

プログラマのタイプ
f:id:kawaguchi_toshikazu:20150511083714j:plain
この業界(IT業界だけではありませんが)でかれこれ15年プログラマとして働いてきましたが、
プログラマ」と言ってもタイプが別れている気がします。また企業によって求める人材も違うようです。
細々とした部分はありますが、大きく分けて3タイプに分かれるかと思います。

職人気質プログラマ
  • 既存のシステムを弄る能力に長けている。
  • どちらかというとデバッガ向き。
  • プログラムを書くよりも読み解いていく方を好む。
  • 既存システムの改修等がメインの作業となるため、場合によっては習得する言語も限られたものになってしまいがち。

すみません、偏見です。しかし僕自身はこのタイプです。既存システムにバグを見つけたときに心が躍ります。
老舗の開発会社ではこちらのタイプを希望する企業が多い傾向にあるようです。

研究者気質プログラマ
  • トレンドの技術情報に詳しい。
  • トレンドを追いかけるので様々な言語を習得する。
  • 一からシステムを構築するほうを好む。

若い世代に多い気がしますね、こういうタイプは。IT業界はトレンドがめまぐるしく変わっているのでこちらのタイプを
希望するのではないでしょうか。

天才気質プログラマ
  • ハード系、ソフト系、気持ち悪いくらい知識が豊富。
  • 知識を実践に利用する能力も長けている。
  • 他の分野の事を全く知らないのに、ごく一部の分野だけ異常に長けている。

これは特殊ですね。昔はゲーム業界にいたのですが秒間フレーム数を低スペックのPCでも狂わせない事に異常に熱心で、
コードを追いかけても全くわからない方がいらっしゃいました。神だと思いました。
こちらのケースの方を求める企業は様々です。僕もよくわかりません。


自分がどのタイプなのか?わかりますか?
見分け方は簡単です。やってみて面白いと感じるものが自分の適性です(多々ご意見があるでしょうが…)。
子供時代に得意科目って面白くありませんでしたか?面白いから成績もあがりませんでしたか?
逆に苦手科目って面白くなくて成績があがらなかったことはないでしょうか?
それと同じです。面白いと感じないものに対して能力が果たしてあがるのでしょうか?どれだけ教育を受けてみようが、
「教育を受ける=能力UP」ではありません。面白いと感じるものに対しては能力がグングン上がっていくと思います。
「好きでやる」と「仕方なくやる」では成長スピードが全く違います。
どのタイプが正しいという考えもありません。企業によって欲しがるタイプが違うのですから、自分のタイプにあった
企業を選択すればいいだけです。

最後に一点。
プログラマとして企業で働くには?
f:id:kawaguchi_toshikazu:20150511031930j:plain
どのタイプであるにせよ、プログラマとして永く企業で働くためには重要なことがあります。
要求を理解し、自分の中で反芻し、仕様の大枠を把握し、それに伴う小さなパーツを導き出す能力、そう、設計能力です。

プロダクトマネージャーやシステムエンジニアが設計し、プログラマは設計仕様どおりにプログラミングすればいいのかも
知れませんが、大企業はともかくほとんどの企業はプログラマに設計能力を求めます。大企業であってもプログラマにシス
テムを検証し非現実な実装にならないように意見を求められることもあるでしょう。

設計手法は色々ありますが、これも何が最も良いとは言い切れません。企業の方針もあれば、個人の好みもあります。
僕は「仕様の大枠=木」、「仕様の詳細=枝・葉」と捉えて考えていく方なので、見積段階では枝レベルまで想定し、実際
組み立てる段階で葉を付けていく感じで作業をしています。イメージ的には。
なので、ベースはトップダウン設計で、ところどころにボトムアップ設計を合わせている感じです。

長年プログラマをやっていて思うのですが、ベテランと入社数年のプログラマを比べたときに、プログラミングの技術の差も
ありますが、設計能力に大きな差がある場合が多いです。僕の場合は、前職時から1人で任されることが多かったので勝手に
身についていった気がします。

「聞くよりもやってみること・考えてみること」が大事なのではないでしょうか。

まとめると、

・プログラミングに面白味を感じること
・自分の適性にあった(面白いと感じる)企業を選ぶこと
・設計思想を鍛えること
・自分でやってみるから始めること

以上がプログラマとしてやっていくために大事なことです。