♥OSS

学生向けに勉強会や開発イベントを開催していたら、♥OSSになった人がやったことや思ったことなどを書くことにしました

プログラミングが好きな学生のためのリーダブルコード勉強会を開催しました

f:id:sezemi:20140711111758j:plain

先日の7/6をもち、表題の勉強会を終了しました! ご参加いただいた皆さま、本当にありがとうございました!!

すでにクリアコード様からも開催レポートを頂いていますので、ここでは主催した立場から振り返りたいと思います。


■なぜ企画したのか

1.
そもそも情報系学生や学生エンジニアの方は本やインターネットで学べることは欲していないので、個人の学習ではカバーがしにくく、またインターンに参加する前に必要なスキルが学べることを主題として、勉強会のテーマを考えていた

2.
情報系学生や学生エンジニアの皆さんはプログラミング好きが本当に多く、その一方で、レベル感の尺度として、プログラミングコンテストが重要視されており、そういったプロコンとはまた違った角度でプログラミングの魅力を感じてもえらるテーマがあればと考えていた

3.
チーム開発する際、個人プレーの集合体となるケースが多く、チームでコーディングするきっかけがあればと考えていた。また途中でコーディングスキルの差から、手が止まり、他のことをしている方も見受けられ、その解消法もあればと考えていた


こうした背景をもとに、リーダブルコードをテーマとすることで、アルゴリズムの追求や正確性だけではない、「読みやすさ」という尺度が加わり、それが現場に繋がるということも感じられ、またコーディングスキルを上げようと思うキッカケができると考えました。


■トレーナーにお願いしたこと

まず誰にお願いするのかに関して、コードの読みやすさの基準は主観が入りやすい領域なので、その原点となっているリーダブルコードの書籍関係者が解説するのが、一番響きやすいと思い、巡り巡って、クリアコード・須藤さんとお会いすることができ、登壇頂けることとなりました。

 ▶あとから振り返ってもこの出会いが一番大きかったです
 ▶キッカケを作って頂いた皆さま、本当にありがとうございました!!

そこで、須藤さんにお願いしたのが、1日という短期間では身につけるまでは到達できないため、
 (1) リーダブルコードのキッカケを掴んでもらうこと
 (2) コードの「読み手」となる仲間を作ってもらうこと
これを勉強会で達成したいとお願いしました。
(あとは特定の言語に縛られないこと →これが結構、難しい)

 

その打合せを経て、須藤さんにご検討いただき、実施したのが下記の内容です。

→6/22のプログラム 勉強会の流れ
→そのプログラム結果 SEゼミ - リーダブルコード勉強会(1回目)を開催 - ククログ(2014-06-23)

→7/6のプログラム 勉強会の流れ
→そのプログラム結果 SEゼミ - リーダブルコード勉強会(2回目)を開催 - ククログ(2014-07-07)


■誰がやったのか

定員30名で企画したので、トレーナー1人だと参加者1人1人までサポート出来ない(一般にはマシン実習を行う場合、20名までが適度と言われる)と考え、もともとメンターが必要となる背景がありました。

たまたま読んだ記事(*)も参考にしながら、スポンサー企業からメンターをお呼びすることで、企業ブランディングにも好影響を与えると仮説をたて、メンターのアサインを各スポンサー企業にお願いたところ、全社にOKを頂けました!! 本当に感謝です。

(*)エンジニアチームでブランドを築く - ワザノバ | wazanova


▶本勉強会に集まっていただいたトレーナー&メンター陣!!

クリアコード様より
kou (Kouhei Sutou) · GitHub さん(トレーナー)

okkez (okkez) · GitHub さん

piroor (YUKI "Piro" Hiroshi) · GitHub さん

 

楽天様より 楽天株式会社: Rakuten Internship for Engineers 2014 < 採用情報

Shogo Kawahara (ooharabucyou) on Twitter さん

 

DeNA様より TechStuDIG2014 | Recruit | 株式会社ディー・エヌ・エー【DeNA】

 ・sunaot (Sunao Tanabe) · GitHub さん

 

クックパッド様より 【エンジニア・総合職向け】5-dayインターンシップ / スマホアプリ開発 | クックパッド株式会社

makimoto (Shimpei Makimoto) · GitHub さん | 6/22にご参加

 


■参加人数とプログラミングが好きな学生の得意言語

クリアコード様クックパッド様の開発者ブログに取り上げて頂いたことで、技術コミュニティで一部話題となり、受付開始から3日で20名の申込を頂いたことが、運営者的には非常に助かりました。
(オライリー・ジャパンさんのうれしいフォローで先読みキャンペーンも滞り無く実施できた!)

そして公開から2週間で満席となり、日程を急遽追加し、結果的には71名もの学生の方に申込をいただき、57名にご参加頂けました!

その申込の際、得意言語を3つ挙げていただき、1つめの言語を3点、2つめの言語を2点、3つめの言語を1点としてスコアリングした最終結果(全順位)が下記の通り。

1位 Java 86点
2位 C 70点
3位 Ruby 68点
4位 Python 53点
5位 C++ 28点
6位 Objective-C 23点
7位 PHP 22点
8位 Node.js 11点 / JavaScript 11点
10位 Perl 6点 / C# 6点
12位 ActionScript 3点
13位 COBOL 1点

Java/Ruby/Python/PHP/Perl/C++/C/Objective-C/Node.js/その他 が選択肢
※その他の場合は記入式で回答

 


■ご参加頂いた方の参加アンケートをもとにした評価

全体的な満足度は下記の通りとなります。(56名がご回答)

Q. 講座の全体的な参加満足度を教えて下さい(バーをスライドする形式)
1回目(6/22)

f:id:sezemi:20140711114412p:plain

2回目(7/6)

f:id:sezemi:20140711114442p:plain

トレーナー&メンター陣のご尽力のお陰で、高い満足度を達成できました!!

 

また、リーダブルコードのキッカケを掴むこと、仲間と書き読みの関係を作ることの達成度合いは下記の通りでした。

Q.勉強会を終えて、どのようなアクションをしようと思いますか? ※選択式 / 複数選択可

1回目(6/22)

f:id:sezemi:20140711114624p:plain

2回目(7/6)

f:id:sezemi:20140711114643p:plain

色々な選択肢を用意しましたが、一つ以上のOSSのコードを読む、身近な人々とコードを読むという習慣を作る、といったものが上位にあがり、狙い通り、リーダブルコード実践へのキッカケになったと考えています。

ただし、今日仲間になった方々とコードを読むいう点ではちょっとこちらの狙いが外れているところがあるので、改善の余地があります。

 

あわせて、以下、定性的なコメントもアンケートで頂いていたので、改善点を中心に挙げてみました。

特に1回目で目立ったのが、GitHubの問題でした。(1回目からGitHubは別でフォローしておいた方が良かったと反省)

Q.本日の勉強会の感想や、具体的にコメントしたいことなど、ご自由にご入力下さい。

<Git関連のコメント -1回目->

・課題の内容が少しわかりづらかった もっとgitを勉強したいと感じた。
・一番苦戦したのは,Github へ pull request の仕方,push の仕方,など. コードを書く以前の段階が一番大変だった.
・最初のgithubの使い方のところは、操作手順を具体的に示したものがあるとスムーズだったと思います。
・git,eclipse関連の本質的でない部分で少し躓いてしまったのが残念でした。
→2回目は開催前にGitHubでやることなどをご案内したところ、特にコメントとしては出ませんでした!

 

<改善に関するコメント>
・参加者の最後の感想のまとめにおいて、(中略) 改善案にフォーカスを絞った方がよかったような気がします。
・なんか全体的に物足りなかったです。 もっとバンバンどこがよくてどこがだめで、みたいなのをレビューされる会だと想ってました。
・あの課題の流れだとOO言語はつらい気がします
・コードを書く部分は宿題にしてもらうともっと「何がリーダブルか考える」ことにフォーカスできて良かったかもしれません。
・もう少し前半(Changeする前)の時間を多くとった方が読むと書くの両方がいい時間配分でできたかも。
・各班の発表の際にリーダブルコードとの対応があればよかったかなと思う
・勉強会の目的、だけでなく、主催側の目的(リクルーティング等)も明示してほしかった
・ピザがいいです。
・メンターの方々に「自分ならこうする」というようなアドバイスをもっと頂けたら良かったのではないかと思います
・ある程度リーダブルコードに集中できるように仕様は固定してしまっても良かったと想う。
・他の人のコードを継続して書くというのは今までなくてよい経験になったが、個人的にはコードを書いてメンターの方々に見てもらう、的なものの方が良かったかもしれない
(→やはりコードレビューのご要望が多く、メンターによるコードレビューを2日目の懇親会でやってみました!!)

 

<ご飯系のコメント>
・ランチおいしかったです。
・楽しかったです。ごちそうさまでした。

 

<良かった! や気づき系のコメント>
・おいしいご飯が食べられて嬉しかったです。 プログラミングコンテストなどでは,難しい問題をいかに早く解くか,が課題になりますが,比較的簡単な課題であっても,時間制約と「読みやすさ」という目標がある状況では,かなり頭を働かせないと満足なものができないと感じました。 他人のコードを読んだり,読まれたりする,という状況が半ば強制的に与えられるのは,リーダブルコードを書く上でとてもよい練習になるということが肌で感じられました。

・短い時間の中でコードを実装しながらも,リーダブルなコードを実現するというのはとても難しいということを改めて実感した。 しかし,リーダブルなコードは可読性だけではなく機能的にも優秀になるということを肝に命じて、面倒くさがらずにリーダブルなコードを目指していきたい。

(など、他40コ以上のステキでうれしいコメントを頂きました!! うれしい!!)

 

冒頭に挙げた、主催者目線での2. 3. の達成度ならびに勉強会の狙い(1)(2)、どちらとも半分は達成できて、半分は達成できなかったなぁと思いますが、トレーナー&メンター陣の力だけでなく、ご参加頂いた学生の皆さまが非常に優秀でかつ熱心だったので、勉強会の本旨は達成できたと思っています!!

 

■ご参加いただいた方の参加レポート

最後にご参加頂いた方がブログに参加レポートを書いてくださったので、下記に紹介します。

#もし他に書かれた方がいらっしゃれば、ぜひご連絡下さい!

リーダーブルコード勉強会に参加してきた - jabropt.com

リーダブルコード勉強会に参加してきて知見を深めてきた - Labo Memo

リーダブルコード勉強会に参加してきました - あーあーそのー


 

<補足: 勉強会の写真アルバム>

https://www.facebook.com/seplus.sezemi/photos_stream?tab=photos_albums


というわけで、テクニカルな勉強会の内容や課題はクリアコード様に開催レポートを出して頂いたので、こちらでは主催者目線での開催レポートとなりました。

 

以上、今年はじめて開催した勉強会でしたが、トレーナーとなって頂いたクリアコード様、スポンサーの楽天様、DeNA様、クックパッド様のご協力のもと、盛況に終了できたと思っております。
本当にありがとうございました!!

また、休日の日曜にも関わらず、ご参加いただいた皆さま、本当にありがとうございました!!

 

参加された皆さんが引き続き、リーダブルコードを実践し、今後、この夏のインターンなどで企業の先輩エンジニアに驚きを与え、皆さんの書いたコードの評価が高まること、また他の学生エンジニアの方には、よいお手本になることを願っています!!