Code Sense and Striving for Simple Design

Ben Harrison
2 min readJan 6, 2018

--

Early in my career I heard someone say this on the topic of complexity in Software Engineering:

“A good Software Engineer can take a complex problem and build a solution.
A great Software Engineer can take a complex problem and build a simple solution.”

I’ve worked in the world of Software Engineering for the past 13 years or so, and I can say without hesitation that this statement is absolutely one hundred percent true. Any quality Software Engineer can solve basically any technical challenge. The broader issue, however, is that rarely are real-world problems solved by overcoming technical challenges alone. Software is more than technical; it’s also an art.

The book Clean Code[1] describes this area of the skill set as “code-sense”:

A programmer without “code-sense” can look at a messy module and recognize the mess but will have no idea what to do about it. A programmer with “code-sense” will look at a messy module and see options and variations. The “code-sense” will help that programmer choose the best variation and guide him or her to plot a sequence of behavior preserving transformations to get from here to there.

In short, a programmer who writes clean code is an artist who can take a blank screen through a series of transformations until it is an elegantly coded system.

There are various facets of design all throughout Software Engineering: user-interface design, architecture design, database design, data model design, api design, design of documentation, design of source code to be unit testable, design of components to be modular and replaceable, design that supports separation of concerns, and design of source code to be readable and easy to understand. Just to name a few.

Software Engineers get confronted with design challenges such as these every day. Without good code-sense the business problems will still get solved (technically), but the real goal should go beyond just solving the problem. The goal should be to be to solve it as cleanly and simply as possible.

[1] Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin. Page 7 under the section “The Total Cost of Owning a Mess”.

--

--