Core S2 Software Solutions

Software Developers versus Software Engineers

Older article from Lost in Dev; originally written by Jeremy Bridon.

I talked to a Microsoft employee today about how to prepare for any future interviews. Apart from some great tips which I will write about later, there was one subject of interest I started thinking about: What is the difference between a Software Developer and a Software Engineer? Which one am I? Should I try to be one more than the other? A few simple questions I found the answers to with a quick Google search.

If you look them up in a dictionary, you get something like this: A Software Developer, or Computer Programmer, is a person who writes, tests, debugs and maintains source code. A Software Engineer is one who covers not only technical aspects of Software Development, but also the management and design issues. More clearly, I would define a Software Developer as someone who’s specialization is writing code, both in general or in a specific language. A Software Engineer is one who is disciplined in Software Development as well as high-level programming, which would be program/application design.

Is being one better than the other? Yes! The reasons has to do with being competitive in today’s job market. It is hard to be a good developer, but in today’s job market you have to be more than that; You must be both comfortable with the low level programming (implementation) as well as high level concepts (creating application designs). Why is that? Simple because the market is saturate with Software Developers whom are all over-seas! If you want a job with a computer science degree, you must be unique and have more skills than the average competitor.

Now I have to ask a hard question: Which one am I? In all my classes and projects, I know I strive to create the best code as well as designs, so I think I am a Software Engineer. No one can be called an Engineer without real-world experience, so in some ways, I can not yet truthfully call myself an engineer, even after I graduate. Still, I will continue to do my best to learn these advanced design skills.

A technical example to show the differences are the approaches in function implementation. A Software Developer writes code quickly and efficiently, but usually without any regards to design. This type of person’s implements a “exponential power function” with a simple for loop. Their goal is to multiply out base untill an itterator has hit the exponent. They might right some extra code for corner cases such as an exponent of zero or negatives.

A true Software Engineer’s solution would be both quick, efficient and optimized! His/her implementation would involve a simple algorithm that cuts the work to a fraction by using recursion and simple mathematical tricks (Such as 5^4 is the same as 25^2). This kind of ‘problem solving’ method is unique and critical to the definition of a Software Engineer. They are the leaders of new technology since only they can solve problems.

If you are a developer, ask yourself: What type am I and what should I be? Someone who loves development are naturally Software Engineers. If you want to learn more about how to become one, I would recomed getting a competitive programming book or an algorithms design book.

On another note, the site has completely changed, with several pages removed and replaced by [Projects]. This page now links both the source code, documentation, description and release packages of several projects. Check it out!

This entry was posted in News & Updates. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

Sites map