年収1,000万円を超えるSEになるためには、プログラマーとしてのキャリアは避けては通れません。ただし、この世界はあくまで最初のステップであり、この先にはまだまだ多くのステップがあります。
優秀なプログラマーは、人よりも早く次のステップへと進んでいきます。プロジェクト内での評価も高いですし、どんどん成長する機会を得られます。
もちろん、優秀になるためにはたくさん勉強していることでしょう。しかし、いくら勉強してもプログラマーの領域からなかなか抜け出せない人がいるのも事実です。
私は、その違いは仕事や学び方に対する意識の差だと考えています。細かく挙げるとキリがないですが、その中でも3つお伝えします。
優秀なプログラマーの意識① 徹底的に自己流を排除する
人のアドバイスは素直に聞く、守破離のステップを守る、とも言われることです。
たとえば、とても忙しいプロジェクトで、あなたがプログラマーとして働いているとします。そこでSEとして活躍している先輩から、「プログラムを書く前にはフローチャートを作成するように」と言われたとしましょう。
世の中の多くの人は、「そんなことをしている時間がない」「自分には当てはまらない」「やる意味が分からない」といって、いつまでもアドバイスに従いません。
それに対して優秀なプログラマーは、すぐに自分の仕事の進め方を変えます。フローチャートを作成し始めます。それは、自己流を排除することの大切さを人より理解しているからです。
少し考えてみれば分かることですが、うまくいっていない方法を守る理由はありません。それに対して、自分の先を行っている先輩や上司がしているアドバイスであれば、従わない理由がありません。彼らに一日でも早く近づくためには、少なくとも彼らと同じやり方を身につける必要があります。複数の人が同じアドバイスをしているのであれば、なおさらです。
そして、うまくいく方法を徹底的に繰り返します。たとえ簡単な作業だとしても、うまくいく手順を守ります。これには2つの意味があります。
1つ目は、間違いを犯さないためです。飛行機のパイロットも、離陸前には大量のチェックリストを1つずつ順番に確認していきます。これは、確認の大切さを理解しているだけでなく、確認漏れを犯さないために作られたルールの一つです。手順が変われば、抜け漏れが発生します。それを避けるために徹底して手順を守ります。
2つ目は、正しくふりかえるためです。たとえば、あなたがカレーを作っているとします。毎回作り方や煮込み時間もバラバラ、何となくで作っています。この場合、おいしいカレーができたとしても、また同じ味を作れるでしょうか?
おそらく難しいでしょう。うまくいっても、いかなくても、すべてまぐれです。これでは、うまくいく方法を見つけることができません。うまくいく方法を見つけるためには、手順を守り、不要なノイズをなくすことが重要になります。
プログラミングについての話で進めましたが、論理的思考やコミュニケーションにとっても、同じことが言えます。徹底的に自己流を排除し、手順を守ってうまくいく方法を常に求め続ける。この姿勢が、優秀さにつながっていることは間違いありません。
論理的思考の手順については、以下の本が非常に参考になります。
この本の手順に沿っていつも施行する練習を繰り返すことで、一定レベルのパフォーマンスを安定して出せるようになるでしょう。
優秀なプログラマーの意識② 失敗の影響を最小限にする
これは、失敗を恐れるということではありません。失敗は歓迎されます。ただし、次に向けて何かしらを改善されるのであれば、という前提はつきますが。
「失敗の影響を最小限にする」というのは、あなたが大きな過ちを犯したときのことを考えると想像しやすいかもしれません。
たとえば、あなた作った製品に重大な欠陥があると分かった場合。まだあなたしか知らない情報ですが、上司に言うと首になるかもしれません。それほど重大な欠陥です。
こういう場合に、あなたならどうしますか?黙ってそのままにしますか?それともすぐさま社内に伝えて対策をしていきますか?
一瞬でも黙っていようかと考えたのであれば、その考え方を改めましょう。それは一瞬の保身であり、誰のためにもなりません。欠陥を隠されたまま時間が経てば経つほど、それによる影響は大きくなっていきます。また、いつかはバレて自分にも大きな影響が降りかかってくることは目に見えています。
これが、失敗の影響が大きくなる例です。優秀なプログラマーは、失敗したことよりもそれによる影響が大きくなることを何としても避けます。このような場合、優秀なプログラマーはすぐに周りに報告します。そして対策方法の案と一緒にプロジェクトの人たちと会話をして、急いで挽回します。そのために誰よりも奔走します。
その結果どうなるのかというと、ほとんどの場合は首にはならず、むしろ評価が上がります。失敗したことではなく、その後の対応によってあなたへの信頼が増すからです。
また、システム開発の世界は大きな失敗をしないことをとても重要視しているということも理由に挙げられます。
システムの中に一つでもバグを埋め込んでしまうと、それが原因で大量の影響が出てしまいます。正しく動いて当然と思われているシステムとして、この価値観はとても大切なものと考えられています。
普段の仕事やプログラミングの進め方でも、失敗の影響を最小限にするために選択をする癖をつけておくこと。これが優秀なプログラマーとして必要な姿勢の一つです。
たとえば、プロジェクトに入ってプログラミングをしている際、完成間近でもっと良いプログラムの書き方が思いついたら、それは実行に移すべきです(もちろん、時間の制約は考慮してください)。プログラムへのコメントに誤りがあれば修正しますし、ルールに従って書いていないプログラムは修正します。たとえ、プログラムの動きとしては問題がなかったとしてもです。そういう細かい積み重ねが、大きな成長につながります。
失敗から学ぶことの大切さをさらに理解したければ、以下の本がおすすめです。
優秀なプログラマーの意識③ 必ず1つは設計に指摘する
プログラマーから早く抜け出せる人がどうして早く抜け出せるのかというと、次のステップで求められる能力を持っていると示しているからです。次のステップとは、SEです。システムの設計をしたり、お客様の要望を聞き出したりするのが仕事です。
プログラマーとして働いている間にお客様と直接対話する場面はなかなかありません。そのため、要望を聞き出す面に関して能力を出せる場面は少ないでしょう。
それに対して、システムの設計に関してあなたの能力が十分であると示すことは多くの場面で可能です。
たとえば、SEから次に作る機能の説明を受けているとき。
説明を受けながら、適切な質問をしたりSEが見落としていた部分をズバリ突く指摘をしたりすると、設計能力があることを示せます。プログラミングの途中でも、設計で足りていない分岐を見つけて上司に相談をしに行くことでも示せます。
優秀なプログラマーは、常にこのような設計目線での思考を持っています。プログラマーをやりつつも設計の練習もやり続けていると言えるかもしれません。
だから、経験を重ねるにつれて設計書の漏れやより良いつくり方を提言できるようになっていき、それが認められてSEとして次のステップを歩むようになります。
常に次のステップを見越して、その力を得るために今の仕事をしているという意識を持ち続けること。これが優秀なプログラマーが持っている意識です。
まとめ
この3つの姿勢を持つ人は、プログラマーに限らずこの業界でどんどんステップアップしていきます。これがプロとして当然の姿勢だと思える方は、そのまま続けていけば良いでしょう。すばらしいことです。
そんなこと考えたこともなかったというものが1つでもある場合は、ぜひ今日から考え方を変えて、次に同じ状況に出くわしたときに、違う行動をとれるように準備していきましょう。
日々の成長には、日々の振り返りと目標設定が欠かせません。昨日の自分を超えるためにも、毎日手を抜かずに自分を変え続けていきましょう。
次は、プログラミングを学び始めるにあたって誰もがぶつかる最初の関門。『プログラミングを勉強する本の選び方』です。