There are quite a bit things written about the differences between a developer and an engineer in terms of roles, skills, salary, responsibilities, and tasks. Of course, the context being is computers, more specifically, software. Also sorry for my agonizingly terrible thought process here. My train of thought always seems to derail ever since I was born.

I’ve seen it to be most of the cases that many developers tend to throw the engineer title here and there. To a point where I can’t ignore anymore. But that has nothing to do with my maniacal attention to detail. The title “programmer/coder” can also be included into the matter, but I think its not as much misused in professional and social settings. In fact, none at all. A programmer is someone who basically instructs computers to do things by writing code. You can basically write a for loop and declare yourself a programmer, that is your birth right. But its cooler to call yourself an engineer although you aren’t engineering much. I see the temptation, but please. Changing buttons, centering divs? That is hardly engineering. Let’s not.

First of all, I don’t go into an assumption that either of these titles is greater or better than the other. There is a preconception among society that makes the engineer title more sound and firm. Kind of a subtle “one of those smart guys” feeling. But the thing is, you’d have to be one to use the title. I mean, this is not absurd to say. I don’t care much about background and degrees. In my head, I believe there are only two kinds of engineers. And again, in my opinion, for someone to call themselves an “engineer”, it is essential they fulfill the responsibilities of one. In a typical software development team, we might assume the following simple (and hypothetical) hierarchy:

  • Software Engineer
  • Software Developer
  • Programmer

Yes, there are QA, this and that too. Oversimplifying for a purpose here. And I say simple and hypothetical, because sometimes the lines are blurry and there can specific and different titles used, different team structures etc. There is a spectrum to it. But mainly, the programmer is the one doing specific coding tasks. Small picture responsibilities. On the other hand, the software developer, while doing coding tasks, at some level, has a say (ability, talent, knowledge, experience, you name it) in the design, development, architecture, deployment and testing of the software. Understands domain-specific subjects, has a decent technical knowledge overall. Then, the software engineer, while doing the least of coding tasks, is the one who oversees the whole development effort; Making the most critical choices whether it be choosing what language and frameworks to use, manage how things talk to each other and make sure they work fine, decide who to hire, analyze problems and lead the way into solving them. Again, a blurry line perhaps with an engineering manager. Some responsibilities may overlap. But that was one of the two engineer “kinds”.

The second kind of an engineer. My favorite one. This has less blurry lines. If I say “blurry lines” one more time I might have to pay Robin Thicke copyright fees. Anyway. The most ideal way of identifying one is to lay eyes on the work that’s done, on a broader scale. It is a (maybe fine) line between developing technology and developing products. Developing Git, I think, is an engineering effort. Whereas developing GitHub, the platform itself, is not. Developing a JavaScript framework is engineering, but building a todo app is not. I won’t give a third example, because I don’t like where this is going.

The other day I’ve read something that is short and abstract, yet gives a very sharp and clear idea about what is “engineering”, and who is an “engineer”.

Developing technology as opposed to the application of it.”

I also do realize that at some point, deterministically, the thing that we consider as “new technology/engineering” is itself an application of a previous engineering effort. Git is the application of the programming language C. Going from what I quoted earlier, it might seem difficult to differentiate between the two — developing technology and the application of it. Even though I said it gives a clear idea. I still do mean it. The critical point would be to ask, “Has this thing been done before? And if has, is it greatly better?“.