Jan. 27, 2021, 11:37 p.m.

Software Engineering is a learning process; working code a side effect

Known Unknowns

Jonathan Thaler wrote Software Engineering is a learning process, working code a side effect where he discusses the primary purpose of software engineering. As an industry, we primarily see our role as the creators of code. He argues that code is only a side effect of the true purpose of software engineering: learning the problem domain.

It is entirely possible to find solutions to business problems that require no technology at all. I’d state it like this:

“Solve the business problem. If necessary, use code.”

Software engineers like to look at every problem through the lens of software and how some beautiful code will be the best solution.

Instead, we should dial in on the business domain and learn it inside and out. Professor Thaler goes on to discuss the advantages of agile methodologies to quickly create hypothesis, test them, and collectively learn the domain.

Plan-based methodologies (e.g. waterfall) make grand assumptions about the domain up front. These assumptions are not tested until late in the process when, if proven false, it is too late/too expensive to do anything about it.

When we solve problems no one in the business realize they had - because they didn’t - we have failed those we have been hired to help. Understanding the needs of the users, sponsors, and stakeholders is the key to successful software.

You just read issue #44 of Known Unknowns. You can also browse the full archives of this newsletter.

This email brought to you by Buttondown, the easiest way to start and grow your newsletter.