No Reply

コードを書くつもりだったんです本当は。

ITプロジェクトに参加してはじめてわかったこと2選

はじめに

ITプロジェクトやソフトウェア開発(システム開発)をやったことがない筆者が、約1年間ITプロジェクトに参加してみて気づいたことをまとめておく。

以下に書くことは経験者にとっては当たり前だが、おそらく未経験者にとっては少なからず共感できるものだと思う。

 

前提

話の軸は何なのか?は大事なので目線合わせのために。

  • 事業会社の業務システム刷新プロジェクト
  • 開発工程はウォーターフォール
  • 僕の立ち位置は事業会社の情報システム部(ユーザー側)
  • 設計・開発はベンダーの請負
  • 参加したタイミングは設計フェーズ
  • 現在はテストフェーズ

 

はじめてわかったこと1つめ

テストをめちゃくちゃやるということ。

ウォーターフォールのV字モデルを勉強したときに、

「テスト多くね…よくそんなにやることがあるな…」とぶっちゃけ思っていました。

というのも、設計段階で何度もレビューしベンダーさんからのQ&Aを大量にさばいていたことを考えると、あとは頑張って実装してもらえれば完璧じゃないにしてもそこそこのものができると思っていました。

つまり、テストをいっぱいやらなくても期待通りの動きをしてくれるものが出来上がると思い込んでいたということです。

また、自動車のテストや医薬品のテストなどはしっかりやらないとダメだと直感的に理解できていたのですが、ソフトウェア開発のテストはいままで見たことがないので想像しにくかったというのもあります。各社の品質アピールのために実際のテストを流すTVCMは、素人にもその重要性を訴求できているということですね。

 

話を戻すと、「テストそんなにやる必要ある?w」と悠長なことを思っていましたが実際にテストを始めると、わんさか出てくるバグにまず驚きました。あれだけ実装の手前でいろいろ頑張ったのに、こういうものなのかーというのが率直な感想でした(品質に対する批判ではないです)。

実装と想定していた仕様により実現しようとしていた機能に乖離が出る、など作ってみるまでわかったもんじゃないなという学びもありました。

 

はじめてわかったこと2つめ

データベースはすごい大事なんだということ。

開発の経験がないとこの感覚は理解しにくいかなと思います。

バリバリコード書いていくことが開発だと思っていたので、

「データベースってそんなに気にする必要ある?wサクッとテーブル追加したり、カラム増やしたらええやんけ」などと心の中で思っていました。

でも実際はめちゃくちゃ気にする必要があって、なんならデータベースが実装の方針を決めかねないです(ちょっと誇張した)。

誇張はしましたが、僕が参加しているプロジェクトにおいては一旦データベースの構造を勉強することで設計の理解が深まりました。

システムはものすごい雑にいうと、データベースに入っている情報を組み合わせて使っている人に渡してあげる処理がほとんどです。そう考えると、データベースとは何か?どうやって情報を抽出しているの?ということを押さえることで、設計の意図が明確になりやすいです。

可能なら自分で簡単なSQLを書いて、欲しい情報を抽出する経験をするとより良いです。データベースに入っている情報を全部取ってくるselect文だけでも十分です。

 

おわりに

ウォーターフォールシステム開発をしていると、実際のモノが出来上がるまでに時差がありそれが未経験者にとってITプロジェクトは難しいと思われてしまう理由のひとつだと思っています。テストなんかはまさにモノを触ってみないとその重要性がわからないですし、データベースについては経験者にとってはあまりにも当たり前に大事なので未経験者との認識のズレが起こりえそうなところだと思います。

自分自身、そもそもどう思っていたっけ?ということを忘れないようにしたいものですね。