The Most Important Lesson about Software Development from the Past 50 Years

A focus on understanding users and their usage of the solution is the best key to success.

Karl Wiegers
Analyst’s corner

--

A screenshot of a an accounting application, showing various tasks a user might want to perform.
Graphic by Author

I first learned to program computers in college in 1970. Since then, I’ve performed many roles in software engineering: coder, designer, business analyst (BA), tester, project manager, documentation writer, team manager, process improvement leader, consultant, trainer, and author. Plus, of course, like all of us, I’m a user.

People sometimes ask me, “What’s the most important lesson you’ve learned about software development in all that time?” Here it is, lesson #4 of 60 lessons in my book Software Development Pearls:

A usage-centric approach to requirements and design will meet customer needs better than a feature-centric approach.

Let me describe why I believe this is such an important principle.

The Feature-Centric Problem

There are several problems with taking a feature- or product-centric approach to requirements elicitation. Asking users questions like “What do you want?” or “What do you want the system to do?” open the door for a flood of random information that’s hard to turn into a satisfactory solution. Focusing on…

--

--

Karl Wiegers
Analyst’s corner

Author of 14 books, mostly on software. PhD in organic chemistry. Guitars, wine, and military history fill the voids. karlwiegers.com and processimpact.com