ウォーターフォールと人生計画

ITの世界ではウォーターフォール的な考え方が割と根強く残っていて、一部ではそれが批判されているし、自分もクソだと思ってるけど、ITに限らずこの世の中には割とウォーターフォール的な考え方が浸透してるんじゃないかと思う。

 

例えばファイナンシャルプランナーってすごくウォーターフォール的で、「人生設計」みたいな言葉がよく使われるのがそれを物語ってると思う。

 

後はライフプランナーとか、婚活アドバイザーとかも、なんかそういう発想を根っこに感じる。

 

で、こういうウォーターフォール的な考え方で人生計画を考えると、色々な面でかなりのオーバーヘッドが生まれると思ってる。

 

ITプロジェクトをウォーターフォールで進めることで大きなオーバーヘッドが生じるのと全く同じ理由で。

 

ITのプロジェクトにおいてウォーターフォールの何がクソなのかというと、ウォーターフォールという手法やフォーマットの問題というより、ウォーターフォールが前提としている世界認識がそもそも現実と大きくかけ離れてる点だと思う。

 

お客さんの要求は、システムを作る前の段階で事前に全てを把握することが可能で、それらをシステム仕様として完璧に定義することで、過不足無く要求通りのシステムを作り上げることができるし、そのために必要な日数は、標準的な人員リソースを仮定することである程度正確に見積もることができる、という前提。

 

この考え方を適用したがために、ITの世界でどれだけのゴミシステムの山と、それに埋もれたプログラマーの屍の山が築かれてきたかは、業界の身を置く人ならよく知ってると思う。

 

この世界は完璧に計画可能である、そして今回立てた計画は完璧である、という仮定を置くことで、計画が完璧なのに計画通りに行かないのは現実が間違ってるからだ、というムチャな論理展開で、現場のエンジニアに奴隷の如くムチを打ち、現実を歪めようとした結果がITにおける炎上プロジェクトの内実だと思ってる。

 

そもそも要求が間違っていたり、変わったりしてるのに、それを認められない、認めると事前に立てた計画が間違ってたことになってしまうから、最初に決めた仕様通りに開発を進める、みたいな本末転倒が起こる。

 

このウォーターフォール的な考え方を人生計画に当てはめるなら、人生は予測可能で、予測可能であるがゆえに計画可能である、ということになる。

 

個人の経験を振り返ってみても、そんな当初に計画した通りになることはまず無いし、計画以前に自分の人生における大きな要求変更が突然発生したりする。

 

例えば自分の生活条件(健康や家庭環境など)だったり、あるいは自分の人生の中での優先順位や価値基準だったり、世界に対する事実認識だったり。

 

自分の話をすると、20代半ばでITの世界に飛び込んで、駆け出しプログラマーだった時は、一日中プログラミングして飯が食えるなら月収20万ぐらいもらえて最低限の生活さえできればそれだけで幸せだと思っていた。

 

だから待遇が多少悪くても、出来るだけ技術力やプログラミング能力が要求される環境で、目一杯技術に浸かっていたいなんてことを漫然と思っていた。

 

だけど実際に1年、2年と経験を積んでいくと、確かにプログラミングは楽しい、でもどれだけ楽しくても頻繁に大きな仕様変更が入って何度も手戻りを食らったり、厳しいスケジュールを押し付けられて精神的に余裕が無くなったりすると、こんなのは耐えられない、と当初の考えが変わったりする。

 

あるいは、絶対にやりたく無いと思っていたマネジメントをやらされてみると、あれ、これプログラミングでバグ見つけて潰すのと、プロジェクトにおける問題や課題を見つけて潰すのと、そんなにやってること変わらないんじゃないか、と思うようになったり。

 

フリーランスになる前までは、フリーランスになったら1年間の内半年だけ仕事をして、残りはぐうたらした生活を送ろうとか、リモートワークをベースにして家で好きな時にプログラム書く生活をしようとか思ってたりした。

 

だけど、いざ1ヶ月休みを取ってみると、最初の1週間ぐらいでやることが大して無くなって、無味乾燥な時間を浪費するだけでこれなら仕事してた方がマシだと思うようになったり、リモートワークもゴミみたいな案件しか基本転がってないし、実際にやってみると家で作業するのは自分には合わないなと気づいたり。

 

あるいは、元々自分の能力や適正はこの程度だろうと見積もっていたよりも自分の能力が大きく伸びたり、一方である面では思ったより伸びずにダメなままだったりして、自分にとって最適だと思ってた役割や業務形態についての認識が変わったり。

 

という感じで、あんまり事前に強い仮定を置いて計画を立てたり、立てた計画通りにやろうと固執したりすると、その前提となる要求変更が発生した時にそれに気づけなかったり、気づいても軌道修正がきかなかったりと、大きな判断を見誤ることになる可能性がある。

 

だから、20代の時にはITベンチャーで最先端の技術にさえ触れてさえいれば良いと思っていても、実はベンチャーは金が無いから研究開発にリソースがあまり割けなくて、むしろ大企業の方が最先端の技術に触れられる可能性高いじゃんってことに気付いて、5年後には大企業志向に変わってるかもしれない。

 

30代でフリーランスエンジニアになって年収1000万稼げて勝ち組だと思ってたら、40間際になって健康を崩して年収200万になったり、あるいは大企業のエンジニアと比べてリスクと年収のバランスが逆転されてしまい、フリーを辞めて企業に入ろうと思っても企業内で求められる業務経験が不足していて望むような会社に入れなかったり。

 

という感じで、人生の中では自分が思ってもいなかったような大きな要求変更を迫られたりするもんだな、ということを、20代の時はあまり実感しなかったけど、30代半ばになって実感するようになった。

 

自分が今当たり前の前提としていることを疑うことは中々難しいけど、今自分が仮定している前提がひっくり返るかもしれない可能性を常に頭に入れておいて、自分の中での要求変更をすぐに察知できるようにしておこうと心に留めてる。