Decomposition in Software Development and in Life

[fa icon="calendar'] 11/20/13 10:11 PM / by Alnoor Pirani

I just completed my first week at Launch Academy and it’s already been a transformative experience. One of my biggest takeaways from this past week is that software development is more about the human brain and its capacity to solve problems than it is about machines.

Developers have an acronym to describe this phenomenon: PEBKAC (Problem Exists Between Keyboard and Chair). Turns out we as software developers are the biggest problem facing software development!

The answer to why we are often the cause of our own coding problems is pretty obvious, we don’t think like computers. More precisely, we have trouble communicating our needs in sufficient detail and granularity. But how do we more effectively communicate with computers without going crazy?

A universal technique used in problem solving is to break the problem into smaller parts. When you break down a problem, you can more easily focus on the details within each sub-problem and uncover other problems you may have overlooked. The human brain has a better chance at fixing issues when it’s given a smaller problem to fix. And smaller problems involve smaller blocks of code and a better chance of being bug-free. Win-win.

Software developers have been breaking down problems from the beginning, but this way of thinking continues to influence new movements in the industry because of it’s universality and effectiveness. For example Test-Driven Development is all about testing smaller portions of software continuously during the development process as opposed to waiting until the end. In addition, Source Control Management best practices recommend “atomic commits” or single logical changes to make it easier to revert individual elements and reject others.

For a budding software developer (or anyone learning a new skill) decomposition is an important tool as well. As beginners it’s easy to get overwhelmed by the vast body of knowledge to process. As creators, it’s also overwhelming to look at a project and not even know where to begin. It’s validating to know that the same principles of breaking down problems into smaller and more manageable pieces has a universal truth. The old adage, “Take life one day at a time” has new meaning for me this week.

Topics: web development