見出し画像

ベルリンでエンジニアに就職して半年経って思うこと

日本語での発信を長らく怠っていましたが、ベルリンのスタートアップにバックエンドエンジニアとして就職して早7ヶ月が経ち、こちらでは一般的な半年の試用期間もなんとか切り抜けることができました。

プログラミングを学び始めてからまだ1年半弱、就職してからも約半年ということで、常に必死で学ぶモードが続いていて、一応それが発信がなかなかできなかった理由(or 言い訳)なのですが、久々に頭の整理もかねて、ここ半年で学んだことや気づいたことをまとめてみようかと思います。

はじめて私の文章を読んでくださる方、はじめまして。エンジニアに転身した背景については、こちらに詳しく書いていますのでよかったらどうぞ。

ブートキャンプで学べなかったこと

こちらの記事(参考:プログラミングを1000時間勉強して、ソフトウェアエンジニアになるまでにやったこと)で紹介しましたように、私は去年1000時間ほどプログラミングを勉強してから就活をして、今の職場に就職しました。

それなりにがんばって勉強してから就職したのですが、現場で鍛えられることの方がはるかに多く。就職してから2-3ヶ月はブートキャンプモードで、仕事のあとの脳疲労がハンパなかったです。

ちなみに私のポジションは、バックエンドではあるものの、メインプロダクトのバックエンドエンジニアではなくて、今のところは主に社内のフロントエンドチーム向けに、メインプロダクトやレガシープロダクトのコードを活用しながら新たにAPIを開発するというような仕事をしています。環境はNode.jsでJavascriptです。

今振り返ってみると、新たに学んだこととしてはこんなことでしょうか。

デバッグの方法:
ブートキャンプ中は、ひたすらconsole.logでログを出して、コードの動作を確認していたのですが、マイクロサービス同士でコミュニケーションしながら、大きなコードベースの中でデバッグをする際は、ログだけで問題箇所を見つけるのが非効率な場合も多く。VS Codeのデバッグ機能を大いに活用しながら、特定のマイクロサービスだけをデバッグモードで動かして確認するということをたくさんやりました。

コードが大きいと、どこが問題を起こしているのかを見つけることが最初はすごく大変で。コードの全体像とそれぞれの「部品」同士がどうやって結びついているかをできるだけ詳細に理解するように努めることと、デバッグ機能を活用することで改善していきました。

非同期関数の処理:
非同期関数を使って関数を作るときにつまづくことも多かったです。mapで新たに配列を作る過程で非同期関数を呼ばなければいけないときとか。ブートキャンプでもPromiseの概念やasync/awaitの使い方は学んだのですが、現場で直面した問題に対応できるレベルではありませんでした。

テストの重要性:
コードが長くなるにつれて、テストの重要性も実感するようになりました。良いユニットテストをベースに、インテグレーションテスト、ファンクショナルテストをあらゆるケースをしっかりカバーする形で書いておけば、後々の開発での苦労が減るというのは、現場で働くまで知らなかったことです。

あとは、一つのマイクロサービスを作るにあたって、最初のプロトタイプの段階ではとにかく動くものを作ればいいものの、その後リリースに向けてコードをどんどん大きくしたときに、どの役割のコードをどのディレクトリに納めるのかといった構造設計はなかなか慣れず、難しいなと思いました。

あと、それぞれのファイルの中で、役割ごとにどうやって関数を切り分けるべきかという問題も同様に難しく。最後のアウトプットが同じだったとしても、メンテナンスのしやすさ、読みやすさ、コラボレーションのしやすさを考えたときに、どういう名前を関数につけて、それぞれの関数もどうやって読みやすいものにするのかという問題はすごく考えさせられました。

ブートキャンプで学んでいたときは、とにかく動くものを作るというのが最優先で、気づけば IF文ばかりが連なるようなコードになりがちだったのですが、命令型・宣言型プログラミングの考え方の違いとか、それぞれをどういうシチュエーションで活用するべきかといったことにまで視点が広がってきたのは割と最近のことです。

職場は最高の学びの場所

主に学んだことなどを書いてみましたが、とにかく感じるのは職場は最高の学びの場所であるということです。社員である私は、学びを得ることではなく価値を提供することに注力するべきなのですが、それでも主に経験の浅いエンジニアというのは現場で学びながら、貢献していくしかなくて。

今の職場では、初学者の集まりであるブートキャンプとは違って、自分よりも経験豊富なエンジニアばかりに囲まれながら仕事をしているので、彼・彼女らから学べることはとても多く、ありがたい環境です。少し成長して、自分の意見を言えるようになる場面も増えてきたのも嬉しいです。

そういえば、私の面接をしてくれた同僚(かつメンター)にどうして私の面接を通してくれたのか、就職後に聞く機会があったのですが「君は、分からないことを分からないといって正直だったから」とのことでした。

分からないことがあるというのは、学びのチャンスがあるという意味でもあるので、分からないというちょっと居心地の悪い状態にも向き合いつつ、これからも学び続けたいなと思います。

それでは、今回はこのへんで。

お読みいただき、ありがとございました!



この記事が気に入ったらサポートをしてみませんか?