見出し画像

若手エンジニアが「良いコードを書く」ための「学びの場」をつくりました

はじめまして。コードキャンプ株式会社の取締役と、フューチャー株式会社でコアテクノロジーグループ(R&D部門)のリーダーを務めている星です。

私は独立系SIerやTech系ベンチャーを経て、2007年にフューチャーに入社し、大規模基幹系システム、BtoC向けメディアサイトなど、多くのプロジェクトでITアーキテクトとして従事、2018年からコアテクノロジーグループというフューチャーのR&D部門のリード、2021年からはコードキャンプの取締役を兼務しています。

今回、フューチャーグループ内のコラボレーションとして、コードキャンプ株式会社が提供する「CodeCampNEXT コーディングレベルアップコース」を監修しました。

講座を通じ、「良いコード」を書いて「良いキャリア」を実現するエンジニアが1人でも増えることを期待しています。

「良いコードの書き方」を学べる機会が少ない


問題意識として、若手エンジニアには「良いコードの書き方」を学ぶ機会が圧倒的に不足していると感じています。

そもそも、コーディングの品質を意識して向上/改善できている若手エンジニアは非常に少ないのではないでしょうか?

ITの現場でビジネスのためにプログラミング(Webサービスやシステムの開発)する時は、基本的にチームで開発に臨みます。

現場では、「仕様通りに動けばいい」コードを書くだけでは作業完了として認められません。

他のチームメンバと協調し、可読性・保守性・拡張性・効率性を意識してコードを書くことが求められますし、そうではない現場は、残念ながらそれどころではないという大変な状況・・・ということになっているかもしれません。

現在、私はエンジニアの採用活動にも多くの時間を割いていますが、20代のエンジニアでコードの品質について、面接で語ることができるのは、体感としては100人に1人くらいかと思います。

若手のうちにコードの品質を意識して仕事ができるようになるということは、それだけエンジニアとしての希少価値を高めることに繋がります。

新言語より先に「良いコードの書き方」を学ぶメリット

しかし、若手エンジニアの多くは、「良いコードを書く」ことよりも「新しい言語/技術」を習得することに熱心になる傾向があるように感じます。

面接で、最新の技術に触れていることをアピールする候補者は多くいますが、設計・実装上の課題に対して、自分が主導して理論に基づいて改善したことをアピールできる若手エンジニアは少ないです。

もちろん、新しい技術の習得やトレンドを知ることも大切ですし、そのほうがエンジニアとしてのモチベーションが高まることも否定しません。

ですが、言語に依存しない「良いコード」を書くスキルを身につけることで、エンジニアとしてのレベルが上がるということにも目を向けてほしいと思っています。

新しい言語を点々と習得するよりも、その前に良いコードの書き方を理解してから新しい言語に取り組むようにしたほうが圧倒的に理解度が高まり、学習スピードも上がります。

どの言語でも通用する原理原則を知ってから、新しい技術を学ぶほうがレベルアップの近道となり、市場価値の向上にも繋がることを、エンジニアとしてレベルを上げていきたい若手の方に対して提案したいと考えています。

インプットで終わらず、良いコードをアウトプットする


今回開発した講座では、「自然と良いコードが書けるエンジニア」を育成することを目標として、現場で活きるノウハウを体系的に学べるようにまとめています。

そのため、知識を得るだけではなくアウトプットを重視してスキルとして身につく構成にしています。

良いコードについて言及している書籍は「リーダブルコード」「ベタープログラマ」をはじめとして、いくつか存在しています。

しかし、「良いコードが書けるようになる」トレーニングプログラムは、世の中にこの講座の他にはまだ存在していません。

もちろん、上述の書籍等で自身にインプットし、独力でアウトプットできるようになる方もいますが、経験の浅いうちに読んでも「そういうものなのだろう」「言われてみれば、そうだろうな」といった感想で終わってしまうケースもあると思います。

その点、本講座のように、トレーニングプログラムという形式でインプットとアウトプットを合わせて実施することで、実体験を通して自分のスキルとして獲得できるため、経験の浅い若手エンジニアの学習に適していると考えています。

日常的に、コードをレビューする文化が根づいている環境で働いている若手エンジニアもいると思いますが、それだけでは良いコードが書けるようになりません。

自分が書いたコードに対して指摘を受けて修正したとしても「なぜ、修正する必要があるのか?」を理解できなければ、ただ言われたとおりに修正するだけで、別の現場に行ったときにまた同じ指摘を受ける可能性もあります。

若手エンジニアの方には、今回開発した講座で扱う「良いコードの原理原則」を体系的に理解することで、プログラミング言語に依存しないコーディングスキルを身につけて頂きたいです。

「良いコード」を書いて、「良いキャリア」を実現しましょう

コーディングの品質を意識してコードが書けるようになると、これまでと見える世界が変わるはずです。

「動くコード」を書くだけならばコーディングの仕方はいくらでも方法があります。

しかし、実際に可読性・保守性・拡張性・効率性の観点を踏まえてコードを磨いていくと、たどり着くソースコードはほぼ1つに収束し、それは結果的に「美しいコード」と呼ばれると考えています。
(コーディング規約やコーディングスタイルの話はありますが、本質的な実装についての話です)

チーム全体の共通認識として「良いコード」を書くことが浸透していれば、みんなが同じように「良いコード」が書けて、チームとして生産性・品質共に高く開発を進めることができ、ソースレビューでは本質的な指摘や議論に集中することができます。

これは、エンジニアチームとしては理想的な形ではないでしょうか。

「良いコードを書く」スキルを習得することができれば、チームの中で開発をリードする立場を担えるようになります。

また、職場以外でもアウトプットをする勇気が出て、OSS活動に参加できるようになったりと、エンジニアとしての市場価値を上げることに繋がります。

今の職場でスキルアップしたい人はもちろんですが、社外からも評価される市場価値の髙いエンジニアを目指したい若手の方、初めて開発リーダーを任されて、ソース品質の責任を担うポジションになった方にはぜひ、本講座で学んで頂きたいと思います。

CodeCampNEXT コーディングレベルアップコース

今回、監修した講座です。「品質が高い/良いコード」の書き方を体系的に学べるコースとして監修しました。

コードの「可読性・保守性・拡張性・効率性」についてアウトプット主体/グループワーク形式で学び、「品質が高いコードを書くスキル」を身につけることができるように設計しています。

【コースで学ぶ内容】
・高品質なコードとは?
・可読性 1:優れた名前の付け方
・可読性 2:コードフォーマット
・可読性 3:コメントの正しい利用
・可読性 4:条件分岐と繰り返し
・保守性/拡張性 1: スコープを縮める
・保守性/拡張性 2: コードの重複を避ける
・保守性/拡張性 3:適切な単位で関数・メソッドを書く
・効率性:計測しながら無駄を省く
・提出課題:コード改善

【学習方法について】
クラス制で同期のエンジニアたちと学んでいきます。グループ学習も含めて全てオンラインで行うので、全国どこからでも参加可能です。
チャット(Slack)での質問相談、週に一度のオンライン勉強会、メンターとの面談、不定期開催のイベントなどに参加しながら、良いコードを書くスキルを体系的に習得することができます。


前述したように、「良いコードが書けるようになる」トレーニングプログラムは、世の中にこの講座の他にはまだ存在していないと自負しています。

「良いコード」を書いて「良いキャリア」を実現していきたい方は、ぜひ一緒に学んでいきましょう。

この記事が参加している募集

仕事について話そう

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