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

Share on:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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