In the software industry you might have heard of the role as a Software Developer or the role as a Software Engineer.
One might think naively that both roles are equivalent and that they are the same. There are certainly commonly used interchangeably. However, they are not the same. Let me explain.
A Software Developer is basically a programmer who writes code to implement features for building a software application.
On the other hand, a Software Engineer is pretty much similar where a Software Engineer can program features for building a software application but where it differs is that a Software Engineer should also be responsible for the engineering of the software application.
In layman’s terms, writing ✍️ application code is not enough, a Software Engineer responsibilities spans a wider context where you would need to get involved in the running operations and maintenance of the software application you are building.
Also, as a Software Engineer, you should know the software engineering principles of building a software application such as making it production ready, packaging up, release it, make it deployable, and once deployed; having the required monitoring and metrics in place for observability.
So you can see… a Software Engineer is definitely not a Software Developer.
You can also argue that a Software Developer might not constitute a Programmer or Coder too. That’s for another day to discuss.
Sometimes, software engineering can be seen as a bit of a Science (because of engineering) and software development can be seen as an Art 🖼 (because of how you develop the software).
Both software engineering and software development can be seen as part of building software.
So is building software an Art? or Science?
It depends on what way you look at it to be honest.
Some of you might relate yourself to be just a Software Developer where you just develop the code and probably nothing else. You might not even care about anything else.
So you end up become a craftsman. Sometimes this kind of you is more commonly known as a Software Craftsman. You can spend hours and hours on trying to craft the perfect piece of code you can to develop your feature. That is, you try to write the most beautiful code that can be ever written. You try to follow clean code principles every time. To you, software it is like a piece of Art 🖼 and your coding skills is your tools (paintbrush 🖌) .
Or maybe your prefer to be a more realistic and objective person where you try to engineer your way to building a piece of software. This doesn’t necessary mean ditching the good coding practices within the software development industry but merely means that you shift your focus towards providing a more pragmatic approach to building your software where you care about the surroundings a bit more.
An engineer in you believe in the Science behind software construction more.
You believe everything related to software construction has a meaning.
You believe everything related to software construction has a ‘way’ towards achieving a certain goal. You feel there would also be a way to do something and nothing is impossible.
… Nothing defies logic.
So what would you rather be?
It doesn’t matter really. There is of course no right or wrong answer.
Ultimately, it is your own career path. You choose what you prefer!