見出し画像

ブートキャンプで教わらないこと: ベルリンでソフトウェアエンジニアになろうと思ってからの3年間を振り返る<2>

こんにちは。ベルリン在住エンジニアの佐藤ゆきです。

今回は、前回のつづきになりますが、半年強の自己学習&ブートキャンプでの準備を経て、ジュニアバックエンドエンジニアとして就職をしたわたしが現場でぶちあたった壁について、書きたいと思います。
前回の記事:

前回の記事では、ブートキャンプで勉強しても「現場で通用するレベルに達することができるかといったらとても難しい」と書きましたが、改めて考えてみると「現場」にもよるなと思いました。就職先で課されるタスクによっては、割とスムーズに仕事を始められるのかもしれません。

わたしの場合は、実際に就職した会社ではかなり最初は苦戦させられました。その会社では、フロントエンドチームがプロダクトを作りやすいように、メインのバックエンドのデータを元にRest APIをつくるという、社内のフロントエンドチーム向けにバックエンドサービスをつくるチームに入りました。当初、何が難しかったかというと、複数のマイクロサービスで構成するシステムを作っていたのですが、そういったアーキテクチャ自体が初見であり、データの流れとか、それぞれのマイクロサービス同士がどうつながっているのかといったことを理解するのに時間がかかりました。

改めて、ブートキャンプで学んだことを振り返ってみると、それは業界で人気のツールやフレームワーク、データベースを使えるようになって、最終的にフルスタックのアプリケーションを作れるようになるというものです。
言語はJS、フロントエンドはReact、バックエンドはNode.js、ExpressとMongoDBでサーバーを作るというもの。それらを身につけるのも大変だったわけですが、実際に就職してみると自分の知識の浅さも痛感することになりました。

ブートキャンプでは、学ぶ対象のフレームワークやデータベースがあらかじめ決められていて、ただそれらの使い方とおおまかな仕組みを学んで使えるようになることを目指します。ですが、どうしてそのデータベース、フレームワークを使うべきなのかということまでは突っ込んで学びません。なぜ数々あるデータベースの中でもMongoDBを使うのか、SQLではないのか。MongoDBのようなドキュメントベースのデータベースとSQLの違いはなんなのか、どういうケースにはどっちを使うべきなのか。フレームワークや他のツールについても同様で、「なぜそれを使うのか」といった判断軸まで考えることはありません。

ブートキャンプ中は課されたフレームワークやツールを使いこなせるようになるのに必死で、そういった大きな視点でエンジニアリングについて考えることはありませんでした。付け加えれば、ローレベルのことも教わりません。JavaScriptがsingle threadedであるというのはどういう意味なのか、コールスタックで何が起きているのか、イベントループとは何なのかといった、言語特有の実行モデルについても詳しく触れられることはありません。

短い期間で学べることに限界があるので、それは仕方がないことだと思いますが、長期的にエンジニアを目指すにあたって思考を深めるべきポイント、学ぶべきことにまで触れられてもよかったのではないかとも思います。

新しいアプリケーションを開発するにあたって、それをどう設計するべきなのか、どのツールやフレームワークを使うべきなのか、それを選択するメリットとリスクは何か、そういったことまで考えられないと、たとえば新しい機能を追加しよう、サービスをつくろうとなったときに積極的に同僚との議論にも入っていくことができません。ただ与えられたタスクをこなすような環境で、それがそれまで学んだ技術で対応できるものなのであれば問題ないのかもしれないですが、エンジニアとして長期的に仕事をしていくうえではそれだといつか限界が来てしまうかと思います。常に学び、自分の頭で考えて意見を言えるようになる、それが本当に大切なことなのだと現場に入って痛感しました。

Photo by Marvin Meyer on Unsplash

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