The Software Engineer and Software Developer titles have typically been used interchangeably in the industry. Most companies have either posted jobs for a Software Engineer and/or a Software Developer. As candidates, we have no choice in the title and would care less as we are more concern about the job description or details (and more than likely, the pay!). But should we really ignore the title? Does the title of the position really matter? That's the question I would like to explore more.
According to the great Wikipedia, a Software Developer (https://en.wikipedia.org/wiki/Software_developer) is a person who develops software and gets involved in all phases of development. A Software Engineer (https://en.wikipedia.org/wiki/Software_engineer) is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work.
We can certainly feel at this point that a Software Developer appears to be a more generic term compared to Software Engineer with the emphasize on software engineering principles. Does that mean a Software Developer does not use any software engineering principles? Let's think about this a little more.
Here's a simple fact. Anyone can code and develop software with the right training and/or background, but each of us have different ways of approaching it. Here is a pretty common example. If we have a piece of code that involves the same business logic in more than one place, we can always write the code and copy and paste in other areas that uses it. However, if there is going to be a change in the business logic, we will have to remember to repeat the same in all the other areas. In software engineering, there is a principal called "Don't Repeat Yourself" or the DRY principal. If you have not heard of it before, essentially, it argues against writing code over and over again. Instead, it calls for the code to be refactored into a single method or function that can be reused in the areas that needs it. If there is a change that needs to be made, we simply need to refactor the single method and the change will be available in all other areas. We can see that only with good software engineering principal can one create reusable, maintainable software.
So let's come back to the original question we had. If your title is a Software Developer, does that mean you don't (need to) make use of good software engineering principles? Absolutely not! Anyone who is developing software for a living should be making use of good software engineering principles regardless of what their title says. The point is, I would prefer to call myself a Software Engineer rather than a Software Developer, because to me, my title makes a reminder that every line of code I write is for the sake of writing reusable and maintainable software and hence to think about what I am writing and how I can best achieve good software engineering principles. In a sense, my title aligns with exactly what I am doing on a daily basis. Thus, I hope every reader who is in the position of hiring would give this a thought the next time you are posting for a new position and every candidate can give some thought in the title of the position that they are applying for.
Good explanation. Thanks for sharing.
ReplyDeleteThanks Michael!
Delete