転職・エンジニア育成・面接官の経験からITエンジニアのキャリアについて紹介していきます移転しました。SEとテスト駆動開発と技術よがりこの広告は、90日以上更新していないブログに表示しています。2016-11-29SEとテスト駆動開発と技術よがりSEのキャリアTweet「なぜかテスト駆動開発が進まない」「どうせSEはテストファーストできる技術ないんでしょ?」と思っている方はいませんか?新しいもの好きなSEやプログラマーならテスト駆動開発や継続的インテグレーションなどの開発論は押さえておきたいところ。一方で導入がなかなか進まないのが実情じゃないでしょうか。SEが活躍する現場(=システム構築の請負)ではテスト駆動開発と相性がとっても悪いのです。この記事ではSEとテスト駆動開発に関する導入への苦悩を紹介していきます。テスト駆動開発へのアンチパターンを知ることで今後のプロジェクト推進の参考になることが多いでしょう。最後までお読みください。テスト駆動開発とは?メリットはなに?テスト駆動開発をSIに導入した場合の効果それでもSIerがテスト駆動開発を導入したらどうなるか?SEがテスト駆動開発にチャレンジする意義まとめテスト駆動開発とは?メリットはなに?テスト駆動開発は先に実装すべき機能のテストコードを書き、そのテストを満たしていくようにプログミラングを進めるという開発スタイルです。プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルである。Wikipediaなぜこのような進め方をするのでしょうか。テスト駆動開発のメリットは次があげられます。ゴール(テスト合格)に向かって開発が進められるため効率的であるテスト可能なプログラムであることを保証する(メンテナンス性、堅牢性の向上)テストに合格されたコードであることを保証しているテスト工程での成果物は、テストコードや合格のレポートを納品すれば良いため工数が削減される積極的なリファクタリングを行いやすい継続的インテグレーションが可能となるこのようにテスト駆動開発を行うことでたくさんのメリットを得ることができます。システム構築を請け負うSIの現場でこのテスト駆動開発を導入するとどうなるのでしょうか?一緒に考えていきましょう。テスト駆動開発をSIに導入した場合の効果システム構築を請け負う場合、構築したシステムが拡張や改善を行うことは大規模プロジェクト以外あまりないでしょう。積極的なリファクタリングや継続的インテグレーションの必要性がないわけです。数年後に発生する改修ではすでにプロジェクトメンバは解散しているばかりか別会社な可能性もあるわけです。そのときの担当者がスキル不足である場合、テスト駆動開発を進める気もなければ環境構築もできないでしょう。逆に技術スキルが高い場合は、網羅されたか否かわからないテストケースを実行して「すべてグリーンでした」となっても信じきれないでしょう。何よりテストコードの流用性のことを考えると、テストコードを手間暇かけて書くよりExcelでテスト仕様書を作り、ひとつひとつテストをしたほうが早いというケースが大半なのではないでしょうか。それらの将来的なことに目をつむって開発を進めても、開発工程における技術力の低さが課題となります。通常、システム構築では下流工程ほど多くの人が必要になります。上流工程はSIer社員で進め、開発工程以降は派遣や協力会社と進めますが正直、テスト駆動開発を進めるほどの技術力がないことが多いです。職業訓練でJavaを勉強したレベルの人がいたり、すべてが受け身な人がいたり、おじちゃんがいたり。テスト仕様書も満足に設計できないそんな人に「テスト可能なプログラム」の重要性説いても響かないでしょう。SEの技術力をバカにする人がいますが、私が見てきた現場では優秀なプログラマーは少ない印象です。マッチングが失敗していますね。まとめると、次のケースはテスト駆動開発が合わないと考えられるでしょう。システム納品後に拡張・改善がないプロジェクトテスト駆動開発の良さを享受できない文化それでもSIerがテスト駆動開発を導入したらどうなるか?そんな中、私が知っているSIでテスト駆動開発した事例を紹介いたします。比較的おおきな案件(億単位)で、リリース後も保守・メンテ費用があったためテスト駆動開発を導入した事例がありました。結果どうなったかというと、テストコードにはテスト仕様書の内容を網羅しきれず、「テストはOKでも不具合は多発」といった結果となりました。言うは易しですが、あらためてテスト仕様書の大切さとそれをテストコードに反映させるための大変さがうかがい知れました。SEがテスト駆動開発にチャレンジする意義これまでテスト駆動開発に対しSIの現場からみると悲観的な考え方を主張してきましたが、「じゃぁ知らなくていいや」という問題ではありません。あなたの年齢がまだ若いなら今後さまざまな開発案件に出会い、それに合った開発方法を適用する必要があります。したがってテスト駆動開発を知っておくことで柔軟に対処することができるでしょう。私は少人数プロジェクトのときにテスト駆動開発を導入することをおすすめします。次を意識して進めることであなたの知見を広げてくれるでしょう。やらないよりも、やってみるテスト仕様書のテストケースを網羅するあなたならどのテスト工程までテスト駆動にしますか?まとめテスト駆動開発は、次のようなたくさんのメリットがあります。改善がないプロジェクトテスト駆動開発の良さを享受できない文化ということが多く、導入しずらいことが現実でしょう。クックパッドをはじめ、様々な開発論がチャレンジされています。SEは流行に流されずに本質を見抜き、SIの現場ならではの開発論を極めれば良いと思います。参考になれば幸いです。Reserved.SEの転職SEのキャリアフリーランスPGのキャリアWEBエンジニアのキャリアWEBエンジニアの転職はてなブログをはじめよう!hiroti3さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。