エンジニアとして長く楽しく続けていくために大事にしていること
まず最初に、株式会社YNSでは人材を募集しています。
この記事は弊社のアドベントカレンダーの企画の一環として書かれたものになります。何か興味をひかれることがらがありましたら、ぜひご応募してみて下さい。
弊社ではブリッジSEの採用活動も積極的に行っております。ブリッジSEはソフトウェアエンジニアの役割の一つで、複数の言語話者の関係者(弊社では日本語話者の顧客と英語話者のフィリピン人エンジニア)を繋ぐコミュニケーターという解釈が一般的ですが、実のところ業務内容は多岐にわたっており、チームマネジメントやビジネスアナリストとしての役割であったり、顧客折衝を行ったり、テクニカルな部分に踏み込む場合もあり、知っている・できる部分が多いほど問題解決がしやすくなります。
弊社では苦手な領域を補い合うような柔軟な仕組みがありますので、もちろん最初から全部できる必要はありません。業務などを通じて徐々に向上していくために日々一つ一つ積み重ねていきましょう。
さて、エンジニアとして長く、そしてより楽しく仕事に取り組み続けるために私が大事と思っていることについて、特にこれからソフトウェアエンジニアとしてのキャリアをスタートさせようと考えている方や、まだエンジニアとして経験の浅い方に向けて今回は書きたいと思います。
1)何を学ぶ必要があるかを知る
2)学ぶ方法を知る
3)学んだことを実践する
4)やったことのないことにあえて取り組んでみる
5)目的やゴールを知る
6)課題を設定し解決方法を考える
7)本質を見極めて枝葉を捨てる勇気を持つ
1)何を学ぶ必要があるかを知る
エンジニアになりたての頃は学ぶべきことが多く、得てして方向を見失いがちになりますが、例えば仕事上で出てきた聞いたことのないキーワードを調べてみることで、そこから芋づる式に情報が出てくることがあり、そういった日々の活動から学びのきっかけを見つけてみるのもいいと思います。
プログラミングはスクールなどで学習済みの前提として、基本的には広く浅くやるのがおすすめですので、テスト・開発プロセス・カンバン方式・チケット駆動開発・ドキュメンテーション・リレーショナルデータベース・Linux OS・ネットワーク・バージョン管理あたりを押さえておくと仕事がやりやすくなると思います。
2)学ぶ方法を知る
前述しましたようにソフトウェアエンジニアの仕事の領域は幅広く、必要となる知識も様々です。
幅広いことを効率良く吸収していくためには、効率の良い学びが必要になってきます。読書や動画、資格試験、セミナーのような座学で学べるものもあれば、実際に手を動かしたほうがいいものもあります。また、実際に仕事で経験してみないと学べないこともたくさんあります。
教えるには人の4倍勉強しないといけない、と昔の職場の先輩に言われた記憶があります。実際何かを題材にプレゼンをしてみるとわかると思いますが、資料にまとめるためにいろいろ調べて、どういう流れで話すかをイメージしなが書き進めると、自然とそのテーマに関する知識が深まっている、ということがありますので、教えるということを日頃心がけてみるのもいいかもしれません。ブリッジSEはそういう機会を作りやすい職種だと思います。
とある哲学者は「人は自分の知っている以上のことを考えることはできない、人は世界を自分の持っている言葉で切り取る」と言っていました。同じ出来事を経験しても深く理解している人と浅く理解している人とでは捉え方が違ってくるというニュアンスなので、知っていて損をすることはありません。
3)学んだことを実践する
学んだことを活かす機会がありそうであれば積極的に提案してみましょう。知識が実践によって活かされた時にそれが初めて自分自身の血肉に変わります。
ソフトウエア開発の仕事というのはおよそ全て問題解決と言ってもいいだろうと思います。ですので、知識はどんどん活かしましょう。ありきたりのプロジェクトと思っていたものでも、自身のアイデア次第で楽しく、より一層やりがいのあるものに変え、結果的にそれがお客様のためになるようにすることもできます。
4)やったことのないことにあえて取り組んでみる
人は慣れた仕事をやり続けることにある種の心地よさを感じます。ただそれは裏を返すと成長が滞っているということでもありますので、時々全くやったことのないことにあえて取り組んでみましょう。
やったことのないことをやり始めると、人は必ずもがきます。もがく中で学び、徐々に方向を決めながら進むことができるようになります。そこには失敗もあると思いますが、失敗からもたくさんのことを学ぶことができます。失敗によって改善し進む方向を微調整できる人は、物事に対してより柔軟になれます。
そして弊社はそういったチャレンジを歓迎する文化を持っています。
またソフトウェア開発の仕事にはルーチンワークというものがほとんどありません。ルーチンワークがある場合はだいたい自動化してしまいます。ですので私たちが行っているのはいつも初めてやることになります。そういった初めての仕事であっても、現在置かれている状況や利用可能なリソースを踏まえて、持っている知識や経験から正しいと思われる答えを導く、ということを続けていくと何かもっと難しい問題にぶつかった時に瞬発力が出てきます。
なお、弊社では日頃から従業員一人一人のやりたいことや目指したいところにも配慮してプロジェクトへのアサインを心がけております。ただ、これはどの会社や組織でもあることだと思いますが、必ずしも十全に希望が叶うということを保証するものではありません。
もし仮に社内でそういう環境がないと感じたら外に目を向けてみるのもいいと思います。自分でWebサービスを作って運用してみるでも、プロボノとしてボランティア活動をしてみるでもいいと思います。職場とは異なる役割で社会に関わってみることで様々な発見があると思います。そしてその経験を職場に持ち帰ってみてください、きっとそれは会社に多様性をもたらし、会社やあなた自身の価値を上げることにもつながると思います。
5)目的やゴールを知る
どんな仕事にも必ず目的やゴールがあり、どのような意思決定にも必ず理由があります。一人だけで行う仕事というのはあまりありませんので、場合によっては目的やゴールが見えづらくなることもあります。もしそう感じたら周りの人に臆せず聞いてみましょう。そしてそれをまだ知らない人達に伝えてみましょう。そうすることでチームは自分たちの仕事の価値を知り、真っ直ぐではないかもしれませんが、一つのゴールに向かって進むことができるようになります。
6)課題を設定し解決方法を考える
仕事をやっているとうまくいかないと感じることがあります。そういう時は少し立ち止まってどこが問題なのかを考えてみましょう。そして課題が設定できたら解決方法を考えて実行してみましょう。解決方法の妥当性を先輩に聞いてみるのもいいと思います。
また、プロジェクトのメンバーの声に耳を傾けてみるのもいいかもしれません。仕事をやっていれば何か悩みや問題の1つや2つは必ずありますので、そういったところから課題を見つけるのも一つの方法です。
人の仕事の本質は課題の設定と解決方法を考えることにあると思っていまして、それは様々な情報や知識、経験から導かれるものになります。日頃からタイムリーに課題設定を行い、できるだけ問題解決を行うように心がけていると、それが自然とできるようになってくると思います。
7)本質を見極めて枝葉を捨てる勇気を持つ
精神論か、と思われた方もいるかもしれませんが、事実としてテクノロジーの進歩は思っている以上に速く、去年まで当たり前に使えていた技術がだんだん役に立たなくなってしまう、ということは往々にして起こり得ます。今後、テクノロジーの進歩はより加速していくことでしょう。
私の原体験はもうかれこれ10年以上も前に遡りますが、当時私はFlashアプリケーションのプログラマでした。その当時はこの技術を深めていけば長く食べていけるだろう、と高をくくっていたのですが、その後しばらくしてメジャーなモバイルOSやWebブラウザがFlashのサポートをやめてしまい、Flashはあえなくオワコンになってしまいました。
昨今では例えばAWSやAzure、GCPなどのクラウドの隆盛によって社内のネットワークを組む必要もなくなってきていますし、シンプルなシステムであればLinuxのコマンドを叩く機会も減ってきています。
また、近年盛り上がってきているノーコード開発ではプログラムを書かなくても簡単にアプリケーションが作れるようになってきていて、作れる幅も日進月歩で広がってきていたり、AIを利用したアプリケーションなども小難しい数学を知らなくてもドラッグ&ドロップで作れるようになってきています。
こうしたテクノロジーの進歩に抗うことはなかなか難しいですので、時にはこれまでに獲得したスキルや役割を捨てて、新しいことに取り組む必要が出てきます。
それと同時に自分自身が持っている知識やスキルの本質を見極めて、どれを残し磨いていくかを取捨選択する必要もあります。
せっかく獲得したものを捨てるというのはやや名残惜しいことではありますが、成長のためのきっかけと前向きに捉えていただけたらと思います。
そして、そのような時にまた「1)何を学ぶ必要があるかを知る」に戻ってみてください。何か次の一手が見えてくるかもしれません。
最後に、この記事を読んでくれているあなたとご縁ができたらこれ以上の幸せはありませんが、仮にご縁がなかったしても多少なりとも参考になれば幸いです。
では、素敵なエンジニアライフを!
この記事が気に入ったらサポートをしてみませんか?