先日、来栖川電算の社内イベントとして、継続して実施されている「プログラミング道場」の活動を振り返る発表と意見交換が行われました。本記事では、その道場の概要と、イベントを通じて共有された参加者の個人的な所見や知見についてご紹介します。


1. プログラミング道場とは?:目的と活動概要

プログラミング道場は、社内の取り組みの一つとして「実装版」とも呼ばれ、実装力を鍛えることを目的としています。

活動の形式と目的

  • 形式: 弟子と師匠によるワンオンワン形式で実施されています。
  • 目的: 座学よりも実践練習を重視し、試行錯誤を繰り返すことで実装力・判断能力を鍛える点に重点が置かれています。AIコーディングエージェントが台頭する現代においても、基礎的な知識を持ち、生成されたコードの良し悪しを判断できる能力を鍛えることは重要と考えています。
  • 頻度と期間: 週に1回1時間、Discord上でオンラインにて実施されており、すでに約3年ほど継続しています。
  • 実施内容: 現在は、Scalaの100本ノックのような問題集「S99」をPythonで解くという形式が取られています。問題の傾向は、データ構造やアルゴリズムといったプログラミングの基礎的な部分が問われるものであり、アプリ設計や深い言語仕様の知識は要求されません。
  • 師匠と弟子の役割: この道場では、弟子が主体でプログラミングの問題を解き、師匠は基本的にそれを見守るスタイルを取っています。

特に、通常のペアプログラミングとの違いとして、道場では思考錯誤を繰り返すことを最も重視しています。

  • 弟子: すべて自分で考え、実装を続けます。
  • 師匠: 相談相手になるほか、前提知識の補助(キーワードの伝達のみで自ら調べさせる)、道が外れた際に止める役割、問題解決後に別な解き方やリファクタリングの例を紹介する役割を担います。師匠は、単なる正解を教えるのではなく、「調べる力」を鍛えることや、モチベーション低下を防ぐことを意識しています。

2. イベントで共有された知見:師匠と弟子の視点

バータイムでの振り返りイベントでは、取り組みを長期間継続してきた師匠視点の課題と、実際に案件で成果を得ている弟子視点のヒアリング結果が共有されました。
※あくまでイベントの中で出された個人的な意見であり、来栖川電算の公式見解ではない点にご留意ください。

師匠視点から見えた課題と今後の展望

発表者(師匠)からは、道場を継続する上での個人的な課題がいくつか挙げられました。

  1. 師匠が言ったことが、だいたい「誘導・ヒント」になってしまう: 問題を解く上で必要な予備知識を教えるだけでも、弟子にその知識を使うべきだと示唆してしまう結果になり、思考の自由を奪ってしまう可能性があると感じています。
  2. 実務とのギャップ: 現在の課題が基礎的すぎることと、実務で要求される内容との間にギャップがあるのではないかという懸念が示されました。
  3. 成果評価の難しさ: 弟子の成長は感じ取れるものの、補助形式であるため、同じ時間を自習に使った場合との差分を測ることが難しいという問題があります。また、師匠視点での活動ログを残してきたが、今後は弟子視点で何を学んだかを記録してもらう方が良かったかもしれない、という所見がありました。

今後の取り組み(個人的な焦点) 師匠は、弟子向けの今後の取り組みとして、セルフレビューの強化(自分で書いたコードの問題点を見抜く能力)と、要件の見極め(例:不必要に計算効率やメモリ効率を追求しすぎない) を強化していきたいと考えているとのことです。

弟子視点から得られた成果

弟子へのヒアリングでは、具体的な成果や感想が共有されました。

仕事での貢献 プログラミング道場の経験は、仕事で「とてもあった」と回答されています。

  • 実装の理解と修正: 仕事で、すでにある実装を読みながら実装意図を考えたり、それを踏まえた修正方法を検討しやすくなった。
  • 不明点の減少: 「全然わからない!」と感じることが減った。
  • 知識の定着: 道場でやったことが、現場での実装知識として役立つことがよくあり、嬉しく感じている。

独学では難しかった点 独学では、自分の思考パターンや「もっと良い実装があるはず」という感覚が正しいかを確認するのが難しいと感じています。また、普段何気なくやってしまうコーディングの「癖」に自分だけでは気づけない点も、道場での取り組みが重要だと感じている理由として挙げられています。

道場に期待する役割(師匠の役割) 弟子は、師匠の役割を「熟練している人が実装する際の思考パターン、着眼点を伝授すること」、「自分だけでは気づかない、良くない癖、知らない知識などを指摘すること」 と捉えています。

長期的な効果 長期的に得られるものとして、「実装する際に気をつけるポイント、筋を見つける力やその経験、勘所、思考パターン、着眼点」が挙げられました。

今後の活動拡大についての意見

この活動を他のメンバーにも展開するべきかについて、師匠と弟子の双方から個人的な懸念点が述べられました。

  • 資源の問題: マスターと弟子の両方の時間を要するため、付け足しにくいという懸念があります。
  • 適用性の問題: 師匠は、この取り組みは「ある程度自習ができる人」でないと厳しく、すべての人に効果が大きいわけではないと考えています。技術レベルが近い場合は、通常のペアプロ形式にした方が効率的であるという意見も出ました。

一方で、師匠は「準備がほぼ不要」で負担が小さいため、コストパフォーマンスは悪くないと感じており、まずは半年くらい試してみる価値はあるのではないかという結論を述べています。


3. まとめ:思考錯誤を積み重ねる重要性

プログラミング道場は、経験者が一方的に知識を与える座学ではなく、弟子が自ら問題に取り組み、失敗し、なぜ失敗したのかを見抜く力、そして思考錯誤の機会を積むことを重視しています。イベントでは、AIコーディングエージェントが台頭する現代においても、基礎的な知識を持ち、生成されたコードの良し悪しを判断できる能力を鍛える上で、こうした地道な実践が重要であるという意見が共有されました。

最終的に、道場の目標として、弟子は「自分の書きっぷりにある程度の自信が持てるようになりたい」という個人的な意向を表明しました。この取り組みは、技術的な知識の習得だけでなく、プログラマーとしての自信と判断力を養う場となっていることが示唆されます。

カテゴリー: ブログ