Software Engineering Vs Software Development Explained For Recruiters

Software Engineering Vs Software Development Explained For Recruiters
Post Author: Aaron Decker | Image by Tongpradit Charoenphon from Pixabay
Date published: February 27, 2020

What I do for a living is program computers. Mostly I write code to make web applications for SaaS style software products or business applications.

I'm a programmer. I write code for a living, its fairly simple to explain.

But why are there so many job titles - especially the two big ones "Software Engineer" and "Software Developer"?

Job titles - Software Engineer Vs Software Engineer

For the most part these are used interchangeably. It seems that "Software Engineer" has recently gotten to be a bit more popular.

Nine times out of ten what companies are talking about here is that they need a programmer to work on custom software for them.

Disciplines - breaking it down

The more important distinction between these job titles is that they refer to specific disciplines of knowledge. Namely:

  • software development
  • software engineering

Now these are different things if you ask most people. A rough definition of each might be as follows:

Software Development: The practice of creating software. Software Engineering: The practice of applying engineering principles to software.

So you could think of software development as simply creating software (programming and producing a product), while you could think of software engineering as applying specific methodologies and practices related to software.

Examples of Software Engineering Principles.

One definition of Engineering refers to applying scientific or mathematical principles to build machines. You might think Software Engineering then is just applying Computer Science to the field of Software Development. But I think that isn't exactly accurate and not really the way most people think of it, computer science is a useful subset of knowledge for creating software but I think software engineering is mostly about other things.

What are these things? Here are some examples:

  • Planning: What methodologies can you employ to estimate and plan out your software projects?
  • Testing: What can you do to ensure you ship reliable code?
  • Design: How can you design a robust system?
  • Maintenance: How can you make sure your software will run smoothly for customers?
  • Support: What do you do when your software fails?
  • Security: What practices can you follow to ensure you do not expose vulnerabilities?

You can see most of these things could be considered things secondary to actually creating software - but they are extremely important to any organization relying on software.

In my experience the larger the organization and larger the application (in terms of customers) the more focus there is on engineering practices to make sure software is being built in a way that is sustainable, reliable, and secure (to name a few things).

Back to job titles...

I've had conversations with other programmers about what the difference between a software developer and a software engineer is. While employers and many companies tend to use these terms interchangeably, I do believe many programmers have opinions on what the exact distinction here is.

Usually the definition ends up being something like this:

A software developer is a programmer who can ship a working product.

A software engineer is a programmer who can ship a working product that can scale out to 1 million active users, integrate with other applications within the organization, comply with regulations and security policies the business is subject to, expose a well crafted API that other developers can use, has good test coverage, a good CI/CD pipeline, and not lose customer data and fail catastrophically in production.

Summary

As a recruiter I think you can assume the two job titles "Software Engineer" and "Software Developer" are being used interchangeably.

But do know that there a discipline of knowledge called "software engineering" and it encompasses specific things!


Want updates?

Want new posts about tech topics emailed to you? Sign up to the list below 👇

Also, if you are interested in learning technical topics through a video course specifically created for recruiters, don't forget to check out the courses I offer.

The main course "How to Speak Software Engineering Jargon for Recruiters" is specifically designed to help tech recruiters get up to speed fast on technical topics.


Written By Aaron Decker

I'm currently a co-founder and head of engineering at a venture backed startup called Bounty. I tend to think of myself as a backend engineer that can work up and down the stack in Typescript. Previously, I have worked as a Tech Lead and hired teams, and as a Senior Software Engineer at multiple fortune 500 companies building large products. I also did a brief stint teaching programming courses as an Adjunct Instructor at a local community college, which taught me a lot about breaking down complex things into understandable chunks.