Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

現実をリファクタリングする 2013/11/07更新

概要

現実の開発現場で「環境自体をリファクタリング」すべき点をリストアップ。
どれも現実で遭遇したもの。そしてどれも提案しつつ実際は撃沈していることがほとんど・・・

メタファについては書籍リファクタリング・ウェットウェアの教えもあって
むりくり考えているのであまりうまいこと言っていないと思います。

内容が増えたら随時更新予定。

内容

概要 開発環境バグの臭い 対応 課題 メタファ
バージョン管理システム導入 バージョン管理を導入していない バージョン管理を導入。未経験者が多いならGit、Git経験者が居るならGit、SVN経験者のみいるならSVN 古い考えの承認者の説得。バージョン管理無し時と対比して説明。Git導入時はSVNと比較した利点を説明。 一回もセーブしないでドラクエプレイするんですか?
BTS導入 BTSを導入していない BTSを導入。プロジェクトの内容や社風などを加味してRedmine,Trac,JIRAからチョイス。利点欠点はググる 古い考えの承認者の説得。対立するマネジメント手法であるExcel+メールベースのタスク・バグ管理と比較した利点を説明 考え中・・・
Wiki導入 プロジェクト内で共有すべき情報はメールやSkype等のみで管理されている Wikiで情報を整理することの重要性を説明。メールやSkypeだと情報が埋もれてしまう なぜWikiが便利なのか理解できない承認者の説得 個別担当者の机の上に山済みの資料と、付箋やタグやキングファイルなどで全員から見える位置に一箇所にまとめて整理された資料のどちらが使いやすいですか?
xUnitの導入 xUnitを導入していない。全てのテストは手動テスト xUnitを導入する。未経験者が多い場合は、簡単な入門資料とサンプルコードを用意 テストの作成をただ面倒だと感じる開発者が多い場合、退行テスト時や保守時の利点などを説明 考え中・・・
マルチ(デュアル)ディスプレイの導入 シングルディスプレイしか用意されていない マルチディスプレイを導入する。仕様書複数の開発ソフトを起動する開発者にとってマルチディスプレイで生産性が高まる点を説明。チャンスは人の退場でディスプレイが余ったタイミング 具体的な数値で生産性の向上を示せ、と言われると辛い 間違い探しの2枚の絵を1枚ずつ見れないのと2枚同時に見れるのとどちらが早く問題を解けますか?
リファクタリングの導入 リファクタリングの習慣がない 保守性の重要性を説いてリファクタリングを導入。xUnitが導入されていない場合はセットでの導入必須。また、リリース済みコードの改修時のリファクタリングについて説得が必要 「動いているものはいじるな」の人を説得するのが困難。リファクタリングしない場合の長期的コスト、コードの難読化などについてサンプルを示して説明。 10年整理していない部屋と毎日整理されている部屋のどちらで問題が発生しやすいですか?
毎日歯を磨いている人と、全く歯を磨かない人のどちらが虫歯になりやすいですか?
貧弱な開発環境 製造するには不十分な開発環境 開発環境への投資についてただ単に固定費がかさむのではなく、開発者の生産性を挙げることでコスト削減になることを説得して高スペックな環境の導入 高い年俸のプロ野球選手に、職人が作った一流のバットを使わせますか?カラーバットを使わせますか? 考え中・・・
CI実施 常時結合していない Jenkinsの導入。常時結合+常時テストにより、問題の発見解決を容易にする。従来の後半肯定に固めてテストをする手法では問題発生時に大きな工数がかかる 考え中・・・ 考え中・・・
環境構築自動化 手作業で環境構築している Provisioningツールを導入する。再利用や、問題発生時の工数が激減する。環境のバージョン管理も可能になるため「環境大臣」的な開発者への依存度も減る。 考え中・・・ 考え中・・・
仮想環境構築を自動化 都度手作業で仮想環境を作成している Vagrantを利用して仮想環境作成を自動化する。新規参入者への対応やCloud利用の場合はスケール時などに便利。検証作業用にも便利。 考え中・・・ 考え中・・・

補足

・「開発環境バグの臭い」、という用語はリファクタリング対象を表す
「コードスメル」から名付けています。