LinkedInへの参加
2024年3月28日(木)12:26 EDT
Twitterのイーロン・マスク氏による買収後の変化が続く中、LinkedInを使って新しい専門的な情報を入手する人が増えているという話をよく耳にするようになりました。そこで、数週間前にLinkedInアカウントを開設し、このプラットフォームで私をフォローできるようにしました。
ソフトウェア開発は若い職業であり、私たちはまだ効果的に行うための技術を学び、ツールを構築している段階です。私はこの活動に30年以上携わっており、過去20年間はこのウェブサイトで、有用なソフトウェアの構築を容易にするパターンとプラクティスについて執筆してきました。このサイトは、私自身の著作を掲載する場所として始まりましたが、同僚の記事を掲載するためにも使用しています。
2000年に、私はThoughtworksに入社しました。そこでの私の役割は、クライアント向けにソフトウェアを提供するために習得した技術について学び、これらの技術をより幅広いソフトウェア業界に伝えることです。このサイトがソフトウェア開発に関する尊敬されるプラットフォームへと発展するにつれて、私はThoughtWorksの社員やその他の同僚の記事を編集および公開し、有用な記事がより多くの読者に届くように支援してきました。
写真:Christopher Ferguson
マーチン・ファウラー
私の仕事とこのサイトでの執筆活動に共通するテーマがあるとすれば、それはアジャイル思考への移行と、アジャイルソフトウェア開発を実用化する技術的なパターンとプラクティスの相互作用です。私たちの職業では技術の詳細は急速に変化しますが、基本的なプラクティスとパターンはより安定しています。そのため、これらについて書くことで、このサイトには数年前に書かれた記事が掲載されていますが、書かれた当時と変わらず関連性があります。
ソフトウェアが現代のビジネスにとってより重要になるにつれて、ソフトウェアは変化に迅速に対応し、新しい機能を迅速に考案、開発、そして本番環境に導入できる必要があります。アジャイルソフトウェア開発の技術は1990年代に始まり、過去10年間で着実に普及してきました。アジャイル開発は柔軟な計画アプローチに焦点を当てており、ユーザーのニーズの変化や、製品マネージャーがユーザーの効率を高める方法についてより多くのことを学ぶにつれて、ソフトウェア製品の方向転換を可能にします。現在では広く受け入れられていますが、アジャイルアプローチは容易ではなく、チームには高度なスキルが必要ですが、さらに重要なのは、チーム内およびチームのパートナーとのオープンなコラボレーションの文化です。
変化に柔軟に対応する必要があることは、ソフトウェアシステムのアーキテクチャに重要な影響を与えます。ソフトウェアは、機能の予期せぬ変更に適応できるように構築する必要があります。これを行うための最も重要な方法の1つは、明確なコードを記述し、プログラムが何をすることになっているのかを理解しやすくすることです。このコードは、開発者が変更を加える必要があるシステムの部分のみを理解できるように、モジュールに分割する必要があります。この本番コードは、変更を加える際に発生したエラーを検出し、内部構造の使用方法の例を提供できる自動テストによってサポートされる必要があります。大規模で複雑なソフトウェア開発では、マイクロサービスアーキテクチャスタイルが、チームが依存関係の少ないソフトウェアをデプロイするのに役立つ場合があります。
優れたアーキテクチャを持つソフトウェアを作成することは、一度でできることではありません。優れた散文のように、プログラマーが製品の目的と、その目標を達成するための最良の設計方法についてより多くのことを学ぶにつれて、定期的な改訂が必要です。リファクタリングは、プログラムを安全に変更できるようにするための不可欠な技術です。これは、ソフトウェアの観察可能な動作を変更しない小さな変更を加えることから成ります。多くの小さな変更を組み合わせることで、開発者はシステムが最初に考案されたときには計画されていなかった大幅な変更をサポートするために、ソフトウェアの構造を改訂できます。
開発者のマシン上でのみ実行されるソフトウェアは、ソフトウェアの顧客に価値を提供していません。従来、ソフトウェアのリリースは長く複雑なプロセスであり、ソフトウェアを迅速に進化させる必要があることを妨げてきました。継続的デリバリーは、自動化と共同ワークフローを使用してこのボトルネックを取り除き、チームが顧客の要求に応じてソフトウェアをリリースできるようにします。継続的デリバリーを可能にするには、変更によってバグが導入されていないという確信を与えてくれる、さまざまな自動テストを備えたテストの強固な基盤を構築する必要があります。これは、アーキテクチャの改善に役立つテストをプログラミングに統合することにつながります。
ビッグサー、カリフォルニア州
世の中にはさまざまな種類のソフトウェアがありますが、私が主に携わっているのはエンタープライズアプリケーションです。この世界で私たちが取り組む必要がある永続的な問題の1つは、データ管理です。ここで私が焦点を当てているデータ管理の側面は、アプリケーションが変化するニーズに対応する際にデータストアを移行する方法、大企業全体で異なるコンテキストに対処する方法、NoSQLデータベースの役割、そしてビッグデータとメッシデータの両方に対応するというより広範な問題です。
複雑なソフトウェアシステムにおける一般的な問題は、プログラマーが容易に操作でき、ドメインエキスパートにも容易に伝えることができる方法で、複雑なドメインロジックをどのように捉えるかということです。ドメイン特化言語(DSL)は、カスタムパーサーを使用するか、ホスト言語内の規則によって、特定の問題のためのカスタム言語を作成します。
私は、「リファクタリング」、「エンタープライズアプリケーションアーキテクチャパターン」、「UML Distilled」など、ソフトウェア開発に関する7冊の書籍を執筆しています。また、Addison-Wesleyのシグネチャーシリーズの編集者でもあり、このシリーズにはJolt Award受賞作品が5冊含まれています。
私はよくカンファレンスで講演を依頼されます。そこから、私はかなり優れた講演者であると推測しています。これは、私が講演をするのが本当に嫌いなので皮肉なことです。私のカンファレンストークのビデオを見ることで、私の講演についてご自身の意見を形成することができます。
私は長い間ボードゲームのファンであり、真剣な考えを少しの間すべて消し去り、親しい友人たちとの時間を楽しむことができる、心を完全に満たしてくれるゲームを楽しんでいます。現代のボードゲームは、1990年代にユーロゲームの台頭とともに劇的に進化しました。多くの人は、この新世代のゲームを試したことがないことに驚くでしょう。また、私はHeavy Cardboardに定期的に出演しています。
新しい記事の投稿時に通知を受け取りたい場合は、RSS、Twitter、またはMastodon フィードを購読してください。また、最近の変更専用のページもあります。
2024年3月28日(木)12:26 EDT
Twitterのイーロン・マスク氏による買収後の変化が続く中、LinkedInを使って新しい専門的な情報を入手する人が増えているという話をよく耳にするようになりました。そこで、数週間前にLinkedInアカウントを開設し、このプラットフォームで私をフォローできるようにしました。
2024年3月27日(水)12:48 EDT
敬愛する同僚であり友人であったジョン・コーディバック氏が先週、64歳で亡くなりました。
2024年3月26日(火)09:32 EDT
メインフレームシステムは、依然として世界のコンピューティングワークロードの大部分を担っていますが、増大するビジネスニーズに対応するために新しい機能を追加することは困難な場合があります。さらに、機能拡張を遅らせるアーキテクチャ上の課題は、システムの置き換えも困難にしています。リスクを軽減するために、レガシーシステムの置き換えには段階的なアプローチを採用し、レガシー機能を最新のテクノロジーによる実装に徐々に置き換えていきます。この戦略では、メインフレームシステムにシーム(新しいサービスにロジックフローを迂回させることができるポイント)を導入する必要があります。最近のプロジェクトで、アレッシオ・フェリ氏とトム・コグレイブ氏は、長期にわたって運用されているメインフレームシステムにこれらのシームを導入するためのいくつかのアプローチを調査しました。
2024年3月15日(金)11:04 EDT
リファクタリングの最初の章で使用したコードのコピーを、自分で追跡できるようにしてほしいという要望が時々寄せられます。私はこのコードを提供しない理由がありましたが、具体的には怠惰でした。幸いなことに、エミリー・バチェはより献身的で、GitHubリポジトリであるTheatrical Players Refactoring Kataにコードと、リファクタリングを行うのに十分なテストを用意してくれました。
しかし、このリポジトリはさらに進んでおり、C、Java、Rust、Pythonなど、12の言語で同様のサンプルコードが含まれています。
彼女は最近、YouTubeチャンネルに動画を投稿し、その章を読んでいる間にこのコードを使用することを勧める理由を説明しています。彼女のチャンネルには、優れたコードテクニックに関する多くの動画があり、読者が彼女の活動を支援するためのPatreonもあります。
2024年3月12日(火)09:36 EDT
開発者の生産性を測定することは難しい課題です。開発サイクルタイムとスループットに焦点を当てた従来の指標には限界があり、他にどこを参照すべきかについての明確な答えはありません。定性的な指標は、開発者自身から得られたデータを使用して、開発者の生産性を測定し、理解するための強力な方法を提供します。アビ・ノダ氏とティム・コクラン氏は、定性的な指標とは何か、そして主観的または信頼できないという理由でそれらを拒否すべきではない理由を説明することから議論を始めます。
2024年3月6日(水)10:33 EST
ペアプログラミングを行う場合、ペアを頻繁にローテーションさせることが重要ですが、ペアプログラミングを行う多くの組織は、そうすることに消極的です。ガブリエル・ロバイナ氏とキーラン・マーフィー氏は、「ペアを毎日ローテーションさせたらどうなるか?」という問いを投げかけ、3つのチームと協力して毎日のペアローテーションの演習を行いました。彼らは、チームがペアリングの利点と課題、そしてそれらを解決する方法を振り返るための軽量な方法論を開発しました。当初の懸念は克服され、チームはペアを頻繁にローテーションさせることの利点 discovered benefits of frequently rotating pairs. ペアを頻繁に入れ替えることで、ペアリングの利点が大幅に向上することを学びました。彼らの記事では、彼らが開発した方法論、彼らの観察、そして参加チームメンバーによって共有された一般的な懸念と洞察を共有しています。