トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

5年目エンジニアの考えるエンジニアとして"圧倒的成長"する方法

始めに

皆様、こんにちは!
Toretaのサーバサイドエンジニア兼佐久間まゆちゃんのプロデューサーの@hiroki_tanakaです。
この記事はトレタ Advent Calendar 2019の11日目の記事です。
他の方がテクニカルな記事を書いている中、私は"想い"を投稿します。

自己紹介

  • 社会人歴:5年目
  • 新卒で独立系SIerに4年間在籍。ITコンサルタントとして設計〜リリースまでの一気通貫PJに従事し慌ただしい日々を過ごす。
  • 2019/11/1よりToretaにサーバサイドエンジニアとしてJoin。
  • 大手企業の基幹系システム構築からWeb系自社プロダクト開発に変化し、全てが新鮮で色々戸惑いながらも日々邁進中。
  • Ruby歴:1年半・Java歴:2年・SQL歴:4年。

記事の目的

新人エンジニア Advent Calendar 2016文系出身の2年目エンジニアが『情熱プログラマー』を読んで新人に伝えたいことという記事を投稿したのですが、3年ぶりの続編です。
2019年は人生初の転職もあり自分のエンジニアとしてのキャリアを見つめ直したことや、久々に『情熱プログラマー』を読んだ時の3年前との感じ方の変化からエンジニアとしての成長という観点で語っていこうと思います。
(他のエンジニアの方の役に少しでも立てれば、とても嬉しいです。)
タイトルの"圧倒的成長"は一昔前のバズワードを使ってみたかっただけです。

情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方

  • 作者:Chad Fowler
  • 出版社/メーカー: オーム社
  • 発売日: 2010/02/26
  • メディア: 単行本(ソフトカバー)

1. スペシャリストになろう

ほかに何も知らないことがスペシャリストだって勘違いしているんじゃないか
何かのスペシャリストであるということを、単にほかのことを知らないという意味で使っている人が多すぎる。その技術的な知識には深みがないんだ。
スペシャリストは他に何も知らないことの言い訳ではないんだ。

自称「Javaエンジニア」だった私にはとても刺さりました。
Rubyを1年半・Javaを2年書いていますが、じゃあ、「何故、Rubyプログラムは動くのか?」や「Javaのコンパイルの仕組みは?」と聞かれたら、私は答えられません。
そもそもプログラミング言語やOSという普段当たり前に使用しているアプリケーション実装の下位の部分を詳細に理解しようとしたことがありませんでした。
1~2年目は目の前のアプリケーションをプログラミング言語という道具で自分の開発すべき機能を実装するが精一杯でした。
しかし、5年目にも関わらず、その次元に居ては技術的に深みのない自称スペシャリストになってしまいます。
「プログラムは何故動いているのか」というそんな当たり前の質問にまず答えられるようになりたいと思います。
そして、自分が使用しているライブラリやFWといった道具の原理原則や設計思想は説明できるようになって、初めてスペシャリストの第一歩だと思っています。

2. オレ、作文的なのは得意っすよ

文章を書くことが仕事の一部になるとすれば、もっと作文技術を磨いたほうがいい。
たとえプログラマとして優秀であっても、自分自身を言葉で表現できなければ、グローバルに分散したチームではあまり有能な人材とは見なされない。
そもそも母国語で自分の考えを他人にわかりやすく組み立てられないのに、どうしてプログラミング言語ならできるって言える?
アイディアを言葉にして論理的な結論に導く能力は、将来の保守担当者に理解できるように明快な設計とシステム実装を生み出す能力とそれほど違わない。

言葉で自分のしたいことを説明するのはとても難しいですし、私はとても苦手です。口頭ではなく、文章なら尚更です。
なので、私は「プログラムで表現して、動く機能を見せれば良い」と考えていました。
ですが、母国語で自分の考えを他人にわかりやすく組み立てられないのに、どうしてプログラミング言語ならできるって言える?とある通り、 どうして日本語で説明出来ないことがRubyやJava・SQLでなら説明出来るようになるのでしょうか。
(今思えば、謎です…)
また、様々な働き方が増えてきた今、コミュニケーション手段が文章のみという場面も多くなり、トレタでも毎週リモートワークの日を設けています。
(先日は全社員が一週間全てリモートワークのリモートウィークも試験的に行いました。)
チーム全員が別の場所で働いている中で自分が何をしたか、どのように設計したか、チームに何をしてほしいかをしっかり出来る説明できるスキルは技術力と同じくらい重要なスキルだと実感しています。

3. 一番の下手くそでいよう

どんなバンドで演るときも一番下手なプレイヤーでいろ。チームで一番下手くそでいるのは、バンドで一番下手くそでいるのと同じ効果がある。
チームで一番下手くそでいると、どういうわけか自分自身が賢くなるんだ。
自分の生み出すコードや設計が以前よりエレガントになり、難しい問題をますます創造的なソリューションで解決できるようになる。

実は上記の文章に私の言いたいことは全て集約されています。
IT業界は移り変わりの激しい業界なので4〜5年目となるともう会社では中堅でチームを任せられたりマネジメント側に回ったりします。
マネージャーとしてのキャリアを積んでいくならば、それでも良いと思います。 ですが、エンジニアとして技術を深めていくならば、そのタイミングでもう一度自分が一番下手くそな環境に行くのが良いと思います。

私は3~5年目の時に100人規模のPJに所属していたのですが、気づくと私より技術が出来る人は数える程でした。
非常に忙しかったのですが、自分が技術的に優れていると思える&周りからそう思われているので正直、居心地良かったです。
「技術力あってマネジメントも出来るようになってきてるオレ、スゲー」状態でした。
ただ、技術的に成長できたかと言うとNOです。 そうです、技術の自己研鑽を止めてしまっていたのです。
そんな中でわずかに残っていたエンジニア心から自分の技術力を高めていない状況に危機感を覚えました。
(自分のRailsの知識が4.2で止まっていることを自覚した時、本気でまずいと思いました。)

現在はまさに自分が一番下手くそで周りは皆出来る人ばかりなので、正直、会話一つ一つから自分の知識不足を痛感します。
ただ、追いつこうとして2年前に止まったエンジニアとしての成長曲線が再度動き出したことも同時に感じます。
一番下手くそな環境に行ったことは正解でした。

最後に

『情熱プログラマー』の最後に書かれていることがエンジニア生活の全てを表しているのではないか、と3年前に思ったのですが今読んでもやはりそう思います。
これからもクリエイティブで楽しいエンジニアライフを送りたいと思います。
今後は自分が成長するのは勿論ですが、チームとしての成長にも貢献出来るように自分のバリューを発揮していきたいです。
ゆくゆくは自分の技術の腕で皆を引っ張っていけるように。

ソフトフェア開発はやりがいがあって、しかも報われる仕事だ。
芸術活動のようにクリエイティブでありながら、芸術とは違って、具体的で数量化出来る価値を生み出せる。
ソフトウェア開発は楽しい!

© Toreta, Inc.

Powered by Hatena Blog