この記事は1年以上編集されていないため、情報が古い可能性がございます。
ご注意ください。

このWordPress pluginを配布しています

私が過去所属していた企業さんで新人プログラマが増え、スキル把握を兼ねて「コーディングの勉強につながること」をやりたいと考えていました。

そんな時に、以下のエントリを見て「これだ!」と思いました。

ソニックガーデンさんに所属されている伊藤純一さんがFizz Buzzをやったお話で大変勉強になりました。

私の場合、その企業さんでアプリ担当者はC++C#、サーバ担当者はPHPというように、担当者によって使える言語が異なる状態であり、環境準備がコンテスト実施の壁になっていました。

この点の解決となったのが、paiza.ioです。

paiza.io
https://paiza.io/

paiza.ioの対応言語はC、C++、Java、PHP、Ruby、Python、Perl、Scala、Goなど、主要なものはすべて押さえられています。

またWebアプリケーションですから、ブラウザで簡単に実行でき、とても手軽。

コンテストの実施内容

ねらい

  • 各自スキルの評価、確認
  • 他人のコードを知る、良いコードとは?悪いコードとは?
  • 技術的な刺激になる
  • エンジニアの交流

上記は参加者に向けた説明です。

同じオフィスにいても、プロジェクトが異なるろ接点が減ってしまう傾向があり、関わり合いを増やすことにつなげたいという気持ちがありました。

コーディングのイベントなら、エンジニアが参加しやすいですし、新人エンジニアに多くのコードを見る機会に、ベテランエンジニアに後輩に大きな顔をする機会になるというねらいもありました。

流れ

  • 課題を元にプログラミングを行う(30分)
  • 各メンバーが実装物を解説する(5分 x 8名 = 40分)
  • 投票(5分)
  • 結果発表(5分)
  • あとかたづけ

軽食

  • 軽くドリンクやお菓子を用意します。

業務外で1時間以上も拘束する形となるため、軽食を用意しました。

具体的にはからあげくん、フライドポテト、コーラ、甘いものなど。
参加者がコーディングしている間に近所のローソンに走ります。

コーディングと提出

  • コーディング時間は30分
  • コーディング開始の5分前に課題を周知する
  • 完了した人から自分のコードを提出する
  • 提出後の手直しは不可能

社内でChatWorkを利用しておりましたので、出題などの全体連絡はChatWorkにグループを作成し、グループ上で行いました。
コードの提出は「司会(私)の個別チャット」に提出します。

早い人で10分程度でコードの提出がありました。
「Aさんがコードを提出しました」などアナウンスすると、皆からリアクションがあるのが面白かったですw。

答えが合えば即提出する人、コードが完成してもリファクタする人など、こういったところでも個性が出ます。

実行環境

  • 実装したプログラムはpaiza.ioで実行する
  • 可能言語は「paiza.ioで実行できるもの」とする
  • 具体的にC,C++,Java,PHP,Ruby,Python,Perl,C#,JavaScript
  • そもそもの課題要件を満たしていない場合は減点
  • 標準入力、標準出力の実装、paiza.ioでの実行方法は事前に確認しておくこと

paiza.io
https://paiza.io/

検証と発表

  • paiza.io上でコードを実行し、期待通りの答えが得られるか検証する
  • コンパイルエラーや結果に誤りがある場合は減点
  • 一人5分の持ち時間で、コーディングで苦労した点、工夫した点などを発表する

また、PCと大型のモニタを接続して、そこでコードの実行を行いましたが、後ろの席に座ったメンバーにはあまり文字が見えなかったようです。ごめんなさい。

各メンバーにコーディングで意識した点などを発表してもらったのですが、ここはあまりうまくアピールできないエンジニアが多かったです。
Fizz Buzzで簡単な問題ということもあり、持ち時間いっぱいまで話すエンジニアはおりませんでした。
人前で話す練習も、ある程度は必要だと感じます。

コードの実行と答え合わせで1分程度かかりましたので、メンバーが発表する時間も併せて5分程度だったと思います。

投票

  • 参加者全員に2票渡し「自分が良いと思ったコード」を2つ選び投票する
  • その際「何が良かったか」をコメントとして記載する

結果

  • 1票1点で順位付けする
  • 1位には簡単な景品を贈呈
  • コメント等をまとめ、社内アーカイブに

景品はamazonギフト券を500分渡しました。

1位のコード

<?php
    $input_number = trim(fgets(STDIN));
    $input_number = explode(',' ,$input_number); // , で分割

    foreach($input_number as $number){
        if ( $number % 3 == 0 && $number % 5 == 0) {
            echo "FizzBuzz \n";
        } elseif ($number % 5 == 0) {
            echo "Buzz \n";
        } elseif ($number % 3 == 0) {
            echo "Fizz \n";
        } else {
            echo $number."\n";
        }
    }
?>

デバッグの合間に参加してくれた若い社員さんのHさんが1位に!
メンバーからのコメントもシンプルで完結という内容が多かったように、直球、コード量の少なさ、見通しの良さが評価されたようです。

Unity案件でC#を選択するメンバーが多く「PHPってこんなに少ない記述でいいの?」というところでインパクトがあったように感じました。

感想

  • 軽食を用意しラクな雰囲気で実施できた、これは狙い通り
  • ほぼ全員正解で一安心
  • Fizz Buzzは簡単すぎたため、もうちょっと難しい問題が良かった
  • 最近コーディングできていない、というエンジニアの刺激にもなった

paiza.ioを利用したところ、環境の準備や切り替えの手間が不要でとても楽でした。
参加者からは案の定「paiza.ioの使い方が分からなくて時間をロスした」という声がありましたが、事前にURLまで渡していたのでそこは黙殺します。

また、文字通り言語が異なっていても会話が成立するのが良かったです。
コードの解説時に「言語の特徴についても触れる」というおまけもありました。

同じ舞台で発表ができ、普段接しないエンジニアの交流が持てたことは狙い通りでしたが、予想以上に盛り上がりました。

ちょっと何かやってみたいというマネージャーさんにオススメです。

この記事を書いた人はtomita@atuwebでした。


過去に前身のブログで公開していた記事を編集して再公開しました。

スポンサーリンク
ad_336
ad_336
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存