ミッションたぶんPossible

どこにでもいるシステムエンジニアのなんでもない日記です。たぶん。

仕事に役立たない社内勉強会を企画してみる

はじめに

 前回からの続きです。


 勉強会は今回3つやる予定だと前回で書きましたが、もう一つに考えているのが「アルゴリズム」と「デザインパターン」です。

Flex3初級勉強会」から得た教訓


 今年の年始から始めたFlex3の勉強会はもう少しで終わりを迎えますが、3回目の開催ながら新しい発見がありました。


 第2回の勉強会では、そもそもEC卒業したての新人がいて、まぁ直属の部下だったんですけど、こいつが致命的に物覚えが悪いので教えるのに相当苦労したんですが(おかげで一からプログラミングを教えるってことがどういう事か分かった気がしましたw)、今回は大体入社から一年以上はキャリアがあり、とりあえずJavaはなんとかなる、という状態の人ばかりが集まりました。


 ところが案外出来ないんですよ、ロジック組むことが。

 仕事ではWeb系の開発ばかりやってきたせいか、本格的なUIの開発が実は初めて、という人が多いのも事実でしたが、そもそもロジックをちゃんと組める、というところが怪しい人がチラホラ居たのです。


 上のスクリーンショットFlex3勉強会の課題の1つ、Flexのサンプルに良く用いられるショッピングサイトを実装するというものです。この課題の中に「DataGridもしくはTileListで作られた一覧から、同じくDataGridで作られたショッピングカートに製品をDrag & Dropで入れると、合計金額を計算し、もし同じ製品を2つ以上入れたら一行にまとめて数量だけ加算する」という機能があるんですが、ノーヒントだと正解に辿り着けない人が半分くらいいました。


 確かにこの課題の中では一番難しいポイントなんですけど、単なるマッチング処理、こう言っちゃなんですが「基礎中の基礎」です。これが出来ないと「こいつ、日々の業務でどうやってプログラム組んでんだ?」とつい心配してしまうレベルです。まぁFlexの特性を知ってないとできない部分ではあるんですが、要素が複合的になるとパニクってしまうようです。

プログラミングで飯を食うということ、食わせるということ


 一方で自社の社員の何人かに話を聞いてみると、どうもプログラミングをやりたいという人は結構多い。どういうプログラミングをやりたいのかは分からんが、とにかくSEっぽい仕事よりはPGとしての仕事をしたい、という人が少なからずいます。
 その割に会社の中にはプログラマのまま大成できるキャリアパスが無くて、そういう人たちから辞めていってしまう傾向があるように感じられました。


 それが会社の方針なら別に構わないんですが、会社は本音か建前か知らないけどプログラマは必要だと言う。だとするとプログラマ気質の彼らが辞めてしまうのは財産の損失以外のナニモノでも無い訳です。
 そもそもうちの会社に定着している「プログラマ」という言葉の程度が非常に低いのです。フレームワーク使って一通りWebアプリ作れればそれで割とプログラミング出来るようになった気がする人が非常に多い。だからプログラマの地位が非常に低くて、「管理系じゃなきゃ駄目だろ」的な巫山戯た意見が横行してるんです。

 所詮フレームワークを使ってのプログラミングは生産性を上げる為には必要だけれど、それだけではプログラミングの本質は何も語れない。それが入口でも良いけど、道のりははるかに遠い。覚えなくちゃいけないことはものすごく多い。フレームワークがただ使える、ただそれだけで満足されると非常に困るんです。


 でもそれは上役や会社にも問題があって、彼ら自身が大した技術者じゃないからそれに気付けないんですよね。だから適切なコーチングが出来ない。優秀なプログラマになる土壌が、うちの会社には無いんです。これは弱った。


…ホントに弱ったことか?

アルゴリズム」をテーマに選んだ理由

ないんだったら自分で作ればいいのよ!


           by 涼宮ハルヒ


 という訳で、プログラマを育てる土壌が無いんなら自分で作ることにしました。


 話を冒頭に戻します。今回2つ目の勉強会のテーマは「アルゴリズム」と「デザインパターン」です。主にアルゴリズムに比重を置こうと思っています。


 これを思いついたのは現場で残業をしていた時でした。オレの後ろの女性が残業時間になると、普段彼女が従事している案件の業務ではなく、その会社のR&D的な部署の手伝いをしているようで、毎日遅くまで一生懸命何かを作っています。その彼女の手元に置かれているのが「リバーシアルゴリズム」という一冊の本。

 どうもリバーシ、つまりオセロの次の手をコンピュータに考えさせ、得られた結果をどうやって見せるか、そのUIについて検討しているようです。あんまりジロジロ見ても失礼なのでチラッと見ただけですが、未完成ながらとても興味が惹かれる楽しい画面になっていました。話を聞いてる限りそんなにキャリアもないはずなのに、色々積極的にトライしていて凄いなぁえらいなぁと感心するばかり。

ロジックを組む力を身に着ける


 それ自体は本当に凄いんですが、オレが興味を持ったのは彼女がトライしているリバーシやUIではなく、本にあった「アルゴリズム」の文言。オセロのCPU対戦思考をプログラミングでやろうとしたら、相当ロジックを組む力が養われるんじゃないか? そう思ったんです。


 そもそもプログラミングとは、極論を言えば「分岐」と「繰り返し」しか手法がありません。その2つの組み合わせだけで複雑な処理を自動で行うようにする、それがプログラマに与えられた使命です。
 だったら「業務に役立つレベルで」とかヌルいこと言ってないで、より複雑で細かいAPIとか気にしないでガリガリ書くようなプログラムにトライした方が、ロジックを組む力が鍛えられるんじゃないかと思ったんです。しかも、出来るだけ楽しんで。


 当面は、プログラミングコンテストとかで出されるような課題、例えば「迷路の最短距離を自動的に求めるプログラム」とかにみんなでトライしよう、というもの。テトリスぷよぷよみたいな割とシンプルなゲームを作ってもいいと思ってます。もちろん、リバーシやチェスのような思考アルゴリズムにも挑戦したいですね。

デザインパターン」をテーマに選んだ理由


 デザインパターンをテーマに追加しているのは「先人の知恵を手っ取り早く吸収できるのがデザインパターンの習得ではないか」そう思ったからです。あと、今回は「仕事には直接結びつかない勉強会をやる」と明言するので、「デザインパターンも覚えさせますよ〜♪」と言っておくのは小うるさい連中*1を黙らせるにはちょうどいい、という政治的事情もあります。デザインパターンやればJavaの勉強になって業務でも役立ちそうに見えるから口が出しづらくなるんですよねw。


 オレのモットーですが、「勉強会はエンターテイメントじゃなくちゃいけない」んです。ちょうど今日UEIの清水さんが素晴らしい文章を公開していましたが、ビジョンがあって楽しさを享受出来なければ、単に「仕事ができるようになります」「給料が上がります」とかいったえらそうな建前だけでは続けられないと思うんです。その辺はまた次回に書こうと思いますが、今うちの会社にフットサルクラブや野球部と同列で、この勉強会が社の文化部的な位置付けになれば良いと考えています。


 また次回に続きます。


追記

阳光影院 - 阳光电影网,阳光影音,百度影音,音乐视频,西瓜影音,吉吉影音,优酷电影,电影预告,电影评论,电影资料,综艺视频,电视剧,韩剧,动漫,权利的游戏,西游,极限挑战,阳光影院


 これ、オレも強くそう感じました。今日の午前中の勉強会でも「最初は一回日本語に直して処理を理解しなさい」と教えた直後に読んだので、自分の教え方が間違ってなかったようでホッとしました。参考にしたいですね。



  

*1:だいたいこういうことを言い出すのは中堅ドコロの頭の固い中間管理職に多い。まぁ聞く気は全く無いけどw。