取引先様より、講習の依頼があった

先日、主に開発案件などを弊社に発注してくださっている株式会社リーデックス様にて、ソフトウェア開発に関する講習をさせて頂く機会がありました。講習自体は全3回の予定なのですが、そのうちの第1回について簡単に書いてみます。

追記: 第2回、第3回についても書きました。

話の発端ですが、今年頭にとある短納期の開発案件でご相談頂き、最終的にリーデックス様と弊社で開発を行い、無事に納品を行うことが出来ました。

その後、その開発案件のご担当者K様より、
「開発、特にリモート開発を効率よく進めるコツみたいなのがあれば知りたい。オフィスに来て講義・質疑応答をしてもらえないか」
というようなご相談を受け、今回の講習を行うことになりました。

講習は以下の内容で全3回の予定です。

  • 1回目: 開発及びリモート開発を効率良く進めるための方法
  • 2回目: 確実に黒字を出す受託開発
  • 3回目: 技術の学び方、(と、1月からやっていた案件の技術的な話)

第1回「型を持って、効率よく開発を進める」

第1回のタイトルは「型を持って、効率よく開発を進める」としました。内容を一言で簡単にまとめると、

「開発作業において、「型」、つまりベストプラクティスだったり定型化された方法、を正しく導入して、開発を効率よく進めましょう」

という内容です。

※前述の通り、元々は第1回は「開発及びリモート開発を効率良く進めるための方法」の予定だったのですが、事情により(というか勘違いしていて)リモートワークの部分は第2回に回すことにしました。

もう少し細かく書くと、以下のようなお話をしました。

  • (自己紹介)
  • 「型」について
    • 「型」とは何か
    • なぜ重要なのか
    • どう業務に活かすのか
  • 具体的に行っている事・ポイント
    • 開発プロセスの共通化
    • 定形作業の自動化
    • 使う技術・ツールの共通化
    • 無駄な作業の省略

「具体的に行っている事・ポイント」の抜粋

第1回の講習では、我々が「具体的に行っている事・ポイント」についても詳しくお話したのですが、ここでは、いくつか抜粋・要約してお伝えします。

アジャイルベースの開発

我々は、アジャイル開発がメインなのですが、XP, Scrum のプラクティス(「型」と言えるでしょう)を取り入れて、開発を進めています。ただ、リモートでの開発なので、プラクティスをそのまま取り入れにくいものとかもあるので、適宜カスタマイズしています。

また、KPT等のフレームワーク(これも「型」です)を使い、プロジェクト、そして開発スタイルの見直しを随時行っています。

定形作業の自動化

ソフトウェア開発では、色んなプロジェクトで同じような作業をやっていることがあります。我々は、そうしたものを自動化・共通化して、極力手間をかけないようにしています。

  • 開発環境構築
  • 本番環境構築
  • テーブル定義書の作成
  • etc.

コア技術の選定

元々の「型」の意味から少し離れるかもしれませんが、各メンバーがバラバラ違う技術を身につけるよりは、ある程度型というか枠にはめて、同じ技術を共通して学んだ方が、開発が効率よく進むと考えています。

弊社では「コア技術」というものを定めていて、各メンバーがコア技術を中心に技術を身につけると共に、お客様から受ける案件も、そのコア技術から大きく外れるものは、あまり受けないようにしています。

それにより、各技術のノウハウが溜まり、「型」が定まってくるものと考えています。

質疑応答

最後に質疑応答の時間を取りました。全部は紹介できないので、いくつか抜粋します。

Q1. プランニングポーカーをやると、各メンバーでばらつきがでるがどうするか。
A1. 何でその見積り値にしたか、という理由を各自で出して話し合っていけばおのずと収束するはず。

家に帰って書籍を確認したところ、「アジャイルサムライ」に詳しく説明が書いてあったので、興味のある方はそちらを参照して下さい。

Q2. pull request のレビューにどこまで時間をかけるべきか。
A2. 質問者は、pull requestのレビューに時間を取られているのが悩みだと思われるが、それに対しては以下の対策をお勧めする。

  • レビュー時間も工数見積もり・スケジュールに含める
  • レビュアーを固定しない(特定の人にレビューが集中しないようにする)

その上で、元の質問に対する直接の回答としては「できるだけ時間をかける」という事になる。その理由としては、以下が挙げられる。

  • 後から問題が発見されるより、レビューで問題を発見した方がコストが低い
  • 単に問題を発見するだけでなく、教育的な効果もあるので、積極的に利用すべき

Q3. 「コア技術」に関連して、技術的なトレンドをどうやって把握しているのか
A3. ニュースサイト等の一般的な情報は必要だが、それ以外に、人から教えてもらうというのが多い。技術に明るい人にSNS上でつながっておくのは良い方法だと思われる。社内でも、技術に詳しい人・新しい技術に敏感な人がいるはずなので、そういう人に聞いたり、その人達が社内で情報を発信しやすい雰囲気・仕組みを作るのも有効。

補足すると、リサーチャーとかが本職でない限り、自分自身で色んなデータソースを自発的に調査してトレンドを把握するのは時間的に難しいので、周りの力をうまく活用する事が大事だと思います。

最後に

第2回、第3回についても、書いていこうと思います。追記: 書きました。

 

 

技術セミナーの依頼等、お問い合わせはこちらから。