エンジニア社長座談会 #4

長い間下書きにいたのを思い出したように引っ張り出す。まとまらなかったのでばっさりと半分くらいカットして。カットしてこの長文なのがなさけないけど。

これがラスト。今回は技術周りの話でしょうか。自分が新人だったころの話とかをしてる模様。


おいらが新人だったときを考えるとやっぱり今とは大分違いますね。


仕事が楽しくてさらに勉強してのめり込んだという話が出てたけど、仕事が楽しいというのはどの業界だろうがほんの一握りの人だけの幸運な出来事だと思う。誰もやりたがらないのをやってくれるから仕事になるのだと思うし。おいらは趣味のプログラミングが先にあるべきだと思っていて、その技術がたまたま仕事でも活かせるのがいいと思ってる。仕事の勉強だけじゃ疲れるでしょ。


いったいいつからプログラミング=お仕事のイメージになったんだろう。この10年くらいかなぁ。おれ、このイメージいやだよ。


一言で新人教育といっても、業界に入ってからの「変数ってなに?」というところから勉強する人と学生時代に授業で習った人とではさすがに差がありすぎて範囲が広すぎて一括で適用できない。経験者には眠く、未経験者には難易度が高すぎると思うんだよね。未経験者で高々3ヶ月程度じゃ現実的なコードを書くのは難しいよ。おそらく使い物になる品質に一番近いのはCOBOLくらいかと。だからCOBOLは侮れない。用途、出来ることを絞って集中して教えるからね。Javaだとぜんぜんダメ。Javaは単純な四則演算すら難易度高すぎ。メソッドで扱うのがたるいのもそうだけど、そもそもBigDecimalは所詮BigIntegerに10進スケールつけただけだからかなり扱いにくいんだよね。


だから以下のように「オブジェクト指向は教えないでください」となる。
http://d.hatena.ne.jp/nowokay/20090513#1242174919
言語というのは実装であって、まずはテクニックではなくオブジェクト指向以下の基礎的なところからやってくださいというわけですね。学生時代に専攻していた人にとっては笑う対象なのでしょうけど、未経験者を大量に雇うのが普通のSI業界ではこれが一番現実的。

ブックマークコメントにある「全角で書いて〜云々」はいたってごく普通の話で驚くことではない。知識が無ければそんなものでしょう。まずはコードを理解せずに打ち込むことだけやるのですから1とIとかLの小文字とかカンマとピリオドだとかが混じるのも普通です。おいらだってBASICやりはじめたときはそんなのだらけだった。結局ミスが減るのは言語を理解して、ここに数字が来るはずが無いとか、文末なのでコロンではなくセミコロンであるはずとか理解してからのことだったし。


もっとも変態的に天邪鬼なおいらの場合「プログラムの楽しさだけ教えてください」といってしまいそうですがね。楽しければ継続するわけで、今は出来なくても数年後にはできるようになっているでしょう。プログラミングにおいては「面白くない」と「適性が無い」がほぼイコールだと思うんですよね。だからおいらの新人教育は面白さに重点が置かれます。面白くなければ意味が無いと。

創るJavaはそのへんがポイントになります。やっぱりキャラクターが回転されて表示されたりビットマップやJPEGなどのファイルを紙にプリントアウトしたり、マルチスレッドの説明で実際にボールを並列に動かすのは楽しいわけですよ。おいらは画像も用意せず、「明日は画像処理行うので好きな画像ファイル用意しておいてください。」とかいうわけです。人によって好きな画像がばらばらですが、趣向が良く現れます。壁紙持ってくる人もいれば小さいアイコンもって来る人とか。そしてそこがまだぎこちない新人同士の横の会話も生まれるきっかけになるといいですね。

そもそも楽しくプログラミングをすための情報が少なすぎる。どうしても業務系、お仕事関係ばっかりになってしまう。お金が動くのでこっちのほうが書籍にしても有利なのは分かるんだけど寂しいよね。

実はパーソナルなコンピュータの終焉はとっくにきていたのかもしれない。台数が出たのは職場に普及したというだけであって、一般家庭にはいまだに普及しているとは思えないし。むしろ自宅でパソコン触るのをやめた人が多い気がする。みんなケータイ。



未経験歓迎という言葉が多すぎるこの業界っておかしくね?未経験者から仕事で汲めるレベルになるまでは適正があってもどう真面目にがんばってもやっぱり2,3年くらいはかかる。大企業でキャッシュに余裕があって数年稼げなくても問題ない未経験者を抱得てるというのならまだ分かるのだが、中小に多いのが気になるところ。

SQLが嫌いだから触らないという人はいままでであったことはないかなぁ。嫌いでもいやいやながらみんな触ってるでしょ。問題なのは毎回集められる人がばらばらでその現場に入って初めて言語、フレームワーク、データベースを触れるといったことが多いということ。未経験者歓迎ってそういうことかと思いたくなりますよね。この現場で使うスキル無いんだけれども本当に大丈夫?ってみんな思ってると思います。勉強期間が1ヶ月を超えて用意されてるところなんて聞いたことがありません。結局プロジェクト終了あたりでやっと理解してきた、初期に書いたコードひどすぎて見る気もうせるというのがいたって普通の体感では無いでしょうか。今の理解度ではじめたかったとか。

大手でも現実的に技術者を正社員として雇用し続けるのが無理なわけですから逆転の発想にしてみるのもいいかも。


ここから妄想はいります。

個人の持ってるスキルを国でもどこかの第3者機関でもいいからどこかが把握して、派遣業者を経由させるのではなく、そこが元締めになって一切の派遣形態を把握する。手数料は一律10%とかきめちゃう。もちろんスキルのある人は引っ張りだこになりそうですし、そうなると金銭面でも色がつくでしょう。メンバーの構成にしても少数のエキスパートの人だけで作るプロジェクトとか、出来る人の割合等を調整できたりするといいですね。中小企業はスキルを身につける場としていつでも外に出せるように毎日朝から夜まで勉強させる。元締めの搾取した手数料からこの勉強期間を負担させる。

じゃあ、出来るできないの評価はどうするのかというのがあるけど、ここを試験とかにするとおそらく回らないと思うのは正しい。一番簡単なのはプロジェクトをぬける際(終了とか途中で契約破棄とか解雇とかでも)自分と同様のスキルを0評価して相対的にプラスマイナス2までの5段階でつけるようにさせる。どのプロダクトで使われる言語とフレームワークやライブラリ、データベース、環境等細かい設問を用意して。こうすることによってスキルだけではなく、プロジェクトで使われた言語やライブラリ等の流行や傾向がわかります。これらの情報は公開することとして、今はJavaの仕事が多いみたいなんでJavaをメインに勉強する、DBはPostgreSQLが多いみたいなんでこれをやってみようとか勉強する際の指針にもなる。

また、技術者だけじゃなく、リーダーや設計の評価もしてもらえればあそこの仕事は上の連中が出来が良い設計かくからデスマになりにくい優良プロジェクトだとか、そういうのもしっかり評価される。いわゆる上流(笑)やってる人だと上からの評価も金銭的マネジメントを中心にされると思うけど、それ以外の大事な要素と思われる現場受けの良い、技術者に好かれるリーダー、設計者というスキル(これは絶対スキルですよ)の確認も出来ることに。

今だとどれを勉強したらいいのか分からないとか行き当たりばったりが多すぎると思う。もちろん、ひとつのものに集中してエキスパートになるのもいいし、広く浅く勉強してどの案件もそれなりにこなせるようにスキルを磨くのも良い。なんか数値いじりのRPGっぽいけど気にしない。