T

久しぶりの出向で開発環境について考えさせられた

もう現場に入って数週間が過ぎていますが、年末年始くらいまでは最低でもずっと出向になる予定です。

久しぶりの出向で、しかも納期がタイトで終電なんか当たり前、というこれまた久しぶりな状況です。ちょっと挑戦のつもりでやってみましたが、もうね、体がもちません。幸い、腕の立つ人たちが集まっているので、超人的なチームワークで案件としてはなんとかなりそうな雰囲気になってきましたが、それでもかなり強烈に疲弊しています。結構な金額が動く大型案件なのだけれど、まあいろいろとどろどろしたものがあります。

今回もっぱら担当しているのは、サーバまわりのあれやこれやの設定と、ひたすらコーディング。仕様のほとんどについては実は既存のプログラムがあるので、ほとんど決まっています。逆に、全体的な設計はないに等しいので、現場で話し合って詳細部分はランチでアイデアを交換し合うかたちで進めています。

でも、とある理由からこのやり方がかなりうまくいっています。というのは、今回開発にあたって、全員が電話もなければ出入りする人も(本当の用事がなければ)いない隔離部屋で作業しているからです。隔離部屋というと聞こえは悪いですが、掘りごたつ式のテーブルを囲んで4人が作業することができる畳の部屋で、打ち合わせ用のホワイトボードがわりになるガラス製のボードが壁一面にあり、打ち合わせた内容をいつでも振り返ることができます。それに地上20階以上にある部屋なので外の眺めは素晴らしく、晴れた日にはこれまた壁一面のガラス窓から富士山なんかも見えます。とにかく静かで、社内の余計な作業や打ち合わせに振り回される必要がない。ある意味、開発者にとっては理想的な環境です。唯一の欠点は、背もたれがないので長時間座っていると座布団があるからそれほどひどくはないですが腰にくることでしょうか。

開発環境としては、持ち込んだデスクトップ機を許可をもらってLAN内に設置して、Sambaでファイルサーバを立ち上げ、気づいたことやToDoは同じマシンに置いたRedmineで管理しています。見つけたバグなんかはそこに突っ込んでおけば忘れることもなくなります。Subversionで管理しているのでRedmineのActivity画面を見ていればなんとなく進捗が見えるのがいいですね。何より、こんなちょっとした工夫でも、会社にいればいちいち他のチームとの整合性がどうとか、手順をきちんと作成しないとああだとか、自分では何も出来ない連中からぜったいに横やりが入って、最終的にはまかりならぬとストップがかかるかもしれないのですが、ここでは勝手気ままにできてしまうのが素晴らしいです。いや、冗談みたいな話ですが、グローバルからアクセスできない環境にTracを入れようとするだけでぐちゃぐちゃ文句をいわれたりする(しかも開発のレポジトリには接続さえしてないのに!)会社って本当にあるんですよ。

で、思ったんですが、社内でわけのわからん政治ごっこに振り回されたり、開発とは関係ない部署の隣で騒がしい中ヘッドフォンでなんとか音を遮断しながらコーディングするのは愚の骨頂ですね。開発者に静かな隔離部屋をあてがうだけで、開発効率なんてぐんぐん上がってしまう(よその会社は5倍の見積り出してる案件がなんとかなってしまう)わけですから。それで社内のコミュニケーションに問題が、とか言い出す人がいたら、まあこのチームでも最初はそんな懸念もあったわけですが、そんなことは何の問題にもならないし、本当に必要なコミュニケーションなら努力してでも機会を設ければいいだけのことで、それが開発環境を汚染してまで優先されることではないと、冷静になって判断すればいいことです。それより、開発チーム内のコミュニケーションの方がはるかに重要なのですから。ソフトウェアを作っている現場に5人の開発者と5人のマネージャがいるとして、やむにやまれぬ事情から誰か5人に猿ぐつわを噛ませる必要に迫られたら、開発者じゃなくてマネージャを選ぶでしょ?また、お金の面が心配なのであれば、別の安い建物でも構わないので、なんとかする方向で考えるべきであって、そこをケチってまで開発効率を落とすというなら、それは開発会社としての優先順位づけに大きな問題を抱えていることに気づいていないことになります。あるいは、開発会社を名乗るのはおこがましいと思います。もちろん、くそくらえという方にはその限りではありませんが。

というわけで、いまは体はきつくていつでも気絶できるような状態ですが、開発という面では精神的にかなり落ちついていられます。この経験は今後の仕事の進め方を考えるにあたって重要な要素になりそうです。

Posted by on 12月 15, 2008 in Work

Comments

  • hekke より:

    うらやましい開発環境ですね。
    私のところは日に10本は自分に関係ない電話の取次ぎをし、ソース管理は VSS、
    タスク管理は社内で用意されてるものもなければ自由に使える Linux サーバもないので
    ローカルでエクセルに書いて Windows サーバの共有フォルダにアップ…
    はさすがに嫌なので一人で fixdap 使ってますが Redmine なり Trac なり使いたい orz

  • y より:

    fixdapは便利ですね。

    人づてに社内ではこういうやり方はけっこう非難されている(経費が余計にかかるとか)と聞いて、チームのみんなも最初は結構気にしたりしていましたが、赤字になってるわけじゃないし、手伝ってもくれないくせに非難するだけの連中の給料だって、結局はこの現場の仕事から生まれてるんだと今では大胆カツカレーに無視しています。

    そういえばいろんなプロジェクトでまだ下っ端だった頃は、最初はバージョン管理やタスク管理のツールを自分専用にして使い始めて、となりの席の人から順に徐々に浸透させちゃうとかやってました。周囲を見渡すと、けっこう2人とか3人とかの単位でそういう工夫をしているチームもいましたね。そういう人たちは結束力が強くて、かなり厳しい案件でもたくましく乗り切っていました。

    それから、今日からは社内で標準的に使われているテスト仕様書が糞の役にも立たないので、進捗報告を工夫してこっそりユニットテストできるよう時間を工面してあれこれ作業しています。たぶん上からの評価は得られないでしょうが、後からこのプロジェクトを引き継いで追加開発する人たちはデグレを検知するテストをする時に泣いて感謝するでしょう。

    当時は知らなかったのですが、もっときちんとこういう問題を考えている人もいて(http://japanese.joelonsoftware.com/Articles/GettingThingsDoneWhenYour.html)、これを読んだときはけっこう感動しました。hekkeさんもちょっくらいっちょう、いかがですか?

  • コメントを残す