従来のソフトウエアエンジニアにとって、マネジャーになるのは少し悩ましい変化である。「35歳定年説」などと呼ばれ現場の引退感を伴ったイメージが強く、コードを書くことからガントチャートやエクセルを使った仕事に変化する分、マネジャーへの転身は給料アップにつながるため、「大人」になるプロセスという考え方もまたあるだろう。
一方で、主にWebサービスをビジネスとして営む企業ではマネジャーの役割が少し異なる。Webサービス企業ではエンジニアリングマネジャーと呼ばれるマネジメントの職種が近年話題になっている。さらにプロダクトマネジャーと呼ばれる職種も重要視されている。
2019年はエンジニアリングマネジャーとプロダクトマネジャー、それぞれをテーマにしたカンファレンスが開催されるなど、エンジニアの職種に関して今最もホットな話題と言える。当社もスポンサーとして参加させていただいた。これらの役割が従来のマネジメント職とはどう違うのかについて触れていきたい。
Webエンジニアに求められる職能の変化
従来のソフトウエア開発における職種の構造は、主に製造業の組織構造の影響を受けている。
ハードウエアを作る製造業においては、企画や設計を担う部門とモノを作る部門が分かれている。なぜ両部門が分かれているのかと言えば、職能の違いもさることながら設計工程に続く製造工程にことのほか時間がかかるからだ。
時間軸や人数規模、職能が違うため分けておかないと効率が悪い。このため組織として分離する形態が定着したと考える。またコモディティー化したプロセスは外注したり分社化したりして資本的にも分離するのが主流になり、製造ノウハウを持たなくても製品が作れる状態にさえなっている。
従来のソフトウエア開発においてもこの構造が踏襲された。要件定義や上流設計を担うSEとソースコードを書くプログラマーとで役割が分かれている。規模の大きい開発においてはハードウエアの製造工程と同様に、ソースコードを書く工程を「製造」と呼ぶこともある。このような組織構造では、上意下達の構造、つまりウオーターフォールによる開発手法が適している。
それに対して、昨今のソフトウエア開発はよりインタラクティブに作業を進める。Windowsが主流になってからVisual BasicなどのRADツールが登場し、ビジネスロジックや使い勝手を考えながらソフトウエアを作る構造が整った。その後、Webビジネスやスマートフォンアプリが勃興し、UI(ユーザーインターフェース)やUX(ユーザーエクスペリエンス)を重視する風潮やソフトウエア開発言語の生産性の向上が相まって、ソフトウエア開発のハードルが相対的に下がった。ソフトウエア開発のスキルは特殊なものではなくなった。
誤解を恐れずに言えば、従来のプログラマーが職人的な特殊工程として分離されていたのに対して、昨今のプログラミングはソフトウエア設計の一部分とコードを書く工程が共存している。