Two Books Every Top Software Architect Should Read

When asked what books to read, I always recommend the following two books:

Are Your Lights On?: How to Figure Out What the Problem Really Is by Donald C. Gause; Gerald M. Weinberg

Bothered by SLOW Web UI to manage vSphere? Want to manage ALL your VMware vCenters, AWS, Azure, Openstack, container behind a SINGLE pane of glass? Want to search, analyze, report, visualize VMs, hosts, networks, datastores, events as easily as Google the Web? Find out more about vSearch 3.0: the search engine for all your private and public clouds.

The Design of Everyday Things by Donald A. Norman

“But, they seem nothing to do with software!” You say.

You are right. But remember the blog title has a keyword “top.” If you want to stand out in any profession, some of the extra skills may well be outside your typical set as others expect.

The same is true for software profession. I assume you already know the basics of software programming, process, design patterns, etc., so another programming book doesn’t help you much to the top technically.

Let me explain why and how these two books help you.

The first book teaches you how to find out a real problem. How many times you see people try to solve a wrong problem? Software is designed to solve real world problems. If you miss the problem in the first place, you would shoot a wrong target resulting in no achievement in end.

Sounds like the product mangers should read this book more than an architect? Absolutely true. Remember in the book Mythical Man-Month, the role of architect is described very much like a PM today. A top architect sometimes influences the product more than a product manager in most technical companies.

After reading this book, I changed many of my thoughts regarding the problem and resolution strategies. For example, the problem is defined as the difference between things expected and things perceived. Does it mean all the problems are subjective? I will leave it to you to figure out.

The second book is written by a psychologist who had studied many things like the design of door handles. He summarized several basic principal guidelines to design everyday things.

  • Visibility. Make the relevant parts visible. From its appearance, the user should be able to tell the state of the device and the possible actions.
  • A good conceptual model. It could have several versions from the designer to the users. If they match, it’s quite user friendly; otherwise hard to use. Help the user by visually communicating a good mental model of how the system works.
  • Good mappings. Help the user determine the relationship between actions and results, controls and effects, by using natural mappings.
  • Feedback. Give immediate feedbacks to users about the results of their actions and the states of the system.

I believe these guidelines are well applicable for software even for API design. Wouldn’t be nice if we could make the software like everyday things? When it comes to API, the concept model is the object model. If you have a clean object model that is consistent with others’ perception, your API will be easy to be consumed by other developers.

To summarize, if you can design a software to address real problem, and make it work like everyday things, your software will succeed. So will you!

That is why I highly recommend these two books to you.

This entry was posted in Software Development and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


    My company has created products like vSearch ("Super vCenter"), vijavaNG APIs, EAM APIs, ICE tool. We also help clients with virtualization and cloud computing on customized development, training. Should you, or someone you know, need these products and services, please feel free to contact me: steve __AT__

    Me: Steve Jin, VMware vExpert who authored the VMware VI and vSphere SDK by Prentice Hall, and created the de factor open source vSphere Java API while working at VMware engineering. Companies like Cisco, EMC, NetApp, HP, Dell, VMware, are among the users of the API and other tools I developed for their products, internal IT orchestration, and test automation.