プログラマーSEが『成長』するために必要な条件
成長について、いろいろな説があります。
- 一つの仕事を長く続けた方が成長できる
- 興味のある仕事をやったほうがモチベーションが湧いて成長できる
- 現在の自分よりちょっと上のレベルの仕事をする、少し背伸びが必要な仕事をするといい
それぞれ正しいと思いますが、これらを総合して『成長』するために必要な条件の本質とは何かを考えてみます。
Contents
戦略1. 興味がある仕事をやる
興味がないことは頭に入ってこないし、自ら学ぼうというモチベーションもわきません。興味がある仕事をすべきであるのは間違いないでしょう。
ここで注意すべきことは、
「はじめは興味があったんだけど、やってるうちに興味がなくなってきた」
ということが起こり得るということです。興味がなくなったら、別の仕事に移ることが重要です。
私の場合、10年間ずっと業務システム開発の仕事をしていました。
当初はJava、オブジェクト指向、アーキテクチャ設計などに興味を持って意欲的に取り組んでいましたが、数年やったら大体のことがわかってきたんです。その段階でさらにもう一段階深いレベルの興味を持てればよかったのですが、そうはなりませんでした。
段々と「学ぶことがないな、ほとんどわかってしまった。新しい技術も出てこないなぁ」と感じるようになっていました。これは「学ぶことがなくなった」のではなく、正しくは「興味がなくなっていた」のです。
「学ぶことがない」のではなく「興味がない」
技術・方法論は常に進歩していくので、学ぶことは常に合ったはずですが、興味がなくなっていたため、新しく出てきた技術や方法論に目が向かなくなっていたんです。その結果「新しい技術が出てこないなぁ」と感じていたわけです。
実際エンタープライズJavaの技術革新は遅く、高階関数の導入がC#に比べてずっと遅れたりもしましたが、それでも興味があれば、学ぶべきものは見つかったはずです。
問題は自分側なんです。対象に興味があるかどうかなんです。
ですから、
- 仕事に興味がなくなっていないか?
- 今自分が興味あるものは何か?
を常に問いかけましょう。
戦略2. 一つの仕事を長く続ける
「興味がある仕事をする」と真逆に感じられますが、一つのことに長く興味を持てれば、この戦略と両立できます。必ずしも両立しなきゃいけないわけではないですけどね。
一つの仕事を長く続けるメリットは、いろいろな役割を経験できることです。
はじめWebに興味が湧いて1年やったら飽きて、次にスマホアプリの開発に参加してまた1年経ったら飽きて、次はビックデータやって…という仕事の仕方をしていくと、やってる内容は変わっても役割は同じになりがちです。
プログラムを実装するという役割です。設計だったり、サービスの企画、運用などシステム開発には様々な仕事がありますが、短期で仕事を切り替えていくといつも同じ役割しか経験できません。
もちろん、プログラムの実装は価値ある仕事ですが、様々な役割を経験することにも価値があります。
一つのプロジェクトに長く関わっていくと、はじめはプログラムの実装をしていたのが、「システムの仕様や要件もよく理解できただろうから、追加機能の設計や要件定義もやってほしい」と言われます。
さらに続けていくと、その分野の業務知識・システム化ノウハウが身につき「関連する新たなシステムの企画策定にも参加してください」というオファーをもらうようになります。
いわゆる上流工程です。一つのプロジェクトに長くいるほど上流工程に関わっていくことになります。
私のキャリアアップ経験談
私の場合、2社目に入った会社に6年半勤めたのですが、その間ずっと同じ顧客のシステムを担当していました。
はじめは一機能の実装を担当していましたが、そこからフレームワークや共通コンポーネントの開発を任されるようになり、その後、要件定義・設計などの上流工程をやるようになって、最終的には企画やチームリーダーも経験しました。
6年半同じ仕事をしていると、このようなキャリアップが必然的に起きると思います。ただ、これが良いこととは限りません。
キャリアアップにはなりましたが、この期間、私は技術的な興味を失っていたからです。技術的スキルの伸びは6年半の内はじめの数年だけだったのだと思います。
とはいえ、いろいろな役割を経験できたのはキャリア的に大きなプラスです。
いつでも興味のある仕事をすべきということでもなく、ある期間は一つの仕事を続けていろいろな役割を経験するというのも良い選択です。
戦略2も実は興味のある仕事をやっていると考えることもできます。
「技術的興味はないけれど、様々な役割の仕事をすることに興味がある」ということですからね。
戦略3. 少し背伸びが必要な仕事をする
いつもかんたんにできる仕事ばかりやってても成長できない、かといって、自分のレベルを大きく超えた仕事は手も足も出ない、そこで、すこし背伸びすればできるような仕事がいいという話です。
たしかにその通りだとは思うのですが、私の場合、いつもどの仕事でも、「今の自分だからできる集大成の仕事だな」と感じます。
「あの時学んだあれを今回活かせて、なんとかうまく仕事できたな」といつも感じます。自分の成長に合わせてタイミングよく相応の仕事が来ているわけではなく、解釈が逆なんだと思います。
仕事とは常に自分が今まで学んだことを活かすものだから、結果的にいつも集大成のように感じるんです。
ですから、「今の自分がちょっと背伸びしてやっとできるくらいの仕事が来るようにキャリア設計をしたい」などと考える必要はなくて、どんな仕事も今まで学んだことを活かして取り組めば、前よりも高度な仕事をすることになります。
いつでも仕事は自分の集大成
同じようなシステムを開発する場合にも、以前学んだことを活かして取り組めば、前より高度な仕事となります。
どんなレベルの仕事をするか自体を意識しなくても、自分が今まで学んだことを活かすという姿勢で取り組めばいいだけです。
これは戦略1とも常に両立できます。仕事の分野を変えたとしても、これまでに学んだことは活かせます。
「業務システム開発からゲーム開発に移ったら、学んだことなんて活かせないじゃん?」って思われたかもしれませんが、そんなことはありません。
業務システム開発で、たくさんコードを読み、書き、問題解決をしてきたことは、ゲーム開発でも活かせます。
どの分野でもソフトウェア開発の本質は同じです。
バグを修正する場合、バグの原因を特定するためにソースコードを読んだり、ログを仕込んだり、ステップ実行をしたりするのは業務システムでもゲーム開発でも同じようにやります。
異分野に移ると知識は初心者に戻りますが、それまでの経験は必ず活かせる部分があります。それに異分野に挑戦することで初心に戻って新鮮で謙虚な気持ちを取り戻せます。
この仕事をやってみたいかを意識しよう
総合すると、仕事の内容に興味が長く持てて、様々な役割を経験し、学んだことを活かす、そんな仕事ができたら理想なわけですが、仕事とはめぐりあわせです。
今自分がめぐりあった仕事は「技術的興味はあるけど、短期間で飽きるもの」だったり「長く続けられそうだけど技術的には面白くないもの」だったりするかもしれません。
ですから、自分が「何を選択するか?」です。
今の仕事を長く続けるか、あるいは別の仕事をするか、すべては自分の選択です。
その時に重要なのは「自分の気持ち」です。これは技術的興味でやりたいってだけでなく、キャリアとしてやりたいでもいいんです。
「この仕事をやってみたいか?」これで選べば、間違いなく自分を成長させる仕事になると思います。