社会人エンジニア1年目まとめ
前書き
2020年の4月に新卒で入社し、早いことにもう1年経つのでこの1年間やったことや今の心境、これからやっていきたいことをまとめておきます。 職種はWebエンジニアですので、エンジニア視点での内容です。
対象読者
これからベンチャーで社会人やエンジニアになろうと思っている方向けです。大企業に就職予定の方や既にエンジニアの方には向けていません。
地獄の始まり
2020年の4月にWebエンジニアとして教育系のベンチャーに新卒入社した。入社した会社には2019年の8月からインターンとして参加しており、エンジニアの研修をお金をもらいながらやっていた。最高。
研修の内容は基本的な技術書を課題図書として読んだり、Rails Tutorial、『パーフェクトRuby On Rails』、最後の研修としてECサイトを作った。そのほかにも自分でたくさん技術書を読んで勉強した。
2020年の1月が大学の試験期間のため1ヶ月インターンを休み、2月から実務に入ることとなった。ちなみに大学は留年した。
(この章の名前がパッと頭に浮かびインパクトがあって面白かったのでそのまま章の名前としたが、別に地獄というものではない。かといって天国というわけでもない。)
1年間やったことまとめ
2020年2月〜2020年8月
- 基本的なRailsMVCアプリケーションで応募機能を持つランディングページと管理画面を持つプロダクトにアサインされた。
- HTML, CSS, JS, Ruby, Railsの基本が身についた。
- 今でこそ事業的な課題やアプリケーションの改善点に目を向けることができるが、当時の自分はそこまで視野が広くはなく、7月ごろには単純なアプリケーションと実装に正直飽きていた。
- 当時の自分は飽きをはっきりと認識できてなかったが、このままこれを続けてはやばいとは感じていて『情熱プログラマー』とかを読んでどうにか現状を何とかできないか思い悩んでいた。
- 8月にはインフラ研修をした。EC2でのRails Hello Worldから始まりECS、Fargateのデプロイをおこない、hakoとCircleCIを使ったCI/CDの構築までさせてもらった。インフラの入門書やAWSの基本書、BlackBeltなどでもたくさん勉強した。
2020年9月~2020年12月
- 上記の自分の状況を上長が察知し、別のプロジェクトへ移ることになった。
- 社で運営している塾の生徒の学習管理用のFlutterアプリと、Railsを使った講師用の管理画面とモバイル用のAPIという構成のアプリケーションだった。
- 最初のイシューは顔認証による生徒の入退室管理機能だった。とても大変だったがとても楽しかった。ちなみにAWSのRekognitionを使って実装した。あいつの精度はすごい。
- そのプロジェクトでは会社の先輩に上長兼メンターとして面倒をみていただいたのだが、設計の考え方からユーザー視点でのUI/UXへのこだわり、コードの綺麗さ、仕事への姿勢などを叩き込んでいただいた。今でもそれらは役に立っており、頭が上がらない。
2021年1月〜2021年3月半ば
- 上記のプロジェクトのRailsによる管理画面とAPIを自分は担当していたが、それだと自分ができる範囲が狭いよねということでモバイルアプリの実装もすることになった。強制されたわけではなく、自分も納得してモバイルアプリの世界に飛び込んだ。
- 最初の1ヶ月はFlutterの研修をした。DartはRubyと比べるとシンプルな言語(シンプルすぎる!)だし、2020年にRubyをめちゃくちゃ勉強していたのでオブジェクト指向には慣れていたということもあり割とすんなり基本を習得できた。また、Reactも触っていたことがあったのでコンポーネントベースで宣言的UIといった特徴を持つFlutterも割とスルッと習得できた。
- ただ、モバイル特有のライフサイクルや状態管理、エラーハンドリング、マテリアルデザインやHIGに沿ったUI/UX、などは慣れない部分が多く現在でもまだまだ修行中。
- Webエンジニアとしてキャリアをスタートさせたのでモバイルアプリの世界に入ることに最初は抵抗があった。モバイルに対する強い思いもなかったからだ。そう思っていたところ当時のCTOに、幅が広がるし、やってみて好きになるということもある、という風なことを言われ飛び込んでみた。
- 結果としては正解だった。RailsのMVCを離れたことで、設計について以前と比べ物にならないくらい考えるようになった。また、自分はWebやモバイルといった強いこだわりはなく、モノづくりが好きなんだということも実感できた。
2021年3月下旬〜2021年7月 ←イマココ
- 上記のプロジェクトが一旦開発停止となり、別のモバイルのプロジェクトに移ることになった。そのプロジェクトではAndroid/iOSの両プラットフォームで開発しており、自分はAndroid/Kotlinの研修をまずはおこなうことになった。Kotlinは最高の言語だった。
- 4月末で研修が終わり、5月はライブラリのアップデートやRxJavaからCoroutineへの書き換えなど裏側の開発関連の細かなイシューをこなしていた。
- しかし、6月に入り事業戦略や現状の開発体制などの理由から既存のアプリに大きな機能を追加することに加え、Flutterで書き換えることとなった。新卒2年目でありながらリニューアルの開発担当を任せていただくことになり、現在自分1人でゴリゴリ書き換え中である。
1年間総括
社会人は楽しくもありしんどくもある。他人から評価されたり、目標を設定して頑張らないといけなかったり、頑張りが認められなかったり、締め切りの中で大量のタスクを相手にしたりと、つらいことはたくさんあるが、頑張りが認められたり、努力したことが褒められたり、給料が増えたり、うまいものが食えたりとそれなりに良いこともある。
エンジニアとしてはプロジェクトを色々と移り、触る言語やフレームワーク、Webからモバイルというプラットフォームの変化もあったが、大きくモチベーションを落とすことなく技術の勉強を続けることができた。上の方でも書いたが、何よりもモノづくりが好きという思いがあったからだと思う。もっと技術力を伸ばして、もっと良いものが作れるようにもっと勉強しようと思う。
今年頑張りたいこと
思考の整理を兼ねて最近考えていることも書く。
会社の技術顧問の方に、技術は手段でありそれを使って現実に変えていく力が技術力の根幹だという話をされた。Twitterでもたまにエンジニアも事業と技術どちらも考えられないといけない、みたいな話題がある。頭では理解できるんだが、自分の未熟ゆえなのかスッと腑に落ちてこない。
そもそも自分は技術力がまだまだ足りていないし、まだまだ技術を深めて広げていきたい。そういった技術に対する思いがある中で事業の実現と言われていることへのギャップに違和感があるのかもしれない。もちろん事業がないと技術の使いどころはなく、事業が重要であることはわかっているが、やっぱり今の自分は技術をとにかく伸ばしたい。ゆくゆくは事業規模が大きくて、複雑な技術的課題に対応できる技術力を身につけたいし、実際に対応してみたい。
そういった事業の実現という視点があることを少し考えつつも、今年1年は技術を伸ばすことに打ち込みたい。具体的にはモバイルと設計をとことんやりたい。
とまあ、思考の整理も兼ねて書き出したが今年1年も頑張ります。
(おまけ)ベンチャーの良いところ
一応、ベンチャーにこれから入る方向けに書いているのでベンチャーの良いところを書いておきます。
-
頑張っていればいろんなことを経験させてもらえる
- 頑張っていればという条件付きですが、自分の場合はRailsを中心にフロントエンド、バックエンド、API、インフラ、さらにはモバイルまで経験させてもらえました。
- ただ、これを経験させてもらうにはこいつなら任せてもしっかりコミットしてくれるだろうと上長に思ってもらってなくてはいけないので普段から頑張りましょう。
-
同じ志を持っている方が周りに多い
- 自分は教育という分野に思うところがありこの業界を選びましたが、やっぱりベンチャーはそういった思いを持つ人が多いでのでそういった点は居心地が良いです。
ただ、最近思っているのはエンジニアとしてのキャリアの始めは大企業が良いのかなと思ってます。というのも、大企業であれば大きなリソースを持っているので研修や手当も手厚いですし、事業的な課題も大きく複雑で業務は楽しいだろうし、同僚もスキルや向上心の高い方が多く、OSSのコミッターや業界トップの技術顧問の方も在籍しているところもあるでしょうし、給料も良く、転職時のネームバリューも高いからです。プロダクト開発手法や事業戦略なども良いものを学べると思います。ただし、大企業といっても変化に柔軟で革新的なことにも取り組める企業です。
一方で、ベンチャーは変化が早いので短期間でつらいことも楽しいこともいろいろと経験できます。事業も特定の社会課題に特化していることが多く、そういったものに強い思いがある方はベンチャーでも良いのかなと思います。
(おまけ)入社前と後でのベンチャー企業に対するギャップ
今年1年で自社と他社含めていろいろなベンチャーの部分を見てきた。その中で感じたギャップを書く。
ベンチャー社員はみんな学習意欲が高いと思っていたがそんなでもなかった
なんならエンジニアの自分の方がビジネス書を読んでいる気がする。かと言って全員がそうではなく、やっている人はちゃんとやっている。ベンチャーに入れば自然と伸びるわけではなく、目的意識を持って仕事に臨み、日々の学習を続けなければ伸びるものも伸びない。惰性で仕事をするとおわり。
エンジニアはみんな学習意欲が高いと思っていた
学習を続ける人とそうでない人は半々くらいだった。世の中のつよつよエンジニアは日々学習しているので下を見て流されないよう注意。外部の勉強会やイベントに積極的に参加するとつよつよエンジニアに打ちのめされて学習を続けることができます。
エンジニアも電話をとったり来客対応したりする
エンジニアになればずっとコーディングに集中できると思ったが、そんなことはない。正直集中が途切れるのでつらかったが、今では新しい新卒の子が対応してくれるので本当に助かっている。
提案はなんでも通るわけではない
ベンチャーは新しいことをどんどんやっていて、提案もどんどん通るイメージだったがそんなことはなかった。考えれば当たり前だが、その提案による事業的なメリット・デメリット、それらの中長期的な視点などがなければならない。会社のお金は無限にあるわけではない。もしどんな提案でも通るのであれば、提案のスジがめちゃくちゃ良いか、ヤバい会社かのどちらかだと思う。
ビジネスマナーは大事
結構ゆるいイメージを持っていたが、やっぱり大事。ベンチャーと言っても取引先はきっちりした会社も多いし、社内においても会議の準備からレスポンスの早さに至るまでビジネスマナーは必要となる。結局は人に対する思いやりだと思っていて、身近な人や社内の人に対する思いやりを社外の人、そしてプロダクトのユーザーへと広げていくことができるかどうかだと思っている。