Recently I was asked “What’s the difference between a software developer and a software engineer?”
The answer? Well it depends on who you ask. So after a little thought here is what I consider each one to be. It is by no means meant as a true definition, just a way I’ve categorized myself over the years.
Coder: A person who can read some code, make changes, and to some degree understand how those changes affect the output. Back in the 90’s I used a sprite animation library called SpriteWorld. I didn’t really understand how it worked at first, but I could alter some code and change the sprites appearances, the layout of a tile-map, background images, etc. Notably, I wasn’t capable of writing a whole game myself.
Programmer: A person who writes code and understands it well enough to build a basic set of functionality. After working with SpriteWorld and other graphics libraries (GraphicsBuffers, QuickDraw) for awhile, I understood enough to write my own graphics routines (blitters). I was far from a graphics expert, but I knew the ins and outs of blitting (copying, masking, and altering bits for graphics). At this point I was capable of writing a part of a program, or a demo. But still unable to build a fully featured app.
Software Developer: A person capable of building simple programs. At this level you understand nearly all code you look at, at least to some large degree. Even in languages your not as familiar with. You are fully capable of making a multi-screen app and, when necessary, can debug the app when problems arise (they surely will). I wrote parts of games in the 90’s but I didn’t publish my first full game (Consumed) until 2008.
Software Engineer: A highly proficient Software Developer that is capable of managing a complex system. A person who is not only able to build a fully functioning app but is experienced enough to know how to build it in a way that is easy to refactor, self documenting, and as a result easier to debug. They know that consideration and forethought on the front end can save days of work and headaches down the road. They devote themselves not to making the cleverest code, but to making their code obvious. They know the best piece of code is the one you never have to write.
What am I? I’m a student of code.