この記事はフラー株式会社 Advent Calendar 2023の13日目の記事です。12日目は私の「サーバーサイドのオンボーディング課題と俺たちの果てなき戦いは続く その②」でした。
Goaの学習コストが高いよという話
さて、前回は課題の構成をアップデートできたものの、Goaの学習コストの高さが目についてきたなぁ、というお話でした。 僕が入社した当時はオンボーディングなんてものはなく、Goaもまさに「現場で覚えろ」スタイルだったのですが、自分の若い頃(?)を引き合いに出して苦労を押し付けたらそれはもう立派な老害です。令和の世に適切な指導スタイルとは言えませんね。
でも毎度Goaを教えるのもコストかかるしなぁーどうしようかなぁーと悩んでいた頃に、あるイベントがやってきました。
新卒研修というチャンス
少し話が変わりますが、今年フラーでは多くの新卒社員を迎え入れ、それに伴って約3ヶ月間のエンジニア集合研修を実施しました。
大枠としては、各職種で言語や基礎的なスキルのトレーニングを行った後、新卒エンジニアで協力してひとつのスマートフォンアプリを作り上げてみようというものです。 サーバーサイドはアプリで利用するWeb APIの実装はもちろん、サーバーを稼働させる環境をAWSで1から構築したりもしました。
業務で利用している以上、この新卒研修でもGoaにふれる必要があり、とうとう重い腰を上げてごっついGoa入門資料を作りました。 とても頑張って作った資料なので、機会があればどこかで公開したいと思います。めっちゃ頑張ったんです。褒めてほしい
で、せっかく作った入門資料を新卒研修だけで終わらせるのは非常にもったいないので、これをオンボーディング課題の参考資料として取り込みました。自分で作ってアレですが、Goaの学習コストが本当にグッと下がったと思います。
未だ見えてくる課題
さてGoaに関しては一定の終息を見せたと思いますが、まだまだ課題は見えてきます。最近の課題は次のようなものです。
SQLまわりの実装・記述のお作法を伝えるのが大変
フラーでは主にメンテナンス性や可読性の観点から、SQLを記述するときは次のようなお作法を守っています。
他にも、database/sqlパッケージで提供されているメソッドは、基本的にcontext.Contextに対応した実装を採用するようにしています( QueryContex
, ExecContext
等)。
これらはフラーとしての開発文化・方針であり、初学者が一発でこれらすべてをクリアした実装をするとは思えません(実際、未だ現れてない)。 なので毎回コードレビューの中で伝えていたのですが、これも毎度伝えるのがなかなかしんどくなってきました。
また、課題において「わざと間違えさせて正しい方向へと導く」という指導方法が個人的にものすごく嫌いです。 私は前職に新卒で入社したのですが、その会社の新卒研修で一番嫌いだった講師がまさにそういう指導をする人でした。 わざわざ失敗に導いておいて、その後ドヤ顔で「本当はね〜」と解説されるときのストレスたるや。 あぁ、思い出すだけで腹が立ってきた……。
閑話休題。
課題を解く人がノーヒントでたどり着けるはずのないものを要求するのも良くないと思い、この辺りは実装上の制限事項として明記することにしました。
意外とみんなドキュメントを読んでくれないのでは説
課題の仕様は認識齟齬が発生しないよう、結構細かく要件だったり制限事項を記載しているつもりです。ですが、そもそもこのドキュメントをみんながあまり注意深く読んでいないのでは?と思うときがあります。
というのも、前回の記事で「インメモリデータストアの実装はハードルが高いので、 登録・更新したデータを保持する必要はありません
と明記した」と書きましたが、それでもやっぱり初手で実装しちゃうんです。
伝え方が悪いのかな……表現や構成はどんどんアップデートしていきたいです。とりあえず件の記述は「保持しないでください」に書き換えようと思います。
まとめ
全3回にわたってサーバーサイドのオンボーディング課題の進化をお伝えしてきました。
まだまだ改善すべき点はあると思いますし、実業務と比べるとカバーしきれていないスキル・知識がたくさん残っているのも事実です。 オンボーディング期間は限られているのですべてを学ぶ課題を作るのはさすがに無理だと思いますが、より充実したカリキュラムとなるよう今後もアップデートを続けようと思います。
明日は、、決まってない!誰か!