思考と現場の間でスマートフォン用の表示で見る思考と現場の間で「いいサービスづくり」のために、組織づくりやソフトウェア設計など、考えていることを書きますメニューホームプロフィール個人の学びリーダーの学びチームの学び組織の学びソフトウェア設計2014-01-30開発ツールを最大限活かすために大切なことチームの学びアジャイル、スクラム、テスト駆動開発、ドメイン駆動設計、継続的インテグレーション...。色々な開発ツールや開発の考え方があります。それぞれ素晴らしいツール(手段)であり、取り入れるだけで開発方法を変えることができます。このような素晴らしいツール類の弊害として、だんだん目的化してしまうということがあります。「ツールは手段であり目的ではない!」みたいな話はどこにでもあるんですが、それはそれとして、少し別の視点からツールを考えてみたいと思います。優れた道具を使うとどうなるか左側の写真は私が趣味でやっているティンパニ(右側の写真)という楽器をたたくためのマレットです。このマレットは、私がお世話になっている先生に作っていただいたものです。先生が使っているマレットと同じ作り方で、私の腕の長さなどを考慮して作っていただきました。楽器をやっていない方々はわかりにくいかもしれませんが、このような道具が変わるだけで、大きく音が変わります。楽器が変わるかくらい違います。マレットを変えるとすぐに音が変わったという点だけでも驚いたのですが、最も驚いたのが、長い時間使っていくと道具に合わせて演奏スタイルも変わってきたことです。マレットの握り方、上げる角度、音のイメージ、形も考え方も一緒に変わりました。この道具を使っている前提で先生にレッスンをしていただくと、当然先生と同じものを使っているので、スムーズに音のイメージやフレーズの流れ方を反映できるようになってきます。別のマレットを使っても、自然にその音に近づけるようになりました。「道具が人を育てる」ということです。開発ツールやプロセスを導入することで人が育つ私はここ数年、スクラム、テスト駆動開発、継続的インテグレーション、ドメイン駆動設計、Spring、Intellijなど、色々な開発プロセスやフレームワーク、開発ツールに取り組んできました。幸運にも組織がそれを許しサポートしてくれたお陰で、組織やルールという意味で大きな障害が無く、ほぼ開発チームがどう活かすかという点だけに集中して取り組むことができています。これらに取り組んだおかげで、大きく変化しました。何が変化したかというと「人」と「組織」です。スクラムに取り組むことで、メンバーが自発的に考え仕事をするようになり、テスト駆動開発や継続的インテグレーションをやることで、テストコードを書いて毎日カバレッジを意識するようになり、ドメイン駆動設計を行うことで業務をオブジェクト指向で表現をできるようになり、SpringのDIとDDDを組み合わせることで依存関係逆転の原則に則ってドメインオブジェクトを独立させるように努力するようになり、Intellijによって名前(スペルミスも含め)に気をつけ、リファクタリングを意識しIntellijの機能を使ってやるようになる。組織もその効果に合わせてルールや組織の体型を変えていく。私の組織は驚くほどフラットになりました。基本的にマネジメントは開発チームを極力邪魔をしないように努力をしてくれています。これらは一例ですが、私も含めもともとそれに取り組んだ人たちが世界のトップレベルのプログラマのようなレベルにあるわけではありません。その辺によくいる普通のエンジニアです。いう人たちがこれらのツールを導入することによって勉強し、それに合わせて変化をしていった。ツールを導入したこと云々ではなく、それが最も大きな成果だと感じています。目標はツールの導入ではなく人の成長であるこれまで私の開発してきた環境では、「ツールを導入するとツールが何とかしてくれるから良い開発ができるんだ」という前提でいろいろな開発手法やツールを使ってきました。残念ながらその多くは成功しませんでした。現実の案件や人やお客さんと合わなかったり、スピード感が違ったり。それはツールの問題なんじゃないかと思っていた時期もあったのですが、ずっと違和感を持っていました。「ツールは手段であり目的ではない!」というのは同感なのですが、では何が目的なんだというしっくりくる答えは出ていませんでした。最近、音楽もシステム開発もやっててようやくこう気づきました。優れたツールというのは、器が大きいです。使う人がそのツールに合わせることができれば、多くのことに対処でき、効果を上げることができます。違う言い方をすると、ツールに合わせるように努力するだけで、本質的にシステム開発に必要な優れた考え方を自然に会得し、良い開発ができるようになります。同時に自然にその人の能力も向上していきます。ここまでくれば開発効率が上がり、いい設計などのアウトプットが出てるはずです。ツールを変えたとしても、その基本的な考え方はその人に残っていきます。話題になっていたり優れているように見えるツールを見ると、導入してみたくなります。導入することは必要なのですが、少しでも効果が出ると一気に会社全体に広げるとか、スピード感を一気に上げたくなります。残念ながら人の成長には時間がかかります。なると、意図も伝わらず導入が成長を追い越してしまい、それほど効果が無いじゃないかということで止めることになります。逆に、「組織に合わないから導入できない」という話も聴きますが、そのメッセージは自分たちを変えるつもりがないということとイコールになり、ツール以前に大きな問題です。いう組織は、どんなツールを導入したとしてもうまくはいかないでしょう。考えると、何も考えないで優れたツールに人も環境も合わせてみるというのも選択肢の一つかもしれません(守破離の守)。ツールを上手く利用して人が成長していく(守破離の破)。最終的にはそのツールでも物足りなくなり、自分でツールを作ったり、新たにもっと優れたツールを使っていく(守破離の離)。そのような人や組織の成長曲線を作っていくことを目的にツールを導入していけば必ず効果が出ると思っています。23:11開発ツールを最大限活かすために大切なことTweet関連記事2019-01-012019年取り組むこと2019年があけました。あけましておめでとうございます。今年も...2018-10-28最前線のリーダーシップ今まで、組織をより良くしようとか、組織長として変化させてい...2017-12-25自己組織化と意思と秩序20代で大きな会社や幾つかの組織に所属してみて、組織というシ...2017-12-02「効率化をする」というのはどういうことか「効率化をしてほしい」とか、「もっと速く開発をしてほしい」...2016-06-14ルールから変え続けられることが組織力になる組織には常に変化が大切です。Yasunishiクラシック音楽好きのWebエンジニア、マネージャー、コーチ。Webのフレームワークを作ったり、サービスを作ったりしていたところ、スクラムとドメイン駆動設計(DDD)に出会いました。スクラムでの考え方に感動し、いかに最高のパフォーマンスを発揮できるチームにすることと、組織をどう変えていくかを考え続けると同時に、ドメイン駆動設計で巨大で複雑なソフトウェアをどう設計するかということを追求しています。頭で考えるのも好きですが、あくまで現場が大事。現場で体験したことをベースに、書いていきたいと思います。(2)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。