Design is essential to software product development, and developers have a crucial role to play in good software design.
Atomic’s path to understanding what design does (and all the various activities covered by that seemingly simple word) began when our company was a few years old. We were turning out great code, and we were predictble with time and budget, but we’d started to notice that:
- Our startup clients tended to fail.
- Our traditional clients were overconfident in knowing what users needed or wanted.
- Our software wasn’t very beautiful.
In sum, we knew how to build things right, but didn’t always know the right thing to build.
It took Atomic years to educate ourselves, find and hire the right sort of designers, master a range of design practices, and integrate design and development in our agile product development process. The investment was well worth it, and the success of our products is a tribute to that work.
I recent shared this story with a group of young developers last month at the University of Michigan’s MHacks hackathon. You can watch the 15-minute talk below. It covers:
- What design really is.
- What software design includes.
- What sort of developers are good at design.
Here are a few excerpts:
“A lot of us think engineers build things, then designers hit them with the pretty stick. But visual design is only one small part of software design.
“People appreciate beauty, but what they appreciate even more are products that are easy to use, that aren’t frustrating, that solve their problems, that simplify their lives, that save them time, that don’t make them feel stupid. Using design to understand the user and what they need is what gives us a chance to create software that will get used. Because the most expensive software on earth is software that doesn’t get used.”
“Empathy is the skill that lets you learn about your users. Design is how you apply that knowledge.”
“All of the design activities I just listed are accessible to the right sort of developers. Maybe you don’t want to pick colors for your application, but you can and you should want to take ownership over the design of your work.
How to Design Your Career
I closed my talk with a challenge to the young software developers-in-training. I suggested that as they complete their education and think about their first job out of college, that they turn themselves into the study of an empathy-driven design project. What does their research subject (themselves) really care about? What fulfills them? What do they want in life?
The conventional answers to these questions include things like:
- Taking maximum advantage of their expensive education
- Making their mark on the world
- Disrupting a staid industry
- Working for a firm even their grandfather has heard about
- Starting their own company
- Making a ton of money
But there are other things to consider as well:
- Being able to learn from others
- The values of the company you work for
- Working in a company with strong social bonds
- Being able to master your craft
- Working on problems that matter
- Helping older companies innovate with technology
- Financial stability
- Establishing roots in a community
Studying themselves and knowing what really matters to them, not just what’s supposed to matter, is the start of finding the right type of job and the right type of company to work for, and hence a great start to a career and fulfilling life.