未経験からエンジニアになってからの1年半を振り返る
「未経験からエンジニアになった人、ブラック職場で死んでる説」をちらほらTwitterで見るので、生きてる印をここに刻みます。
エンジニアになるまで
こちらをご覧ください。
何をしてたか
WEBシステムの新規開発を主にやってました。と言ってもto Cとかto Bではなく社内向けのシステムなのであまりイメージできないかもしれないですが、例えばSlack Botとか社内ポータルサイトです。基本的には社員の生産性を上げるシステムであれば全て含みます。
程度の差はありますが、1年半で仕事で触った技術はこんな感じです。多分上の説明でイメージするよりかなりモダンな技術だと思いますが、本当に環境に感謝しかないです。
- React
- Node.js
- Next.js
- TypeScript
- Go
- Python
- Docker
- Graph QL
- Neo4j
フロントエンドでもバックエンドでもTypeScriptを書いていたのでJavaScript周りはかなり強くなったと思いますし、一番得意です。何か一つ得意な分野があって、しかもまんべんなく一通り何でもできるという状態を目指していたので、特にJavaScript周辺に力を入れました。
バックエンドではAPIサーバー作ったり、バッチ処理書いたりしました。9割型Node + TypeScriptで書きましたが、残りは少しだけGoで書いたりPythonで書いたりしてました。Goを初めて書いてみてから静的型付けの方が好きになりました。
あとはクラウドインフラ(というかGCP)はだいぶ慣れました。GAE, GCE, GKEあたりを中心に使っていて、内部DNSで名前解決させたり、閉域で通信させたりなど苦手なネットワーク系もチャレンジさせてもらえたので多少は苦手意識が無くなった気がします。それぞれのサービスの特徴も捉えることができたので、最適な組み合わせを考えたりすることができるようになりました。
基本的に環境は全てコンテナだったので、Dockerとはけっこう仲良くなった(というか仲良くならざるをえなかった)と思います。ローカル環境はdocker-composeで管理して、リモートには環境変数が展開されるタイミングを把握しながらシェルスクリプトでビルドしてデプロイする、みたいなことをやってました。Next.jsとかTypeScriptとか使うと一気にややこしくなるしかなり泣かされましたが、ここの快適さが開発速度を左右するのでがんばりました。
シェルスクリプトでデプロイさせる場合もあったんですが、CircleCI使うこともありました。CircleCIの環境でリント、テスト、ビルドをやって全部パスしたらデプロイするような設定を組んでたんですが、どんどんパスしていくのを見るのが楽しくてけっこう好きでした。
コードを書くだけではなく要件定義や設計もやらせてもらいました。といっても社内向けソフトウェアなのできれいに整えられた要件定義書や設計書を用意するわけではないですが、一応何も知らない人が見ても把握できるぐらいの構成図やフローチャートを書いたりしました。図を書くって思ってたよりも重要で、人に説明するときとか頭の中を整理するときとかに図を書けると全然違います。そういったときにドキュメント作成で鍛えられた筋肉が活かせてる気がします。
わりとまんべんなく広範囲の技術に触れられた1年半だったんじゃないかなと思います。本当に良い環境で仕事ができて感謝しかないです。
エンジニアになってみた所感
仕事が問題解決に直結してるので楽しいです。どう課題解決するか考えてる時とか、ロジックを組みながらコードを書いている時とか、ずっと頭の体操をしてる感覚です。例えるなら1日中パズル解いてる感じ?
朝出社してコード書き始めてハッとしたらランチタイムになってて、ご飯食べ終わってコード書き始めてパッと時計見たら退社時間だったりすることもありました。
ただけっこう向き不向きはあると感じていて、ちゃんと言語化はできてないのでいつかまとめたいと思いますが、一つ言えることはググる力が低いとかなり辛いんじゃないかなと思います。わからないことがあったときにググって調べる習慣がないとしょっぱな壁にぶつかる気がします。
それと思ってる以上にコミュニケーションが必要だなってのは感じました。結局ビジネスなので物事を前に進めなきゃいけなくて、そのためには周りの人たちとのコミュニケーションが絶対必要なのは他の仕事と変わらないです。対外的(社外のお客さんとか)なコミュニケーションは少ないですが、少なくとも僕の環境だと対内的なコミュニケーションはかなり多いです。
なのでエンジニアはパソコンの画面見てるだけでいいからコミュ障でもOK!みたいなことは絶対ないです。
辛かったこと
特に最初のころは先輩たちが話してる技術的な内容が理解できず、しかも何がわからないのかがわからないレベルだったので何も聞けなかった状態でした。これがけっこう辛かった。技術レベルが自分より相当上の先輩たちが技術とか設計について話してると全然ついていけず、ポカーンと見てるだけの状態になってたと思います。
でもこれは経験を積んで技術力を底上げしていけば少しずつわかるようになったので、焦りすぎないことも大事かなと今は思います。
あとはやっぱり目の疲労ですね。ずっとPC見てるので慢性的にドライアイ気味ですし、一時的に視力落ちました。いい目薬とかあったら知りたいです。
エンジニアになって後悔した?
まったく後悔したことないです。上でも仕事が問題解決に直結していると書きましたが、本当にそうだと思えるので仕事が楽しいです。だんだんプライベートと仕事の境界が溶けていっていて、仕事の課題を解決する方法とプライベートで好きで勉強してることがかぶることがあるので、今までよりいきいきと仕事できてる気がします。
プライベートで勉強してた?
やってました。僕はフロントエンドが好きなんですが、業務ではどちらかと言うとバックエンドが多いのでプライベートではフロントエンド中心に勉強しようと意識してました。
フロントエンドの中でもReactに興味があったので何か作ってみようと思ったんですが、基礎的な知識が無さすぎてどこから手をつけていいかわからなかったので、まずUdemyでハンズオンをやることにしました。カリキュラムを一回通して一通り理解したところで自分でReactを使ったWEBアプリを作り始めて、リリースすることができました。
/
— 金子幸三郎 (@Kosaburo_Kaneko) 2019年11月24日
WEBアプリをリリースしました🎉
\
複数のSNSプロフィールを一か所で編集できるツールを作りました✨
TwitterとFacebookに対応してます
プライベートで少しずつ作っててやっと世に出せてよかったです!データは一切保存しないので、気軽に使ってみてくださいhttps://t.co/EkcbUsBOM5
あとは本をちょくちょく読んでました。オライリーのJavaScriptやオブジェクト指向に関する本など技術的な領域も読んでましたが、わりとスクラムとかプロジェクトマネジメントとかチーム開発に関わる部分を重点的に読んでたかもしれません。
なぜ未経験エンジニアが消えるか
未経験からエンジニアになった人がSNSからいなくなるというのは事実としてあるとおもいます。実際に僕もTwitterを見ること自体この1年間辞めてました。ですがその理由はブラックな職場に押し込められたとかすでに辞めちゃったとかではありません。
理由はまずシンプルにTwitterよりも技術のキャッチアップに時間を使いたいと思ってました。発信することで得るものがあることはわかってるんですが、ツイートするだけでもいろいろ考えちゃうタイプだし、質の高いアウトプットをするためにも今はまずインプットの期間だと決めてました。
もう一つの理由としてはSNSって基本的にキラキラしたものしか流れてこないので、1から頑張ってる時期に見ちゃうとけっこうメンタルやられます。技術力のすごい人とかめっちゃフォロワー多い人とか見てると「俺何やってんだろ…」ってブルーになるしデメリットの方が大きいと思ったので、見ないようにしてました。でもここは1から何か積み上げている状態の時でも周りとわいわいやりながらできるタイプの人もいると思うので、人によるところはあるかなと思います。
これから
1年半以上エンジニアとして働いてある程度慣れてきたので、少しずつ情報発信やコミュニティに参加する方に力を入れたいと思っています。多少はTwitterをやる余裕もあるかなーと思ってるので、ぜひフォローお願いします。
何か質問などあれば気軽に聞いてください!