shanon's note

プログラミングとアニメがすき

Webエンジニアを「工場」と表現することについて

アプリエンジニアのチームを「工場」と捉えてプロダクトを効率的に作る方法を考えよう!的な話を目にして、直感的に好きじゃないな…と思った。

ちゃんと言語化して納得する必要があると思ったので、整理してみる。

モノの作り方

プロダクトの作り方について、以下2パターンの方法があるとする。

  • 決まっているものを作る(=完成品のイメージがある)
  • 決まっていないものを作る(=完成品のイメージがない)

作るものが完全に決まっていて、それをいかに効率的に作るかという話であれば前者、
例えば、車や家電、社会インフラの大規模システムなど・・・。
作りながら改善して見えないゴールに向かって走るのが後者。
例えば、新規のWebサービスやアプリ開発など・・・。

工場とは

こう‐じょう〔‐ヂヤウ〕【工場】
一定の機械・器具を設備し、継続的に物品の製造や加工などを行う所。また、その建物。こうば。
http://dictionary.goo.ne.jp/jn/73372/meaning/m0u/

工場 こうじょう factory
製品を生産する目的のために,土地,建物,設備,技術,労働力などを合理的に配置した場所をいい,資本主義の形成とともに出現した近代的な生産方式 (工> 場制生産) である。工場は経営上の要請によって,特定の製品を品質,性能,コスト,納期を管理して生産する。
https://kotobank.jp/word/%E5%B7%A5%E5%A0%B4-62289

「特定の製品を品質,性能,コスト,納期を管理して生産」という一文からも分かるように、工場でモノを作るには「決まっているもの」が必要で、前項の話で行くと

・決まっているものを作る(=完成品のイメージがある)

に該当する。
工場は決まっているものがなければ作れない。

Webエンジニアの心理

Webエンジニアを「工場」と表現する場合の話なので、Web業界の話をします。

Webサービスやアプリ制作において、作りながら仕様が変わるのは珍しくないし、ぶっちゃけみんなそれに慣れている。(とはいえ、無茶な要求が来たら憤怒することもしばしば。)
個人的には、良いものを作るためならそうあるべきだと思っている。
これはもちろん、好きなだけ仕様が変わってよいという話ではなくて、仕様に柔軟性を持たせて常にいいモノを目指していくぞ!!!という姿勢が根底だったりする。
Webエンジニアは、こういう考え方を持っている人が多くて、自分の作るモノに対して能動的な人が多い。だから仕様変更が来ても内容がもっともであれば応じるし納得する。(少なくとも自分の周りの人はそういう人ばかりで恵まれているなぁと思う。)

能動的開発感を封殺する工場

そのような分野において、特定のモノだけを作る工場という考え方は向いていないと思った。
言われたものを作るだけなら簡単だし効率的だろ!って気持ちがわからないわけではないけど、「特定のモノ」を越えてはいけない開発は、あまりにも技術的裁量が狭すぎるし、場合によってはやらされ感に行き着いて仕事がつまらなくなる。
だって「こうしたほうがよくないですか?!」って言っても「これはもう決まったものだから・・・」って言われたらつらいもん。
能動的開発感を信条とするWebエンジニアにとってこれは致命的で、テンションの低いエンジニアの生産率はお察しである。

工場化のメリット

逆にメリットを考えてみる。

  • QCDの管理ができる
    作るものが決まっていて、エンジニアのリソースが確定していればDeliveryとCostは逆算できるし、Quality担保のためのスケジューリングもしやすい。

ただ、工場化してウォーターフォールにしないとQCD管理できないというわけではないし、アジャイルならスクラムが一般的になりつつある。

まとめ

Webのモノづくりにはある程度の技術的裁量が必要で、工場化はあまり向いていないのでは。
工場がダメ、じゃあどうすればいいの???に対する最適解はまだ考え中です。ごめんなさい。

賛否両論、いろいろご意見を頂けますと幸いです。
とりあえず、いいモノ作りをして最高をcreateしたい。