いやはや、前回の記事が想像以上にバズったけども、その中で否定的な意見も出てくるだろう。そんなことはない、と。お前は勉強不足だ、と言われても仕方のない記事だったと思う。
それは自分にとってプログラミングとはサービスを作るためのものという認識だからだ。それは技術志向のエンジニアとは大きな違いがあると思っている。
なんのための技術か
プログラミングは手段であって目的ではない。 出ましたお決まりフレーズ! これさえ言えば色々わかってる感が出る。これをいう人、共感できる人はサービス主体エンジニアだと言えよう。断っておくが、プログラミングが目的であっても全く問題ないと思う。むしろそういう人も必要だ。
色々な考えを持ってみんなプログラミングを学び、使っている。以下のようなパターンが挙げられる。
- 私の仕事はプログラミングをすることなので、それをいかに楽にできるかを考えています。
- 私は新しい技術を作ることに興味があるので技術を学んでいます。
- 私は技術で新しいものを作ることに興味があるので技術を学んでいます。
- 私は技術で世の中の課題を解決するために技術を学んでいます。
- 私は技術が好きなので学んでいます。
どれも素晴らしいモチベーションで、それぞれが技術向上できることだと思う。ただその中でも先述の通り、 技術志向か、サービス志向か というのに分かれる。これは縦割りの激しい大企業のエンジニアは特に前者が多く、スタートアップには後者が多い。むしろ大企業のエンジニアの求められるのは前者のみだったりすることもある。
技術志向エンジニア
技術主体のエンジニアは新しい技術だったり自分で技術を作ることに情熱を傾けられれば一流になれる。それ以外のことは考えなくても、そこだけ突出していればかなり評価されることだろう。そして最新技術を駆使して難しいシステム構築を実現したりOSSにして公開したり。エンジニア界隈で有名人になれれば最高だと思う。そんな方々を私は尊敬している。
サービス志向エンジニア
ただ創業時のスタートアップではそうはいかない。全て自分でできないといけない。そうなった時、新しい技術を作ることに情熱を傾けるべきではない。もちろん、新しい技術を積極的に使っていくべきだけども、それよりも大事なのはいかにサービスを早く作ってリリースするか、ここにかかっている。リリースの障壁、遅延となりそうなことは徹底的に排除して優先順位を決める必要がある。技術主体エンジニアの方々の作った素晴らしいコードを使っていかにユーザーに届けるかが勝負になってくる。
両者について
- 技術志向エンジニアは「いかに考えた技術を実現できるか」に価値を置く。
- サービス志向エンジニアは「いかに考えたサービスを実現できるか」に価値を置く。
自分はサービス志向エンジニアなので、早くできるかできないかが最優先で、それが難しそうなら排除したり、早くできそうならすぐ取り入れる。そういう考えの上での前回の記事だったということだ。技術志向エンジニアの方にはきっと共感できない記事だったと思う。
そんなわけで、私は勉強会よりも賞金付きハッカソンが好きである。勉強会に行く理由が私にはほとんどない。