Eight habits of software design experts
2021-05-04 15:45:45 【Jiedao jdon】
The best designers work with specific habits 、 Learnable practices and principles to follow .
What makes a software design expert ？ The traditional answer is experience and innate ability , It's not satisfying , Although it contains elements of truth , But it offers very little , We can't learn and generalize from it . obviously , Experts not only do their work at random . On the contrary , They have specific habits in their design work , The practice learned and the principles followed .
Some people may be familiar with them , Others are not familiar with . Some are easy to put into practice , Some don't . Some have an immediate impact , Some don't . however , It often happens that , Professional software designers will be keenly aware of all these practices , And use it for reference when the situation requires .
Many years of research on professional software designers and the foundation of their working methods , our 《 Software design decoding 》 A book illustrates 66 A habit , Practice and principles , Let's focus on some of them . They've been confirmed over and over again by people in the field , And each can be traced back to the academic literature that records the behavior of experts .
Now , Software is no longer limited by technology , It's limited by imagination . However , Software that turns imagination into reality can be complex , And the environment in which this transformation must take place may be more complex . This makes extraordinary demands on software designers , It's just us together “ Step up your efforts ” To achieve continuous excellence in design to meet these requirements .
1） Experts involve users ：
Experts are acutely aware that users . They deliberately involve users in the design process , Conduct research , Talk to them , Get them involved in testing intermediate design , They are even required to play an active role in the design team .
However , Experts don't fully accept what users say . They are aware of the potential limitations , Because the user's mind is usually filled with current experience . Experts not only focus on the needs of users , Also focus on the actual needs of users .
2） Experts design elegant abstractions ：
When all developers create abstractions , Experts will design it . Good abstraction can show what's important , No matter what you do and how you do it . Through an abstraction , It conveys the problem to be solved and the mechanism for its solution .
Experts are not satisfied with any abstraction , They deliberately seek elegant abstraction , They can effectively introduce , Understand and reference complex structures .
3） Experts focus on the essence ：
Every design problem has an essence , A set of core considerations , These issues have to be successfully understood , And in designing solutions “ Put the nail in ”, To solve the problem successfully . This nature can be destructive ： Changes in the core can greatly change the peripheral decisions that need to be made . Experts first focus on the essence , And then postpone the effort to peripheral design .
4） Experts keep simulating ：
Experts simulate all aspects of the software they envision , And how different parts of the design support various scenarios . When working with others , Experts will explain the operation of design step by step , So as to design on a regular basis . When alone , They'll simulate psychologically , And design over time .
5） Experts look around ：
It's like an architect walking around the city and taking inspiration from existing buildings , Software experts also check the design of other software , With “ See how they do it .” They often do this to meet their specific challenges , But they often take the time to look around , To increase the variety of design solutions they may use in the future .
6） Experts reshape the problem space ：
Experts usually take a step back from the stated problem , Think more broadly about problem space , Looking for understanding “ What's the problem ” Alternative methods . They may change direction by re understanding the problem space or solving other problems in the same space . They deliberately choose goals that are different from the original design problem , Because it leads to insight into the real problems or how to overcome key obstacles .
7） Experts see mistakes as opportunities ：
Design often involves mistakes ：“ error ”, misunderstand , obstacle , Wrong turn , emergency . Experts are not afraid of mistakes , It's about seeing mistakes as opportunities . They accept it as an inherent part of the design , And take some time to explore the failure and the context surrounding it . Understanding what's going on often reveals insights about problems or solutions , For example, suppose , misunderstand , Dislocation and emergency .
8） Experts think about things they didn't design ：
Although it's natural to focus on what design has to do , But experts also spend time thinking about what design is not going to do . In clarifying and considering boundaries , They will find over design and under design .
Marianne · Peter （Marian Petre） I'm a computer professor at Open University .Andrévan der Hoek Professor of informatics at the University of California, Irvine . They are “ Software design for decoding ” The author of .
- 领域驱动设计简介 - danhaywood(点击标题见原文)
- Next generation language robot surpassing Siri and Xiaoai: Turing test of gpt-3
- Class table inheritance pattern
- Block balking mode
- Proteus is a new platform for building streaming microservices using rsocket
- Introduction to Domain Driven Design - danhaywood
- 什么是Little定律(littles law)
- What is little's law
Introduction to OpenAPI specification
Hello CTP series blog
CodeForces CF242E (CodeForces Round 149 Div.2 Problem E)题解
Codeforces cf242e (codeforces round 149 div.2 problem E)
探索使用 Golang 和 Webassembly 构建一个多人游戏服务器
Explore using golang and webassembly to build a multiplayer game server
Laser ＆ Photonics Rev.：驾驭消逝波——一种新型的各向异性超构表面
- Small science: Bi te Se compound heterostructure nanosheets achieve significant improvement in thermoelectric properties
- Laser & Photonics Rev.: driving evanescent waves -- a new type of anisotropic surface
- Aenm: high performance halide solid electrolytes based on cationic lattice control
- Small: driving force and synergistic mechanism in peptide hierarchical assembly
- Rhel8 learning section 3
- 探索使用 Golang 和 Webassembly 构建一个多人游戏服务器
- Explore using golang and webassembly to build a multiplayer game server
- Structure and Deconstruction
- 第一性原则：伊隆·马斯克（Elon Musk）论自我思考的力量 - jamesclear
- The first principle: Elon Musk's view on the power of self thinking - James clear
- Operation and maintenance boss ridicules me, you don't know this?
- Web security practice
- SQL memo
- One year summary of event traceability and cqrs implementation
- Netflix test c assandra:- Million writes per second
- How to reform the current system architecture
- Two terminal network reliability
- 干货 | 日访问过亿，办公IM及开放式平台在携程的实践
- Dry goods daily visit over 100 million, office IM and open platform practice in Ctrip
- Programmer's 4 ability levels and 8 work bad habits, certainly have you
- Mockito 小结
- Summary of mockito
- [玩转UE4动画系统＞基础篇] 之 什么是射线检测
- What is radiographic testing
- Vscode + sublime installation and Sinicization
- Vscode + sublime installation and Sinicization
- 软件设计专家的八种习惯 | 麻省理工学院出版社
- 讨论：这样基于Domain Event的分层是否合理？