Software engineer vs Software developer

I always introduce myself as person with software engineering background. What do I mean with being a software engineer?

In my 20+ years of working with individuals I have categorized people as developers and engineers. This is just my opinion, but me and my peers have identified that there are definite differences between a software engineer and a developer.

A software engineer takes a problem / business requirement, research, plan, design and implement the best technical solution to fit the business requirement while considering future maintainability, scalability and extensibility. Usually the engineer works on the cutting edge of the current software trends and are always pushing the boundary. The software engineer strives to understand what is happening in his code and will be able to measure and predict outcomes. The software engineer does not simply do something because someone told him so. The first sign of a software engineer is that he will live and breathe software and technology and are usually career conscious.

A developer does the task assigned to him within the process as quickly as possible without question or thinking about the larger issues at hand. The software developer is also often a clock watcher with no interest in software development outside of work hours. See The cowboy coder.

Often the type that you are depends on how you grew up within the software development industry. If you were lucky enough to have found yourself in a company that valued technical knowledge with a strong focus on planning, design and implementation then you would be a software engineer. I am a firm believer that an engineer should strive to understand the inner workings of the technology that he works with. The more in depth a understanding you have the better a engineer you will be.

Unfortunately most companies in the software industry spam the market with disposable software that will not survive longer than 3-5 years and it is in these companies that the drones, the software developers are born. These developers grow up without knowing better chasing feature after feature at a hectic pace, developing mundane software that requires almost no technical skill. Often these developers come into software engineering shops for interviews unable to pass the most basic of tests.

When I test applicants I give them an open book test to do in their own time. It’s not about carrying all the knowledge around with you, its not about how quickly you can do things. It’s about how you structure and think and about your general knowledge. During a test you are free to use the internet as a reference as I cannot care less if you know how to code a bubble sort or quick sort out of your head. What is more important to me is that you should know about things and know when to use them… Rather test a person on his structuring and reasoning… What is the point of knowing how to code something if the future is consistently changing?

From the South African job market point of view there is not much difference between a software developer and an engineer and both earn roughly the same which is very sad.  Only when it comes to the practical and verbal tests do you notice the difference. The engineer type will usually end up as a team lead, architect or development manager down the road while the developer will be happy to do what he does, over and over until the end comes as long as he is paid.

If you find yourself being a developer and you have the passion and aptitude make sure to move to a real software house as soon as possible.