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"?
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.
The more important distinction between these job titles is that they refer to specific disciplines of knowledge. Namely:
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.
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:
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).
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.
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!