The State of the Art

There is an enormous discrepancy between our understanding of Software Engineering as it should be practiced and the ways that we actually practice Software Engineering on the job. We know that proper designs and methods can save tens of thousands of dollars down the line, yet we continue to make messes of our systems. Why does this happen?

I think a big part of the problem has to do with a split in mentality. I’ve noticed two distinct sides of people (including myself) when it comes to Software Engineering which I think of as the Academic and the Employee. The Academic knows the right way to do things, and sees the value in those practices. Unfortunately when we are at work we are burdened by many different pressures. Deadlines, managers, and promises that must be upheld constrain and redirect our efforts. The Employee must bow to all of these concerns and all too often this causes us to discard the sage advice of the Academic in order to “just get the job done.”

Over time, as this continues to happen, we become conditioned to ignore the Academic. His knowledge is considered completely theoretical, having no valid application in the workplace. Even if we are still trying to bring the Academic to bear in our work, the first sign of difficulty will often send us running for shelter in the Employee’s ability to get things done faster and without having to think as much. A perfect example of this is when looking at legacy systems. When we are working with existing code, if we can’t immediately understand the code, we stop trying. We feel that there’s no reason to take our time or to be neat about things. After all, the code is already a mess, isn’t it?

A huge factor that plays into this is the fact that the way our code looks often has no effect on the end user. In some cases poor design will result in performance problems or missing features, but for the most part we can get away with it. This is fine for the Employee, since all he cares about is getting his job done and pleasing the customer. The Academic, on the other hand, is crying inside of us. We could have done a much better job and we know it.

We need to break ourselves of this habit, take our profession seriously, and have some pride in our work. Aside from having a better sense of satisfaction in ourselves, we will continue to deliver results for our customers (which the Employee likes) and at the same time avoid myriads of problems in the future (which the Academic likes).

About Adam Platt

Adam Platt is a technologist with more than a decade of experience across the full stack. His passion for technology and penchant for rendering complex technical ideas into simple terms have made him an in-demand speaker. His resume includes BriForum, the PowerShell Summit, teaching engagements and more.

He is one of the 10 types of people who understand binary and he can solve a Rubik’s Cube.

About Adam Platt

Adam Platt is a technologist with more than a decade of experience across the full stack. His passion for technology and penchant for rendering complex technical ideas into simple terms have made him an in-demand speaker. His resume includes BriForum, the PowerShell Summit, teaching engagements and more.

He is one of the 10 types of people who understand binary and he can solve a Rubik’s Cube.