非真面目なウォーターフォールとアジャイル、そしてエンジニアとマネージャに思うこと

こんな20年を送ってきたのですよ・・・

約20年弱 日本のソフトウェア業界で働いてくると、思うことや希望や絶望や色々なことを心に抱えるものです。

私自身は、入社に希望を持たないコンピュータ企業に1.5年、希望を持つ独立系ソフトウェア零細企業に約7年、フリーランスを約7年、SAP/モバイル開 発系SIベンダーに1年、独立系自社サービス提供企業に1.5年、努めてまいりました(そして今現在も進行形)。

そして、一部オフショア開発で中国企業との関わりを持った以外、日本の企業でしか働いたことはありません。
非常に閉鎖的環境であり、とはいえ、フリーランス時代の経験は、ビジネスのバリューは小さいとは言え、通常の会社員でいるよりは各方面のビジネスに触れることはできたのではないかと思っています。

プログラマではなくマネージャーではなく「ソフトウェアディベロッパー」でいたい

そんな中、「ソフトウェアディベロッパー」という職業に思うことがあるのです。
いわゆる、典型的な(特に大企業的文化)に感じることは、「コードを書く人間=取り換えの利く下っ端」「管理職=上流階級」的な文化が強すぎるのではないか、ということです。
これについては、ベンチャー文化が強い会社、零細企業などではこの傾向が弱いことも事実だと思っています。逆に金を用意し人を投入すれば解決する状況が多い事も理解・経験しております。

また「管理職」、つまり、スケジュールマネージメント、顧客との折衝、コストマネージメント、人的リソースマネージメント、顔の広さ等は、重要な能力であることも重々承知しており、これらはただ本を読み勉強するだけでは身につかない能力であることも認識しています。

ウォーターフォール好きですか?

で、思ったのですよ! 「ウォーターフォール」的 堅物主義 が強くないですか、と。

私自身は、無責任に言うと改革派的人間であり「アジャイル」いいよね!派なのです。
そして、自分が所属する会社はビジネスの軸足を自社サービスの提供に置いています。エンタープライズ寄りのシステムではありますが「クラウドサービス」という立ち位置を取れるプロダクトサービスであるため、新機能開発等においてはアジャイルなスタンスが取れる環境にあります。

ウォーターフォール開発は、厳密な要件定義、厳密な上流設計、厳密なアーキテクチャ定義、厳密な詳細設計を良しとします。つまり素晴らしいウォーターフォール開発プロジェクトであればあるほど、下流工程のプログラミングは誰にでもできる、むしろ考えるな!言われた通りに手を動かせ!な世界なのではないかと思うのです。

つまり、上流工程=出来る人間たちの領域、下流工程=誰にでもできる領域、的な住み分けが起こりやすいのではないか、と。

一方「アジャイル」は、と考えます。出来るアジャイルプロジェクトは、すべてのメンバーが考え、意見し、全員で前進するプロジェクトなのだと思います。同時に成果物として、思考する事、その思考の成果として動く成果物をイテレーション毎に繰り返し生み出すのだと思います。

つまり立派な設計書を作る事が仕事のすべてではないし、部下を管理する事が仕事のすべてではない、「プロジェクトを推し進める本質的な成果物」が最も素晴らしいとされる世界なのだと思います。要件を理解し、工数、コストを考え、コードを書いてレビューする事ができる成果物を作り出せるディベロッパーが素晴らしいと評価される人間となりうるのだともいます。

私は、テクノロジーやアーキテクチャを研究することが好きです。それは、何歳まで許されるのでしょうか?もしくは(実質的に)何歳まで伸びしろがあるのでしょうか?分からないけれど、なんとなく今の日本が、ソフトウェアにおいて技術大国となれる気がしない、「技術を知らない管理職こそが上流階級の素晴らしい人財」であると評価されすぎているような気がするのです。

アジャイルのみが素晴らしいとは言わないけれど、ウォーターフォールやその系統の思考回路に収まらず技術者が技術者としてギャーギャー暴れることで、世界を素晴らしくしたいと思うのです。

いや、でも私は「アジャイル派」ですから^^。(典型的な請負開発でアジャイルできるの?の難しさは知っているので、本投稿ではそこには踏み込まない・・・という笑)