実録!俺が観たフィヨルドブートキャンプと業務未経験のエンジニア1ヶ月目

こんにちは。 就職してから映画を観る本数が激減したいっしーです。

この記事は、フィヨルドブートキャンプ Part 2 Advent Calendar 2022の5日目の記事として書いています。

Part1はこちら

何の記事?

  • プログラミングスクールのフィヨルドブートキャンプについて
  • Webエンジニアとして1ヶ月働いてみて

などについて書いた記事です。

以下の方に参考になるかもしれません。そうであれば幸いです。

  • フィヨルドブートキャンプに参加を検討している方
  • 業務未経験でエンジニア就職を希望する方

あんた誰?

筆者はプログラミングスクールのフィヨルドブートキャンプを1年半かけて卒業し、11月からWebエンジニアとして働いている者です。

卒業ステータスにはなりましたが、自作サービスはまだリリースしておりません(2022年12月現在)。

ほぼ完成しているもののUX上の致命的なバグがあって、終業後にMPが残っていたら取り組んでいます。

フィヨルドブートキャンプには

  • Web業界もエンジニア業務も未経験
  • 事務、接客の経験
  • 無職状態
  • 既婚、子ども1人
  • 他スクールでRuby on Railsの学習経験あり
  • 28歳(就活時は29歳)

というステータスで参加しました。

フィヨルドブートキャンプ内で「達人プログラマー輪読会」「ミノ駆動本輪読会」「アジャイルサムライ輪読会」を主催しました。

所属企業については、いまのところフィヨルドブートキャンプ内のみで公開しています。 フィヨルドブートキャンプの紹介企業で、東京に本社があって、Railsを採用している企業です。

フィヨルドブートキャンプについて

フィヨルドブートキャンプを「FBC」と省略させてください。

ラクティス

FBCではひとつひとつの学習カリキュラムを「プラクティス」と呼んでいます。

以下のページでFBCの全プラクティスを確認できます。

bootcamp.fjord.jp

自分が参加した2021年半ばの時点に比べると

  • 「Webセキュリティ」が追加された
  • 「lsコマンドを作る」が分割された
  • Ruby」〜「Ruby on Rails」の順番が入れ替わった
  • いくつかのプラクティスが「発展編」に移動して、卒業するために必須ではなくなった

といった大きな変化がありました。規模の小さなアップデートは、毎日のように行われています。

フロントエンド・サーバーサイド・インフラのどの方面においても基礎となる知識を体系的に学習できる内容になっていると思います。自分が個人的に学習したい or 将来的に登場する技術がまったく違うパラダイムのものであっても、その習得には基礎知識が前提となっている可能性が高いです。

「とは言っても ○○ って正直どうなの?いま学習する意味あるの?」と思うことがあるかもしれませんが、業務未経験の場合はあんまり気にしなくていいように思います。

FBCでの学習の本質は「何の技術を学んだか」よりも「技術を学習する経験を積むこと」それ自体だと思うからです。

「技術を学習する経験を積む」

ラクティスは基本的に以下の繰り返しです。

  1. ラクティスページのドキュメントを読み、学習対象について知る

    (Unknown unknowns を Known unknowns にする作業)

  2. 学習対象について調査し、日報や分報やブログにアウトプットする

    わからない部分について、わからない旨を具体的に表明する

    (Known unknowns を Known knowns にする作業)

  3. 要件を整理して提出物(Pull RequestやGistやスクショ)として具体化する

    (学習対象を Known knowns にしたと証明する作業)

data.wingarc.com

チーム開発に到達するまでは、本当にイヤというほどこれの繰り返しです。

そして、多くの受講生が何らかのプラクティスで詰まり、単純に物凄く時間がかかったりします。

そのような難所を攻略する方法はひとつだけです。

わかりたい対象をキーワードとしてたくさんググります。そのキーワードがちょっとでも入ってる本をたくさん買って読みます。片っ端から見てやるぞというイメージです。 とにかくそのキーワードが含まれている情報を浴びることを意識します。 そのキーワードについて様々な角度から書かれているものを見ているうちに共通点と差異からおぼろげながら輪郭が見えてくるはずです。

docs.komagata.org

クラピカが鎖について徹底的に調べたり触ったり匂いを嗅いだりするやつですね。

https://pbs.twimg.com/media/EsLOWhnUwAIl7ww?format=jpg&name=small

(きっとゴレイヌも…)

こういった経験を繰り返し積むことによって、卒業課題である自作サービス開発において外部APIや外部ライブラリを利用する際にドキュメントを読んだり、ReactやAWSといったプラクティス外の技術を採用するといったチャレンジを行うことが可能になります。

インプットとアウトプットのサイクルを回していくことは、仕事でも全く同じだと思います。

チーム開発

ラクティスについて語ったので、FBCにおけるチーム開発についても触れておきます。

チーム開発で受講生が触るリポジトリは以下になります。

github.com

このリポジトリの最大の特徴は、それまでユーザーとしてサービスを利用してきた受講生自身が主な開発者であることですが、ここではOSSでもあることに注目したいです。

このフィヨルドブートキャンプのサイト自体はオープンソースソフトウェアとして公開されています。また開発に使っているカンバンやPull Requestのやりとり、週次のふりかえりミーティング・見積もりミーティングの議事録も全てオープンになっているので、就職するときはその成果をそのまま面接官の方に見せることができます。

bootcamp.fjord.jp

筆者も就職活動時に、以下のURLを企業に共有しました。

github.com

OSSであることを利用して、これをしくみ化しているのは天才的だと思います。

また、チーム開発で積むことができる最も重要な経験はGitHub上のコミュニケーションに慣れることだと思います。

ひとつのIssueをこなすまでの流れを把握し、Pull RequestのDescriptionを丁寧に書き、他の受講生が書いたコードに対してレビューしたり、動作確認の依頼や完了の報告を行ったり、という経験を(かなりソフトに)叩き込まれます。就職する前に実務に最も近い経験ができて本当によかったですし、メンバーのみんなでひとつのサービスを成長させていく面白さも感じられました。

逆にチーム開発で全く面白味を感じられない場合は、エンジニアとして働いても辛い…というより、別の働き方があるかもしれません。

また、bootcampアプリ自体は筆者がFBCに参加した時点よりも高機能化する一方で、あとに参加すればするほど複雑化したコードを相手にすることになります。なので、プラクティス自体が難化傾向にあると言えます。

(実際の難易度はアサインされるIssue次第なので「難化傾向」です)

(すべてが肥大化する一方というわけではなく、機能が大きく削除されたこともあって、その際はサービスを運営するうえで非常に興味深い議論がなされました)

ラクティス以外の経験

スキルシートに記載するほどではないかもしれませんが、かといって確実に業務で役立つ様々な経験ができます。

たとえばエンジニアとして働くのであれば、フルリモートワークでもハイブリッド出社でも、Slackなどチャットツールでのテキストコミュニケーションに慣れておかなければいけません。ミーティングはGoogle Meet等のビデオチャットで行われることがほとんどでしょう。

そういったスキルは、輪読会、雑談会、モブプロ会、ミートアップといったイベントに参加することで、意識せずとも勝手に養われていきます。

(ちなみに、そういったイベントへの参加は卒業には必須ではありませんし、現職を続けながらFBCに参加している方には定期的なイベント参加自体が難しいです)

また、

  • 日報を書く
  • ブログ記事を書く
  • LTを行う

といったアウトプット経験も積むことができます。

独学でもできないことはないですが、「読んでくれる/聞いてくれる人が確実にいる」状態で、アウトプットのはじめの一歩を踏み出せる機会は稀だと思います。筆者がそうでした。

アドバイザーとして参加されている方や、ドリンクアップ(企業説明会)の参加者様や、地域Rubyコミュニティの方々など、メンター以外の現役エンジニアと話す機会も数多くあります。

個人的に、FBC参加は「Web業界ってどんな感じ?」「エンジニアってどんな仕事?」という疑問に対する解像度を上げていく経験になりました。お金を払ってWeb業界0社目に入社したようなものだと勝手に思っています。

就職

FBCで就職を希望する場合は

チーム開発に並行して就活の準備スタート

→ チーム開発卒業

→ 自作サービス開発

→ 本格的に就職活動スタート

という流れが一般的(2022年12月現在)ですが、筆者は

チーム開発に並行して就活の準備スタート

FBCから筆者の条件に合った企業を提示してもらう

→ ドリンクアップ(企業説明会イベント)に参加して、その企業から直接話を伺う

→ その企業からFBC経由でカジュアル面談 or 選考受けないか聞かれる

→ カジュアル面談受ける

→ チーム開発の段階で選考受けてOKの企業だった

→ 自作サービス終わる頃には存在を忘れられてるかもだし選考受けとこ

→ 通った😳

→ チーム開発卒業

→ 自作サービス

FBC卒業・就職

という感じでした。

再現性は低そうなので参考程度に。

「プログラミングに興味を持ったきっかけは?」という定番の質問に対しては「『ファイナルファンタジーXII』でプログラミングの原初体験をして〜」という切り口で、プログラミングのどこに興味を持ったかを説明しました。

xtech.nikkei.com

「なんでエンジニアになりたいんですか?」という質問に対しては

  • 在宅で仕事しやすそう
  • 年収も上がりやすそう
  • 知り合いのエンジニアが働いてて幸せそう
  • 単純に仕事がおもろそう

というフワッとした部分は正直に伝え、「単純に仕事がおもろそう」からプログラミングの話に切り替えて回答しました。

ちなみに、この定番質問は就職後もされました。

Webエンジニアとして1ヶ月働いてみて

入社1ヶ月のあいだ、仕事をしながら「FBC参加前の状態で現在のプロジェクトに参加していたら一体どうなっていただろう?」とたびたび想像していました。

最初のタスク

「リリーススピードを優先して_hoge.haml.htmlだけにハードコーディングしているコンテンツがあるんですが、そのコンテンツを各ページでも表示できるよう抽象化してください。」

これが筆者の最初のタスクでした。

(環境構築は置いといて)

コードベースがかなり巨大なので時間がかかりましたが、特有の慣れない挙動や歴史的経緯についての質問を重ねながらも何とか仕上げることができました。

「さすがにそれは事前に勉強してたらわかるやろ😡」みたいな質問はしなかったと思いますし、まる一日先輩に付きっきりで教えてもらうようなことはしませんでした。

僕の考える、Railsエンジニアとして就職できる最低レベルは、「少しでもプラスの戦力として計算できる」というものです。「Issueを一人でこなせる」といっても良いかもしれません。 …「教えるのに大量のパワーが割かれて、居ない方がプロジェクトが進む」という状態がマイナス戦力です。

docs.komagata.org

エンジニアとしてはまだまだですが、FBCを卒業した以上は自身をプラス戦力だと評価しています。

そして、FBC参加前の筆者はマイナス戦力だと断言できます

マイナス戦力状態の筆者が初タスクに挑戦したら…

  • そもそもタスクの要件が理解できない
  • IssueやPull Requestのスレッドの読み方がわからない
  • Hamlがよくわからない
  • Active Recordを操作できない
  • テストを書こうにもRSpecがわからない
  • RSpecがわかったとしてもテストの観点がない
  • それ以前に環境構築できない

などなど、パッと思いつくだけで大量の即死ポイントが見えてきました。

もうちょっとだけ会社の話

現在筆者はジュニアエンジニアの育成を主な目的としたOJT部署に所属しており、特定のプロジェクトのタスクに取り組んでいます。そのOJT部署のチャンネルで日報を投稿し、技術的な質問や困ったことを表明します。

初日の終わりがけに速攻で分報チャンネルを作成しました。

また、現在のプロジェクトのチームの雰囲気や環境はとてもよいと感じています。

  • Slackのチャンネルにピン留めされているGoogle Meetで各自作業
  • Google Meetを繋ぎっぱなしにする義務はない
  • そのGoogle Meetで作業してると、朝会や定例ミーティングがぬるりと始まる
  • 技術の話で盛り上がる
  • 映画の話で盛り上がる
  • ゲームの話で盛り上がる

Google Meet繋ぎっぱなし」は常設のもくもく会を毎日やっている感じで、挙手機能があることも後押しし、同期的な質問のハードルが非常に低いです。気分転換に軽い雑談もしやすいので、リモートワークの孤独感はかなり薄いです。

質問のための情報を整理する前に、分報でウンウンうめいている段階で逆に声をかけられて、疑問を瞬殺されるという経験を何度もしました。

どういう経緯で何から影響を受けて成立したのかはまだ存じ上げませんが、チームに「Google Meet繋ぎっぱなし」カルチャーがあることは新人として非常にありがたかったです。

特にくふうを凝らさなくても、自分が助けを求めやすく、周りが自分を助けやすい環境があったのは幸運でした。そのおかげで「今日はぜんぜん進捗がなくてつらい…」みたいな事態には直面しておりません。

少しでも速くエンジニアとして成長することが、この恵まれた環境やチームへの恩返しなのかなと思っています。

とっても参考になるよ

フィヨルドブートキャンプについては色々な方が書かれているので、ぜひ参考にしてください。

明日はfuwa-syugyoさんの記事です。どうぞお楽しみに。