アジャイル開発とウォーターフォール開発について

プログラミング開発の手法には、アジャイル開発をウォーターフォール開発があります。ベンチャー企業だと、ほとんどアジャイル開発です。

大手のSIerなんかは、ウォーターフォール開発だったりします。ITに関わる人は、どちらの手法も知っておくべきだと思うので、解説します。

主流なのは、アジャイル開発です

アジャイル開発はリリースしてから修正する

アジャイル開発というのは、とりあえずリリースして、それから修正している開発手法です。リーン開発なんて呼ばれたりします。

IT業界はスピード感が大事なので、すぐにリリースしないと、他の企業に先を越されてしまいます。また、完璧なサービスでなくても後から機能を付け加えることができるので、アジャイル開発に向いているとも言えます。

主に、自社開発のWEB系企業で使われている手法で、自社のエンジニアがいつでも修正できるし、お客さんに提出するわけでもないので、不完全でもリリースできてしまうわけですね。

最近のデプロイサービスは、アジャイル開発が前提で作られています。コードを管理するGithubとか、デプロイやテストを行うCircleCI、スケールに対応したDockerやkubernetesなどは、リリース後に何らかの修正が加わることが前提のツールです。

ウォーターフォール開発は納期性

一方、ウォーターフォール開発は、滝が流れるように、後戻りができません。つまり、納期があって、その期限までにプログラムを作るというやり方です。

古い体質のIT企業ではこの手法が使われているのですが、正直、IT企業には向いていないと思います。

かつて日本はものづくり大国だったわけですが、家電なんかはミスが許されないので、納期までに完璧な製品を作らないといけなかったわけです。

その名残が今でも残っているのかもしれません。

大手のSIerや受託開発企業は、お客さんに期限以内にシステムを提供するわけなので、早期リリースができないばかりか、失敗も許されません。

完璧なシステムを提供するので、悪いことではないのですが、1年にも渡る長期プロジェクトになると、使っているツールが古くなってしまったりします。

IT業界は流れが早いからです。

そもそも、ITサービスというのは、完璧に仕上げるのは非常に難しいです。改良しようと思えばいくらでもできるし、インターネットの情勢が変わったり、外部公開しているAPIの仕様が変われば、バグが起きてしまいます。

IT業界以外のほとんどの業界では、納期を守って仕事をするのが当たり前ですし、IT業界が特殊なのかもしれませんが、IT業界に限っては、ウォーターフォール開発手法は、効果的ではないと思います。

アジャイル開発に対応するために

今ウォーターフォール開発で進めているプログラマーの方や、これからプログラマーになろうと考えている人は、アジャイル開発を身につけておいたほうがお得です。

アジャイル開発を身につけるためには、Gitの使い方を覚えるのが最優先です。細かいことは、Qiitaなどで勉強していただきたいんですが、複数人でコードの変更箇所がかぶらないようにしたり、コードレビューをしてもらうために必須の技術だからです。

あとは、Dockerですかね。開発環境をDockerで構築して、Gitを使いながら開発ができれば、ベンチャー企業でも充分やっていけます。

自動デプロイとか、インフラサービスに関しては、すぐに触ることもないと思うので、優先しなくていいと思います。

一応、アジャイル開発(リーン開発)について詳しく知っておきたい人におすすめの本があるので、紹介します。

僕がプログラミングを勉強し始めた頃に読んだ本です。