BLOG
2017年09月20日
9月勉強会 「Fizz-Buzzコンテスト」
9月の勉強会は、メジャーなプログラミング問題であるFizzBuzzへの取組でした。
FizzBuzz問題については、検索すればすぐに出てきますので、説明は省きますね。
プレゼンターはまもなく入社丸2年、唯一の営業部員のEくんです。
彼は、ブログの記事には事欠かないほどエピソード満載の人物なのですが
その紹介はまたの機会にとっておきます 笑。
今回の目的とルールについて。
以下、Eくんの作成資料から抜粋です。
—: FizzBuzz問題(制限時間30分)
—:
—: ◆仕様◆
—: テキストボックスを用意し、1から100の間で任意の数字を入力する。
—: 1から入力値までを順番にラベルに表示(メッセージボックスでも可)
—: ただし数が3で割り切れるなら「Fizz」を表示
—: ただし数が5で割り切れるなら「Buzz」を表示
—: また両方で割り切れる場合は「FizzBuzz」を表示
—: (時間が余った人は整数値以外の入力時に適切なエラーメッセージを表示)
—:
—: ◆実行結果例◆
—: 1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14, FizzBuzz,16 …
—:
—: ◆FizzBuzz問題コーディングコンテスト開催目的◆
—: ・コーディングを行う時の意識レベルの統一を目的として実施
—: ・個人ごとのコーディングレベルのばらつきの抑制
—: ・コーディング時に留意する最低レベルの指標決定
—:
—: ◆開催時のチーム分けとルール◆
—: ・入社1年目をビギナーに分類
—: ・入社5年目までをミドルに分類
—: ・それ以上をベテランに分類
—: ・ビギナー及びミドルは自身の考える最良のコーディングを行う
—: ・ベテランは自身の考える最悪のコーディングを行う
—: ・使用言語はVisualBasicのみとする(研修時に全員が触っている為)
—: ・参加者は全員匿名でコーディングを行う
—: ・制限時間は30分
—: ・インターネットの使用禁止(ググることは厳禁)
—:
—: ◆審査の方法◆
—: ・コーディング終了後に各チームごとのコードを評価し、最も見やすいコードに投票する
—: ・得票率が最も高かったコードに関しては優秀例として紹介
—: ・チームごとに読みやすいと評価されたコーディングについては作成者を発表する
—: ・作成者には可読性について気を付けていることを重視して発表を求める
—: ・作成者の発表時に参加者に意見を求めるが極力『コーディングに対して良かった点のみ』とする(褒めちぎる)
上記に沿って、各自実際にコーディングをしました。参加者はビギナー4名・ミドル5名・ベテラン3名の計12名です。
いたって単純なプログラムなので、選択するロジックはみな同じになるのですが、
コメントの入れ方
定数の使い方
メソッド化すること などロジック以外のところに、明らかな経験の差が出ました。
ベテランチームはわざわざ良くないコーティングを書くことが思いのほか難しかったようです。
コーディング時の配慮が、すっかり身に付いているということにしておきましょう 笑。
ビギナーチームでロジックを組めない者が1名。これは由々しき事態。すぐにフォローが必要です。
以下、Eくんがまとめた今回の成果と所感です。
—: ◆成果◆
—: ・『変数の初期化、分かりやすいコメントの表記』は今後社内でのコーディングとして徹底する
—: ・『メソッド化』についてはビギナーは今後出来るようになるよう努力する
—: ・自社内で自分以外のコーディングを見ることで刺激を与える(与えられたらいいなぁ)
—: ・ベテランチームからは普段と違った趣だったので非常に面白かったと好評を得られた
—: ・ミドルチームからはインターネットで調べることに思ったより依存していることに気付いたと意見を得られた
—: ・ビギナーチームは最近触っていなかったVisualBasicについてこんなに忘れていると思わず凹んだと嘆いていた
—:
—: ◆所感◆
—: 想定ではほぼ同一の結果が得られると考えていたが、かなりコーディングに差が見られた。
—: 定期的に行うようにすれば、よりコーディングを意識的に行えるのではないかと思う。
—: またビギナーにとってはまだロジックを組めない人もいることが分かったので、
—: 今後重点的にフォローアップを図っていくと共に、次の新人教育に活かしたい。
コーディングのレベルを整え、標準化することで
他の人のコードでも自分が書いたのと変わらない工数でメンテナンスが可能です。
それは、当社が提供するシステムのクオリティを上げ、それを維持することに繋がります。
単なるコーディング技術のマニュアルとはちょっと違う、いわば心掛けのマニュアルみたいなものが持てれば
理想的なコーディングに近づくのではと思います。