プログラマーに求められていることに関する考察(2020年)
プログラマーと言うと、もちろんプログラミングを主な生業する人を指すわけですが、時代によって求められてくる役割も変わってくると考えています。20年前に求められていたことと2020年の今求められていることは違うだろうし、今回は個人的に感じていることをポエム形式で書いてみたいと思います。
私がけっこう好きなシリーズ、日経XTECHの「木村岳史の極言暴論」で少し前に「自称プログラマー」の哀れな末路、仕組みを考えないコーダーはエンジニアにあらずという記事がありました。これについてけっこう自分の考えてる点と共感する点が多かった気がします。今後、大規模システムの開発プロジェクトも減るだろうし、純粋にコードだけ書いているようなプログラマーは、食いっぱぐれる可能性が高いとこの記事では書いてます。この見解には概ね私も同意で、もう少し私的に掘り下げてみたいとおもいます。
大規模システムの開発プロジェクトが減るかも?
まず、大規模システムの開発プロジェクトが減る見込みという要因について書きます。要因については私的には2つ考えていて、「クラウドやOSSの広がり」と、「APIの浸透」です。
1点目については言わずもがなと思いますが、クラウドやOSSは今や広く使われていて、これらを使わずしてシステム開発を行うケースのほうが少ない気がします。すでにベースがある程度ある状態で、開発がスタートできるので、一から全て開発する必要性がなくなり生産性も以前より高くなってると思います。
2点目はAPIの使い勝手が良くなってきて、システム間連携が以前よりハードルが下がってる点です。昔はシステム間連携というとメチャメチャしんどくて、これをやるくらいならシステム一つにしちゃえばいいじゃん、的な雰囲気もあった気がします。今だとサービス毎にシステム分けるのは当たり前になってきていて、システム単位の分割が容易になってきてるということは、一つ一つのシステムの大きさも小さくなるということです。今や企業間のサービスをAPIでつなぐことも珍しくなくなってきて、この流れはより一層進むような感じはします。SaaS普及のラストピース? APIエコノミーの記事にある、APIエコノミーのような取組みなどが挙げられます。
プログラマーの働き方はどうなる?
では、一つ一つのシステムの開発規模が小さくなると、プログラマーの働き方はどうなるか。
大規模なシステム開発だと、ウォーターフォールの形式がだいたい採用されると思います。理由としてはシステムの規模が大きいので、工程ごとに一辺にやるのが効率的なのと機能間のバランスも考慮が必要なためです。もちろん、工程毎にメンバーが入れ替わるのが普通にあり情報伝達コストはかかりますが、それよりも各工程を集中的に取りかかるほうが、生産性が上がるからだと私は考えます。
では、システムの規模が一つ一つ小さくなったらどうなるか。各システムにおいて関わるメンバーの人数も少なくなるし、おそらく各工程をまとめてやる効率化よりも情報伝達コストのほうが重くなる気がします。ので、一辺に全部決めてから開発するよりは、決まったところから順々に開発していき、チームメンバーも入れ替えせず固定して開発を進めるほうが、全体として無駄がない開発が実現できる可能性が高いです。
この開発スタイルが広がりチームにおける人数が少ない中の開発だと、エンジニアも複数工程をカバーできないとキツくて、コードしか書きませんだとツラくなっていくと考えられます。もちろん、各々のメンバーで得意な領域があると思いますが、そこを伸ばしつついかに周辺領域をカバーできるかってのが大事になってくると感じます。また、情報伝達コストを減らすという観点だと、ビジネスの背景だったり共通の認識を持つということも重要です。いわゆる「ドメイン」知識をいかにチームで体系化できてるか、という点が大事になってくる気がします。
Discussion