ぷっちん日記
2012-03-29 (木) 受託開発と技術者の育成 [長年日記]
■ 受託開発と技術者の育成
今のところ、私たちの会社(万葉)は受託開発がメインになっている。
世の中には、受託開発 VS 自社プロダクト/サービス提供 という対立軸もあって、それについての私の見解は、こんな感じになる。
まず、純粋に「自社プロダクト/サービス楽しそう。やりたい!」という思いがある。自分たちの作りたいものを自分たちで作るというのはとても明快であり、齟齬が生まれにくい。作る立場として、とても気持ちが良いのはわかっている。
一方で、会社として次のどちらに力点を置くかというテーマがある。
- ある目的を実現するために自社プロダクト/サービスを作る。たとえば「世の中をこんな風に変える」ために。
- 社員が、ソフトウェアの開発をすることで価値を提供できるようにする、すなわち食べていけるようにする。
前者の場合、自社プロダクトやサービスの開発というのは目的達成の一部であるので、話の展開によってはソフトウェア開発から離れることもありえる。また、基本的に、プロダクト/サービスを開発するのにもっとも経済的な、効率のよい形を求めることになる。
つまり、ソフトウェア開発を安定的に長く仕事にしたいという人にとっては、次のようなリスクがある。
- 前者のような会社では、プログラミング初心者を育てることよりは、スキルの高いエンジニアを迎え入れることが重要となる。すなわち、未経験者が一人前になるためのパスとしては機能しにくい
- ソフトウェアを開発するという仕事が会社の目的と合致しているときは最高に楽しいが、それがズレてメインロードでなくなるとストレスが増える。開発の仕事そのものがなくなる危険もある。
- 「何を作るか」が偏りやすい。
万葉の出発点は、あきらかに後者である。世の中を変えられるのであればどんな職種でもやります、という話ではなく、ソフトウェア開発を長く楽しむために良い仕組みを作りたいという気持ちがある。もちろん、ソフトウェア開発を行う前提で自社プロダクト/サービスを作ることは可能なので、それは是非やりたい。ただ、「安定的に長くソフトウェア開発で食べていく」という目的には受託開発は実はあっている。なので、そう捨てたものではないと感じている。
特に最近、この形態だからこそできるのではないかと感じているのは、エンジニアの育成だ。
万葉は、実はRuby未経験者を多く採用してきている。Ruby経験の有無や、プログラミング経験の長さにはこだわっていない。それは、教えることができると踏んでいるからである。実務の品質に影響しない割合で初心者を入れ、チームで、社内でカバーしながら、実務をやってもらいながら育てることができる。実際に、ここ数ヶ月は私自身もかなり教育タスクが多かった。いろいろ知見が得られて楽しかった。
このような育成は、すでにできあがった巨大なサービスの改良や、新しい高度なプロダクトの短期リリースが至上命題であるような職場では難しいと思う。もし世の中の現場が全部そんな感じであれば、初心者が一人前のエンジニアになるためのパスはとても細いものになるのではないか。
そう考えると、私たちも、ごくごく小さいものではありながら、一応の社会的意義というか、役割を果たしているんじゃないかな。というように思えてくるのである。