30-そのコードに触れてはならない!

プログラマが知るべき97のこと」の30個目のエピソードは、開発に関わる環境とプログラマの責務に関する話です。特にエンタープライズ系のシステム開発では、開発環境(ローカル環境)、開発サーバ、ステージングサーバ、本番サーバと役割に合わせて環境を用意する事が求められます。プログラマは開発環境にてコーディングを行い単体テストをします。そのプログラムは他の開発者の作ったコードと統合され、開発サーバにてテストされます。その後、本番環境に近いステージング環境へとデプロイされ、受入テストが行われます。そして、受入テストを通ったソフトウェアが本番環境へとデプロイされるのです。
このフローはエンタープライズ分野のように規模が大きく失敗が許されないプロジェクトでは効果的です。しかし、各担当者が正しい責務で各環境を使い分けなければ、形だけのフローとなってしまいます。自分も経験したプロジェクトではフローが整っていないケースも多く、いきなり本番環境へのデプロイ等も行われていましたが、当然のようにトラブルは発生していました。そのような経験もあり、ステージング環境や開発サーバの重要性を学び、比較的に小さなプロジェクトーそれは1人でのウェブシステムを開発ーでも、可能な限りは実施するようにしています。ですが、担当者は多くないため全ての役割を何名かでやることが多くなります。すると、気が緩んでしまいエピソードにあるような「本来は手を付けてはいけない部分」に手を付けてしまうことがあるのです。少人数で同じ人が複数の役割を行う場合は、役割の帽子を被っている事を常に意識する必要があるでしょう。
また、自分も最近はエンタープライズ系の開発から遠ざかっています。さらに業界そのものが大規模なエンタープライズ開発から自社プロダクト開発へシフトする流れもあります。納期も短くなり予算も限られるため、ITバブルの頃のように本番環境と全く同スペックのステージング環境を用意するのも難しくなってきているでしょう。ですが、自社プロダクトであれ、開発環境と開発サーバを用意し、可能であればステージング環境も用意すべきです。適切に環境を使い分け、リリースのプロセスを確立させることはエンタープライズだけでなく素早く回す必要のあるプロジェクトにも同じように重要です。その時は、このエピソードを思い出し、自分がどんな役割で環境に手を入れているかを思い出しましょう。

プログラマが知るべき97のこと

プログラマが知るべき97のこと