見出し画像

楽しい開発と楽しくない開発

今までITエンジニアを10年くらいやってきて、色んな開発に携わってきましたが、明らかに楽しいと思える開発と、なかなか楽しいと思えない開発があることに気がづきました。

あくまで個人的な見解になりますが、以下に楽しくない開発と楽しい開発それぞれの特徴をあげていきます。

1. 楽しくない開発の特徴

まずは楽しくない開発の方から。
楽しくない開発には、以下のような特徴があります。

・あらかじめ納期と金額が決まっている
・最初に契約を結び、契約外のことはやらない
・最初にシステム全体の仕様を固める
・仕様通りに設計書を作成する
・設計書通りにプログラムを開発する
・テスト仕様書に沿ってテストを実施する
・完成したらリリースしてサポートをする

2. 楽しい開発の特徴

一方で楽しい開発には以下のような特徴があります。

・納期が明確に決まっていない
・金額についても明確には決まっていない
・仕様はざっくりとしか決まっていない
・とりあえず仕様を満たすようなプログラムを軽く作ってみる
・作っていく中で、こんな機能があった方が便利だな、と気付く
・気づいたらとりあえず実装する
・ある程度形になったら一旦リリースしてみる
・ユーザーからのフィードバックから課題を整理し、随時機能を追加する
・成果物の評価に応じて報酬をもらう

システム開発に携わったことのある方は、お気づきの方もいることでしょう。1の楽しくない開発は、典型的なウォーターフォール型のシステム開発です。一方で2の楽しい開発の方は、いわゆるアジャイル開発の思想を取り入れた開発スタイルになります。そして、日本の多くのIT企業、特に、SIerと呼ばれる企業に関しては、ほとんどの開発が1のようはウォーターフォール型と呼ばれる開発手法を採用しています。

では、2のような開発ができるようなIT企業が日本にあるのかというと、ほぼない。と思う。少なくとも私自身は経験がないし、身近なIT企業で働いている人からの話でも聞いたことはありません。ただし、それは企業の人間として関わるプロジェクトの場合。

長くエンジニアを続けていると、身近な知り合いから個人的にシステム開発の依頼を受けたり、自分がただただ楽をするためだけに開発を始めたりすることもあります。そんな時は私の場合ほぼほぼ2の開発スタイルで開発を始めます。

1の開発スタイルの場合、納期が決まっているということから、プレッシャーを感じやすくなります。納期に余裕があれば問題ありませんが、納期がかつかつのプロジェクトだとそれだけで楽しくなさが格段に上がります。また、最初に固まった仕様通りに進めるため、後から「やっぱりこうした方が良いかも」と思っても方針転換することが難しい。そして、最初から仕様が固まっていて、それ以外のことはやらない場合が多いので、お客さんの期待を超えた満足度で納品することが難しいです。そういった点から、個人的にウォーターフォール型の開発は楽しくないと感じることが多いです。

一方で2の開発スタイルの場合、まず納期がない分プレッシャーが少なく、伸び伸びと開発ができます。また、顧客ではなく自分主体で進めることができるため、やりがいもあります。また、技術力がさえあれば、ユーザーの想定を超えた機能を実装することで、期待を超えた感動を与えることも可能です。そういった点から、個人的には明らかに2の開発の方が楽しいです。

もちろん、開発の進め方だけで楽しさが全て決まるわけではありませんが。チームメンバーとの相性、顧客との相性、作るシステムの内容など、開発の楽しさを決める要因は様々ですが、それらの条件が全く同じだとしたら、個人的にはアジャイル的な開発をする方が楽しい。

楽しいか楽しくないかを決める要因として、そもそもウォーターフォール型の開発が私には向いていないというのも大きいかもしれません。私は事前にあらゆることを想定してスケジュールを立てて計画に沿って進めていくという仕事の仕方が非常に苦手。とりあえず着手し始めて、発生した課題に対して随時優先順位を立てて取り組んでいく仕事の仕方の方が進めやすいです。エンジニアの仕事はそれなりに長くやってきましたが、ウォーターフォール型の開発のリーダーを任されたりするのは未だに荷が重いです。

多くのIT企業で2のようなアジャイルのスタイルで開発を進めていくことができれば、幸せなエンジニアも増えていくのではないかとも思いますが、現実はきっと難しい。

ただ、企業に属しながら2のような開発をすることも不可能ではないと思っています。それは、IT企業ではなく、全く違う業種の企業の中で、IT推進の担当者として働くことです。社員のほとんどがIT技術に詳しくないという会社で、ITに特化した人というポジションで働くことができれば、自分のペースでアジャイル的に開発を進めていくことも可能ではないかと思っています。

日本は先進国の中ではIT技術が非常に遅れていると言われています。実際その通りだと思うのですが、大きな要因の一つは、IT企業以外の企業に、ITエンジニアがいないからなんだそうです。多くの企業がシステムの導入やIT技術の活用を自社で進めるのではなく、Sierに任せてしまっている。これは確かにそう思います。私自身、システム開発の仕事をする中でエンドユーザーと接する機会もありましたが、自分がその企業に転職して好きなようにシステムを構築していった方が手っ取り早いんじゃないか、と思うこともあります。

日本のIT企業ではSESとか派遣とか色々ありますが、IT企業に派遣するんじゃなく、ITエンジニアがいない民間企業にITエンジニアを派遣するサービスがあったりしても良いじゃないかとも思います。ただ、本当に優秀なエンジニアがIT技術に疎い民間企業に派遣されて様々な業務を自動化してしまったら、会社の中で仕事がなくなる人もたくさん出てくるでしょう。また、ITとは関係ない業種の企業で働いている中では、エンジニアが新しい技術を学ぶ機会やモチベーションは減ってしまいそうですね。そんなこんなで別の問題も色々と発生してしまいそうで、みんながみんな幸せな社会になるわけではないでしょうけれど。

それでも、日本企業の中で楽しいと思える開発ができる場所が増えていくことを願いたい。日本が今後さらに世界から遅れをとってしまわないためには、まずは開発のあり方を根底から変えていくことが必要なんじゃないかと思う。

サポートいただくとめちゃくちゃ喜びます。素敵なコンテンツを発信できるように使わせていただきます。