Pictured is a peer learning day occuring

 

What's the Difference between a software engineer and a software developer?


What is software engineering?

It can be confusing trying to figure out the difference between various titles we hear thrown around in the world of software development. Engineer, developer, coder, what’s the difference? What do they mean? What is software engineering? Which one do I want to be? Which one fits my skills and talents best?

So let’s get rid of the confusion by going through each of these terms and learn what exactly it is that they mean and what each of them does.

Software Engineer

I’ll start with a software engineer because it sounds the fanciest.

To understand what a software engineer is and how it’s different from a software developer, it’s helpful to first understand what software engineering is.

Imagine the construction of a skyscraper. First, the building’s architect puts together a blueprint. Next, the construction workers read the blueprint and use it to construct the building.

A software engineer works in much the same way. For small projects, these two roles may very well be one and the same, but for larger projects, you need to start with a plan before you begin nailing boards into place.

A software engineer works in much the same way. For small projects, these two roles may very well be one and the same, but for larger projects, you need to start with a plan before you begin nailing boards into place.

So what exactly needs to be planned, I mean putting together a website is pretty simple, isn' it? Yes a small website, like a small wooden shed, can be very simple. A large enterprise scale, microserviced, distributed web application, however, can be quite complicated.

Not only does a software engineer need to decide what programming language and framework to use, they also need to figure out how the servers will be arranged on the various pieces of hardware; how to split up the application’s responsibilities across multiple servers; how the development process will work; how code will be checked for quality and pushed live; and what style and coding standards will be enforced.

Software Developer

If software engineers are the building architects, then software developers are the construction workers welding beams together and installing drywall. Unlike an actual blueprint where each nail is accounted for, in software often times many things can only be planned at a high level. It might not sound as exciting, but there is a certain satisfaction that comes with getting to be knee-deep in the code, sorting out the nitty-gritty details.

Software developers also come in many flavors. There are front-end devs, back-end devs, full-stack devs, mobile devs, and so on. If for example, you are a visually-oriented person, you might prefer working as a front-end dev putting together beautiful user interfaces. If you’re more into working with data and love jumping into details though, you might prefer working as a back-end dev.

A software engineer works in much the same way. For small projects, these two roles may very well be one and the same, but for larger projects, you need to start with a plan before you begin nailing boards into place. So what exactly needs to be planned, I mean putting together a website is pretty simple, isn' it? Yes a small website, like a small wooden shed, can be very simple. A large enterprise scale, microserviced, distributed web application, however, can be quite complicated.

Not only does a software engineer need to decide what programming language and framework to use, they also need to figure out how the servers will be arranged on the various pieces of hardware; how to split up the application’s responsibilities across multiple servers; how the development process will work; how code will be checked for quality and pushed live; and what style and coding standards will be enforced.

Coder

Technically speaking, a coder is just another way of saying software developer and thus means the same thing. Practically speaking, however, the term coder is more informal and perhaps implies a more junior developer. Anyone who can write code could call themselves a coder, whereas the term software developer implies a seasoned professional. For example, your 12-year-old neighbor might be able to put together a website for you but would have no idea what to do when working on an enterprise level application.

In Summary

Basically, it all boils down to this: A software engineer creates the software blueprints, a developer translates the ideas from paper to actual working code, and a coder is a developer who’s just getting started.

In terms of figuring out which path you’d like to follow for yourself, it depends on whether you enjoy working on the big picture or getting your hands dirty in the trenches. If you want to unleash your inner artist, then be a front-end developer. If you want to work with databases and APIs, be a back-end developer. If you want to make cool iPhone apps, be a mobile developer. Lastly, if you want to plan out how it all comes together, then being a software engineer might be in your future.

At the end of the day, however, the differences between all of these terms are relatively small, and people tend to use them interchangeably. Someone might refer to a developer as an engineer and vise versa. Ultimately whatever path you choose, software development is an exciting and challenging career. Few paths in life can be as rewarding and enjoyable as solving tough, challenging problems on a daily basis.