Software Engineering vs. Coding: What’s the Diff?

Metallic Blue Orbs Balancing on Small Silver Ball and Metal Beam. Reflections inside balance balls on metal balance beam. Blue, pink color gradient background. Copy space. Scales concept.

There is a lot of talk about the shortage of software development resources and what to do about it. Too often the discussion focuses around the need for “coders”, as though software development is a manufacturing process and simply about writing code. Well technically you can’t get your software developed without doing some coding, but is it really that simple? Here is a list of requirements, go code it?

Let’s delve into this a little further…

You want to develop a piece of custom software that does something so specific you can’t use an off the shelf solution. It can be an expensive endeavor, but you feel it will easily pay for itself in short order with increased productivity or value to your customers. You only have one chance to get it right and it can’t turn into a maintenance nightmare. So, who can you trust to implement your vision?

It’s Called Software Engineering for a Reason

Software engineering is like any other kind of engineering. When done right you get a structurally sound product that delivers the desired functionality, gracefully handles the unexpected actions of users and other outside forces, is easy on the maintenance budget and in general stands the test of time. Because you are building the entire product from the ground up, thoughtful design and engineering is required at every level of the solution. The finest architectural design can be brought down by the weakest link. Just like a poorly designed part can bring down an otherwise well designed machine.

Unless you live under a rock, you have surely heard that there is a shortage of software developers, or in some case the word “coders” is used. There are efforts being made to address the shortage on many levels, but the most visible is the coding boot-camp concept. Boot-camps are schools that offer an intensive program over a short period of time (e.g. 12 weeks) to teach students how to write—or code—software. Compare this to a four-year computer science degree that includes intensive training in software design, extensive coding and higher math (i.e. calculus), not to mention degree requirements and electives in writing, public speaking and business. Even then, new college graduates require months of on the job training and mentoring before they are on the path to being engineers. Logic, problem solving and perseverance are ingrained once you complete this gauntlet.

Fast, Good or Cheap: Pick Two

How will all that education and training make a difference you ask? Immediately tangible results can include concise communications, business acumen and a lot less hand-holding. But a less obvious and longer term result that comes from a professional team is an engineered design that does not require a rewrite or becomes unstable when new features are added or modified. For example, one of the most common mistakes made by inexperienced coders is not knowing where to put the code for a new feature or enhancement. The tendency is to a put it all in one place, or egad, copy it to multiple places, and provide an incomplete solution that does not handle all use cases or leverage the architecture. This happens because design patterns are not always obvious to the untrained developer, and simply knowing how to code along with some basic logic skills is not sufficient training to navigate complex software. On the other hand, the engineering approach is to dissect the requirement, splitting it into business logic, user interface and data issues, determine the most elegant means to introduce the feature in a way that complements the design and add the code in the appropriate places. Unfortunately, the difference between these approaches will not become obvious until well after the damage is done and you have an unstable, high maintenance code base on your hands.

As with any complex endeavor, if “you don’t know what you don’t know”, you could be headed for trouble. Engineers are trained over time to see the gaps in their research and thinking, and will seek to fill them before committing to a solution. An interesting statistic from the 2017 Stack Overflow Developer Survey shows degreed software developers placing greater importance in their formal education.

“…computer science majors and computer engineering majors were the most likely (49.4%) to say their formal education was important or very important.” Stack Overflow

Coders have their place, and boot camps provide a great opportunity for someone who wants to break into the industry. And some percentage have a natural talent for the work that will make them engineers in the end. But, let’s stop thinking that there is a shortcut to creating software engineers when so much of our 21st century world depends on reliable software. We wouldn’t hire boot-camp civil engineers to design and build our roads and bridges. So, why would we do it for the information highway? Next time you are outsourcing software development, be sure to ask prospective firms about the education and experience level of their development staff, and be sure you are comparing apples to apples.

About Scott Risdal

Scott RisdalScott has been in the software development industry for over 30 years and has seen most of what is under the sun during that time. They don’t let him program any more, but he is still good for an opinion. Nowadays most of his time is spent on the business development side of things, and there is a good chance that he will pick up the phone when you call Saturn Systems to talk about your project. If you do, you can also talk to him about: curling, mountain biking, cross country skiing and music.

6 comments on “Software Engineering vs. Coding: What’s the Diff?

  1. Avatar
    Robert Chumley on

    Thanks for the article Scott. You suggest there is no shortcut to the baseline expert software developer. I completely agree with that statement. Question, how do you compare engineers with 5,10, 20 years of experience and what is the difference between a Junior and Senior engineer?

    • Scott Risdal
      Scott Risdal on

      Great question Robert. I could talk for awhile about the difference that more experience brings, but it won’t all fit here so I will stay within the context of the blog and engineering. Using bug fixing as an example, the primary difference between junior and senior is the scale of defect they can handle and still deliver a solution that complies with the intent of the architecture and elegantly solves the problem. Or in the not so perfect world that we frequently encounter, knowing how to implement the “least worst” solution. There is lot more to say on this subject, maybe a sequel is in order?

  2. Avatar
    Bob V. on

    A large majority of software engineers are self-taught. Also, a large majority of CS graduates do not know how to “code”.

    It’s ridiculous to assume that somehow knowledge is hidden from the peasants unless they blow 50k at university when we know that not to be true.

    • Scott Risdal
      Scott Risdal on

      Thanks for your comments Bob. I agree that having a degree is no guarantee someone is going to be a successful software engineer. Nor is it a requirement, though I do think it increases the odds of success considerably. The overall point of the blog was that there are no shortcuts, regardless of which path you take, and trivializing the efforts required to become a software engineer is not good for the industry.

      However, I disagree that the majority of software engineers are self-taught, if you consider the StackOverflow survey as a valid barometer, 76.5% of the respondents held a bachelor’s degree with the majority of those in a technical discipline. I think the self-taught statistic they provide of 90% is misleading, as it refers to developers seeking new skills on their own. I think we can all agree that is a requirement to excel in this profession.

  3. Avatar
    John Gorslacks on

    Are you implying that you must have a computer science degree to be a software engineer or programmer?

    • Scott Risdal
      Scott Risdal on

      Good question John. The short answer is ‘no’, I do not believe that. My goal with the post was to draw attention to what I think is a trivialization of the effort required to be good at programming, and ultimately software engineering. I feel the odds of success are greater with a degree program, but there is more than one way to get there.


Leave a Reply

Your email address will not be published. Required fields are marked *