車輪の再発明を推奨してみる
年も変わり2010年になりました。あと2~3カ月程過ぎると新社会人達がデビューする時期となります。企業によってはもうすでに事前研修といった形で、新社会人達と接しているところもあるのではないでしょうか。そこで毎年話題・問題になるものの1つが「新人教育」です。
過去に似たテーマにて書いた際(道具使いの技術者たち)、勉強会以外にはどうすればいいか後日改めて、ということを最後に書きました。そこでわたしが考えていた方法は「車輪の再発明」を部分的に行わせる方法です。
車輪の再発明と言うと、同じことを再度行わせる無駄なイメージが強いのではないかと思います。実務の面ではまったくもってそのとおりだとわたしも思いますが、人材育成を絡めた話となると位置づけが異なってくると考えます。
人材育成においては極論すると「自分達と同じ、もしくはそれ以上のことが実行できるよう」物事を教え身につけてもらうのが目的だと思われます。OJTにて実務の形を利用することにより実践的な知識を身につけてもらうのも、社内講習会などでいろいろなテーマを話したりするのも、「自分達と同じ」ことが実行できるように希望するからこそ、行っている部分が強いのではないでしょうか。
しかし、それは非常に難しいことであり、単純にOJTを行ったからといって達成できる目標でもありません。特にわたしが感じているのは、
「アプリケーションを作成できる人材に成長したとしても、小規模でもライブラリ・フレームワークを作成できる人材にはまだ遠い」
という状況です。目の前のアプリケーションを作成することはできても、ソリューション全体に適用するライブラリ・フレームワークを用意できる方というのはかなり限られているのではないか、と感じています。
これは「視点をどこに持つか」という問題で、この業界で長く働いているからできるというものでもありません。人によっては、その視点を持つ機会がない環境ということもあり得ます。個人的には長く働かれている方ほど苦手分野とされる割合は多いように思えます。それは純粋にアプリケーションのみを作成している際にはあまり必要がないものである為に、ある程度の時間を業務に費やしてきたとしても、ライブラリやフレームワークを用意するスキルが身に付かないのだとも思えます。
視点をどこに持つかというのは、言い換えると「考え方を変化させる」技術の1つです。この領域の技術は講習会だOJTだといってなかなか身につくものでもないでしょう。もしかすると、経験が最も重要なのではないか、とまで思います。
体得してほしい思想を実際に体得してもらうには「同じような状況」が最も効果的です。現状で共通部品を作られているような方々でしたら、自分がそう思うに至った状況というのもある程度は作りだすことができると思います。わたしの場合、それは「同じロジックが複数個所に点在している」という状態を目にし、そのような環境で長い間プログラミングを続けていたことが始まりでした。
プログラマは元々面倒くさがりな性質の方が多い、とはよく聞く話です。事実、わたしはそのタイプの性格でして、同じことを何度も行うのはどうにも苦手です。そのような場面では、
「次からはもっと簡単にできないものか」
「何とか楽できないか」
と、考えてしまう性格です。始まり方が良いか悪いかは別として、このような考え方を持つ人程早くから共通化させる思考が身につきやすいのではないでしょうか。一見すると手を抜いている様に思えるかも知れませんが、手を抜くことと楽をすることは、似ているようで異なるものです。
同じような状況を用意し、できるなら同じ方向性の思想を持ってほしい。そう考えると車輪の再発明を行わせることはかなり有益です。問題と思える個所を実際に目にした時、どのように感じ取りどのように解決していこうとするのか。中には思いもよらない方法で対応する人も出てくるでしょうし、全く対応をしない人も出てくるとも思えます。
対応するにせよしないにせよ、「なぜ、そうしようと思ったか」を説明できるようになればそれは1つの成功なのだとも思えます。対応しないことが誤りだとは一概に言いきれないのです。それぞれの会社、それぞれの風土によっては対応しない・できないことが最も適していることもあるのだと思います。
業務として開発を行う場合、いかにして生産性・保守性・品質を上げていくのかがポイントとなります。しかし人が成長する為には、整った環境は逆効果になることが多々あります。あえて効率的でない状況を用意することで、もっといろいろなことを考えてもらう。生産性や保守性、品質を考えつめていくと行きつく先は二極化です。そこまで辿り着いてしまうと、共通化を行うような人材というのは更に増えることはなくなるでしょう。二極化し生産性や保守性・品質が高いレベルに到達しているがために、反対側へと成長させることは逆にものすごく労力や時間を必要とします。
そこまでの状態になりますと、多くの人に育ってもらうのではなく最初からできる人を雇う、そのような方向性しか残されないと思います。かかる労力を考慮して最初からできる人を雇うのが早い、という考え方です。ですがそのような人材を望む企業ほど、そのような人材が訪れることは少ないのではないでしょうか。
このように考えると、できるだけ多くの人に成長してもらえるような環境を用意するのが望ましいと思います。そのために車輪の再発明、というのが負担の少ない方法の1つなのではないでしょうか。
コメント
インドリ
その意見に賛成します。
私も車輪の再発明を繰り返して自分を鍛えてきましたので、効果がある事を実感しております。
日本のIT業界は既に教育を放棄し、人を使い捨てる方向へと進んでいると感じますが、アジャイル開発では技術の変化に対応するべく知識を共有したり、互いに切磋琢磨する事が推奨されています。
もし、車輪の再発明をする余裕がない時は、今まで自社が行った小規模な仕事を新人にやらせるのが良いかと思います。
そうすれば、効果的に新人教育が出来ます。
今までの問題も纏めて振り返って改めて感じるのですが、全体的に今の日本は変化に弱いのでしょうね・・・
それが首を絞めている事に経営陣は気付いてないか、変えるつもりがない。
ですからやはり技術者が変わらなければ駄目ですよね。
そうした技術者達が業界を超えて存在するようになれば、この業界を変わると私は思います。
Ahf
インドリさんコメントありがとうございます。
>車輪の再発明をする余裕がない時は、今まで自社が行った小規模な仕事を
>新人にやらせるのが良いかと思います。
私も似たように考えました。自社案件であればさじ加減次第で、考えてほしい部分を用意することもできるでしょうし、対応策も出す側としてわかっていると思います。もしかすると個別に内容を用意して教育するよりも、効果的かつ効率的にできるかも知れませんよね。
変化に弱い企業、または人が増えているというのも同意です。
個人的には「情報発信する人」というのは殆どの方が変化に強く、反対に受身な方というのは殆どの方が変化に弱いのかもしれない、等と感じています。
saki1208
Ahfさん、こんばんは。
saki1208です。
>>車輪の再発明をする余裕がない時は、今まで自社が行った小規模な仕事を
>>新人にやらせるのが良いかと思います。
>私も似たように考えました。自社案件であればさじ加減次第で、考えてほしい部分を用意
>することもできるでしょうし、対応策も出す側としてわかっていると思います。もしかす
>ると個別に内容を用意して教育するよりも、効果的かつ効率的にできるかも知れませんよ
>ね。
同意です。
当然仕様が理解できていますし、過去の案件について見直す時間もとれます。また、新しい
言語などを習得しようとする場合にも非有効ではないかと考えてます。
場合によってはデザパタやリファクタリングについても理解させることができるのではない
でしょうか。
saki1208
すみません。誤字が...
○:有効ではないかと
×:非有効ではないかと
途中の文章を消したのですが、中途半端に残ってしまいました。
Ahf
saki1208さんコメントありがとうございます。
>場合によってはデザパタやリファクタリングについても理解させることが
>できるのではないでしょうか。
そうですよね。そのように更に発展した方式を身につける事にも有用ですよね。
デザインパターンなど、口頭だけではピンときにくいものも、実際に行ってみることによって理解、習得しやすくなるのではないかな、と思います。