分業の話とか高学歴の話とかqune分業の話とか高学歴の話とか2009/02/07こちらの話から。喧嘩を売るわけじゃないんですけど,現場を知らない人間の設計(企画)に苦しめられてる人の話として(笑)。現場を知らない人間の設計に苦しめられる話、てのはもう耳タコなんだけど、だったらあんたが設計しろ、というと、不具合の改善しかしてくれない。抜本的に発想を変えた新設計とか、絶対に(と書くといいすぎかもしれないが)やってくれないからね。ようは役割分担なんだよ。そりゃ何でもわかってる完璧超人がいれば最強なんだろうが、現場を知らないなりにコストを半減できる新設計をする大卒がいて、「ココとココ、こんな設計じゃ実際には作れないよ。いう風にしなきゃ」とアドバイスする現場の人がいれば、結果は同じ。あたしの職場は,しがない町のソフトハウス(もう死語か)なもんで,徳保さんのとこと比較するもんでもないんだろうけど,ソフトハウスの場合は小さいとこほどなんでもできなきゃいけないし,できない人は「役立たず」の位置づけだったりする。実際あたしの場合,ほとんどお客さんや営業さんの要望から,ほとんどそのままの形で案件が降りてくることが多かったりします(で,ボヤキも出る)。今は製品関連のプロジェクトにいることから,企画-外部設計-詳細設計-プログラム設計-実装まで全て関わっている。テストにはさすがに関われないけど。各工程のマイルストーンで,上長のレビューなり承認なりをもらう体制です。全部をまんべんなく回すのは絶対に無理だから,企画や外部設計あたりは,お客さんや(元技術畑の)営業さんがまとめてくれていることも多いし,ひとりでやってるわけでもない。開発チームのメンバーは,みんな設計から実装まで,一通りのスキルを持っているし,誰と誰が設計役と実装役を交代しても大丈夫,みたいな体制になっています。ことで,技術者を名乗っておきながら,実装のひとつもできないようなのは,小さい職場からは迎えられない。どっちがいいかは知らないけれど,設計専門を名乗る人は大きなところにいてください,としか言えなかったりします。チームのメンバーは本当によく設計の勉強をしているし,新しく学んだことをすぐさま実装に移す練習もしている。今は新しい製品を作ってて割と忙しいから,そっちまで手は回っていないみたいなんですけど。これはかなり独断的な私見だけれども,殊小さなソフトハウスにおいて,「分業する」ということは,「能力的にできないことを補い合う」ことではなくて,「物理的・時間的に手が回らないところを補い合う」ことだと思っていたりします。能力的にできないことと,できるけど身体がひとつしかないから回らないことは違う。他方,ソフトウェアの開発工程において,企画-設計-製造-テストといった工程に分けて,それを分業する仕組みがなぜ必要なのか。ここら辺は考えなくちゃいけないと日頃から思っています。引用徳保さんの話には,個々人が得意なことを踏まえて分業することで,でロスを減らすという,経済学的な理由があるんだと思います。これは現代企業が採る戦略としてスタンダードだし,至極正論なんだと思う。規模の小さな企業では,工程を細分化して,それぞれの工程だけの専門家を使用することで生じるオーバーヘッドが,かなりのリスクになる。わけの分からん設計を読まされて,「これどういう意味よ?」とか言ってる時間が,予算的にも工数的にもリスクになるということです。うちの場合は,アジャイルとまではいかないものの,工程間のオーバーヘッドを極力少なくする戦略を採っているんだと思う(多分)。した工程間のオーバーヘッドを低減する戦略には規模的な制約があるわけで,今作っているソフトも,使い回しのライブラリも含めて20万ステップいくかいかないかくらいの中規模アプリだったりします。50万ステップを越えると,さすがにこの方法で管理することはできないと思う。高学歴の話をすると,大卒の場合,「大卒のくせに」って言われるのも仕事のうちってとこがあるので,個人的には仕方ないと諦めていたりします。あたしなんか,コテコテの文系学部卒なのに「大卒のくせに」と言われてる。最近になって,周りもできないことができるようになってきたので,有無を言わせない機会も増えてきたんですけどね。意外と体育会系な環境。