ソフトウェア設計者がステップアップのために心がけるべき8つの習慣
By DragonImages
プロのソフトウェア設計者の働き方や習慣をまとめた本「Software Design Decoded」から、ソフトウェア設計者がステップアップするために身につけるべき8つの習慣がピックアップされています。
Eight Habits of Expert Software Designers: An Illustrated Guide | The MIT Press Reader
https://thereader.mitpress.mit.edu/habits-of-expert-software-designers/
◆1:ユーザーと関わりを持つ
優れた設計者はユーザーに対して鋭い洞察力を持っています。ユーザーを調査したり、会話したり、意図的に設計プロセスや中間設計のテストに関与させたり、さらには設計チームで積極的な役割を担うように依頼して、ユーザーの意見を引き出します。しかしユーザーの言葉をすべて額面通りに受け取ればいいというわけではなく、潜在的なニーズを探り出し、ユーザーが本当に必要とするものに目を向けなければなりません。
By jpozzi
◆2:簡潔な抽象化
ほぼすべてのソフトウェア開発者は抽象化を行いますが、優れた設計者はより簡潔な抽象化を目指します。優れた抽象化により、どんな問題に対処するのか、問題をどのように解決するのかが見ただけで分かるようになります。また、複雑な構造を効率的に導入、参照できるような抽象化を意図的に設計しています。
By seventyfourimages
◆3:問題の本質を突く
ソフトウェア設計において生じる問題を首尾良く解決するためには、重点を置いて考慮すべき核となる部分があります。考え無しに設計を変更して問題を解決しようとすると設計が破綻し、周辺機器の設計を大幅に変更することにつながります。優れた設計者はまず問題の本質に重点を置き、周辺機器の設計に費やす労力を減らします。
By photobac
◆4:設計のシミュレートを行う
優れた設計者は、想定されるソフトウェアの動作をシミュレートし、設計のどの部分がどんな役割をどのように担うか、どのように機能するかを想像します。他人と協力してプロジェクトを遂行するときは、ソフトウェアの操作を段階的に言語化して、設計を逐一説明します。頭の中で設計をシミュレートし、時間をかけて何度もシミュレートを繰り返します。
By halfpoint
◆5:他人から学ぶ
建築家が既存の建物からインスピレーションを得るために街を歩くのと同じように、優れたソフトウェア設計者は他人のソフトウェア設計を「どのように動作するか見る」ために調べます。将来的に役立つ可能性のある設計ソリューションのレパートリーに追加するためにも、他人のソフトウェアから学んでいるのです。
By lzf
◆6:広い視野で問題を捉える
優れた設計者は、取り組むべき問題から一歩下がって、より広い視野で問題空間を検討し「問題が何であるか」を理解する代替方法を探します。問題空間を再考するか、同じ空間で別の問題に対処することで方針を変え、元の設計問題とは異なる解決手段を意図的に選択することで、実際の問題がどこにあるか、主要な障害をどのように解決するかの洞察を得ています。
By Rawpixel
◆7:エラーはチャンス
ソフトウェア設計には定期的にエラーが発生します。優れた設計者はエラーを恐れるのではなく、エラーをチャンスとして受け入れます。エラーを設計の特徴として受け入れ、エラーと周辺のコンテキストを時間をかけて調査します。多くの場合、何が起こったのかを理解することで、問題や解決策に関する洞察が明らかになります。
By picturepartners
◆8:意図していない動作を考慮する
ゴールに焦点を当ててソフトウェア設計を行うことは当然ですが、優れた設計者は、設計の際に意図していない動作を起こさないかどうかも時間を費やして考えます。ソフトウェア設計を検討する際に、過剰または過小な設計がされていないかどうかを調査します。
By Good-start
・関連記事
プログラマーを30年間やってきた経験から学んだことまとめ - GIGAZINE
プログラミングで問題解決するためにとるべき3つの手順 - GIGAZINE
一度身についてしまった悪い習慣を断ち切るには? - GIGAZINE
「生涯現役開発者」を貫く40代~60代のソフトウェア開発者たち - GIGAZINE
生死をも左右するソフトウェアの設計・構築はどうすれば完璧に近づけられるのか? - GIGAZINE
・関連コンテンツ