Developer or Software Engineer?

We started a discussion this afternoon, and we want your thoughts. Like many of you, we have experience with diverse development tools (from C up to point-n-click CMS administration) for many types of projects (native applications, web services, branded sites, etc.) The question of interest is about job titles and their role in community. For our discussion, Let's not try to pick the better of these two titles. Let's explore what is communicated by them and how that influences various things about our professional world.

Specifically, we've wondered about the contrast between the use of these terms in the following contexts:

  • Introduced to someone at a networking event
  • non-professional introduction
  • Hiring talent
  • Hiring an agency
  • Reading someone's blog (i.e. first impression online)
  • Deciding what to call yourself
  • Community embrace

1. What is your opinion on the appropriate circumstances for choosing either term?

2. In what ways can these titles influence how we think about and perform our work?

the subtext

Most of the edit iterations of this post were focused on removing the specifics that came up in our conversation. This was done primarily in the interest of starting the conversation without over-influencing it, and to give me and my MTM peers a prompt to participate in the conversation along with you.

Filed under 


As a non-programmer, the connotations of each title to me are generally:

Developer - Solutions-oriented, generally up-to-date on new programming trends, skilled. Generally learned by doing.

Software Engineer - Educated in software (likely as a degree), which could either be a good or a bad thing. Potentially not as skilled as the title might suggest without lots of work experience to back it up. To me, it sounds a bit "stuffier" and more old school than developer.


Interesting question, and one that I have asked myself a lot recently. I feel that I most identify myself as a "Developer" within the community. To the outside world however, I identify myself as a "Software Engineer". When pressed for something more specific, I identify myself as a "UI Architect".


I think the terms are synonymous. I have a degree in web programming, but I feel like I have gotten the most out of what I have taught myself. I use the terms interchangeably. I call myself a web developer to other tech people, but I tend to use the term "Software Engineer" when talking to folks who do not really understand what a Web Developer is. Non-tech people tend to kind of get it when the word "Software" and "Engineer" are thrown in there.


Licensing will definitely recede and already has. Opensource is used more and more. In my entire career I haven't met a single programmer who has needed to be licensed or missed out on work because of a lack of license ... This is at least true for the web world


Employers call us engineers - and not us software people. No employer I have worked for has been willing to pay the premium for a licensed engineer in any field. None of my coworkers are licensed as engineers - electronics, electrical, mechanical, whatever - our employers still call us engineers (except the company's Chief Engineer, she actually is a licensed engineer, but several levels above us, so is NOT a coworker). But, they do not treat us as engineers - we do not get to approve or, more importantly, disapprove anything. Beyond designing, coding and writing documentation, our role purely advisory. Managers 2 levels or more above us make all the approvals/disapprovals. Not even the few licensed engineers down on our level have any more input to the decision making than the rest of us.


I usually think of a person developing certain features using existing libraries and programming patterns when I try to imagine developer. Engineer on the other hand would be an architect, a person developing a framework, library or engine of sort that will aid in the process of development. That being said, every developer is at times engineer and vice versa. As developers we approach problems systematically, we think about extensibility, efficiency and maintainability of our code and we constantly seek ways to improve it and learn more. I think the line between these two labels are pretty blurry even in development field and non-existent outside of it. I usually label myself a web/software developer to peers and software developer/engineer to layman. The reason for this being is that people outside the industry are often not familiar with term developer or what type of work would that entail. However, when you use a term software engineer and bust out your TI-84 graphing calculator at a party, not only will you communicate your awesomeness clearly, but you are bound leave the party with at least couple of additional entries in your phonebook.


Whether required or not legally. I tend to dislike the term "Engineer" for any profession that is not speaking of a specifically "Licensed" person.

The reason is for the same that I often tell people not to refer to me as Dr. Joe. Most people mean this as an endearment because I "fix" their problems, however Dr. is a title which is not easily earned and should be reserved for those who truly earned that title.

Engineer is the same. To become an Engineer one does not simply graduate with an engineering degree. You must take the FE (Fundamentals of Engineering) Exam and after you have passed the exam you must complete multiple years as an "apprentice" under a fully licensed engineer before you can officially call yourself an engineer.

I know this because my wife is an Engineering apprentice at the moment with a PhD in Biomedical Engineering. She can be called Dr. Collins but she has not yet earned the title of Engineer.

With that said, I understand why the term Software Engineer was coined but I feel it is a little bit misleading to those who are familiar with the "Licensed Engineer" path and it is a little bit degrading to those who did go through such a rigorous process to gain that title in which others are so freely taking.


Sure in other fields engineer means different things and requires apprenticeships .. Etc. but this discussion is specific to the web, where that isn't the case. Licensing doesn't matter for people who create the web... It's all about what you can do... We engineer, develop, and create.


Great comments so far, thanks! In hopes of drawing in a wide crowd of opinion on the topic, I've asked the same questions to Slashdot.

I'm not sure if it will snatch the interest of the community there, but if you're interested in engaging a larger audience perhaps you'd like to also comment on my submission over there


I feel that a big factor here is that many of the folks that have been around for a long time went to school back before the web was what it is today. Based solely on my college education my title would be "Animator" (and stop motion at that!); but when I went to school in the mid to late 90's my university didn't even have a web program yet. Essentially the profession as it is today was only in its fledgeling stages at that point. Since then I've seen a lot of computer science and digital arts people meeting in the middle as this entire new medium developed right before our eyes. I think it is only natural that we don't know what we are given how relatively young and rapidly evolving the web is.

Personally, I honestly couldn't care less what people call me. As long as I can keep making stuff that I'm proud of with people I am proud to be surrounded by, I don't care what goes in my signature line until the industry matures to a point where standard titles are decided upon.

That said I would like to be a "Ninja-neer" or maybe a "Fun-gineer".


The consensus on Slashdot.org seems to be that it's a *distinction without a difference*

But the quality of comments indicates that the question of defining roles and titles in the industry is in woeful need of revision.

The 'Licensed Engineer' aspect is interesting but ultimately inconsequential. In the US anyone can give an employee that title.

This is about **code** and **money**....that's what makes the 'tech industry' go around...everyone is a designer.

IMHO there are three roles....making code, making the code make money, and managing that money

If it is a *business*...call it what you want, the people who matter at a shop do one of the three things above...well, those three and the maintenance people of course ;)


Just to add to this great thread, in my humble opinion, you can use these two different titles in two ways:

1. By the type of work you do - As some mentioned already, if you're creating software for systems that are lower-level or that can't fail, seems like you're more of an engineer. Examples might be creating the embedded system controlling the airbags of a car, developing the internals of an OS. To me, this seems more like engineering, because you have to utilize more engineering principles, like fault-tolerance and redundancy (we all use these principles, but not to the degree some of these other systems require). Jobs for "Developers" tend to allow them to focus more on features and design, and less on creating mission critical software.

2. By how you actually do your work - To me, you can be a software engineer on projects that don't seem like engineering jobs. Because, developing even a mid-sized website can still be created using engineering principles. One example might be, if done right, you can use requirements and design to try to catch mistakes early when their "cheap to fix." For instance, endlessly about a feature during a 1 hour "requirements" meeting may seem like a waste of an hour, but considering the amount of man hours wasted if that feature goes through and gets designed, implemented, and tested. This of course isn't a new idea, and most of us have been through useless requirements phases where it was just a waste of time, but you may have also been on a couple projects where the person running requirements actually new what he/she was doing and really figured out a ton of stuff early on.

Or, for instance, designing systems that can be built relatively quickly, but will still also be able to be scaled, knowing that in the future, there maybe 1000 times as many users as compared to when the system is first started. Seems like a lot of websites I've personally come across are being designed for rapid development, and end up running into huge, major problems because of decisions they made early on. I've heard this quite a few times now.

This is just my opinion and I think I've been in both roles and ways of thinking in my career as a dev/engineer.


I consider the following paper to be the definitive answer on the use of the title Software Engineer as it applies to the offering of services to the public and to other businesses.

http://sce.uhcl.edu/helm/SWEBOK_IEEE/papers/10%20reprint%205.pdf

All 50 states have licensing boards that control the use of the terms engineer and engineering in the context mentioned above. Here is an example from Louisiana:

http://www.lapels.com/docs/Laws_and_Rules/Rules_October_2012.pdf


This is the part of Louisiana law saying it is unlawful to offer engineering services to the public or other businesses without a license:

http://www.legis.state.la.us/lss/lss.asp?doc=94377

This next part combined with the first part makes it clear that, in the context of offering services to the public or to other businesses, the terms engineer and engineering, even when not preceeded by the word "professional" are regulated by this section of the code:

http://www.legis.state.la.us/lss/lss.asp?doc=94378

This section delegates the authority to regulate licensure and enforcement of this chapter of the code to the board:

http://www.legis.state.la.us/lss/lss.asp?doc=94384

Other states are similar.


The term engineer is often associated with an engineering education, which includes study of calculus, differential equations, integral transforms, mechanics, electrodynamics, circuit theory, strength of materials, thermodynamics, semi-conductor fabrication, foundry, and numerous other commercial arts and sciences.


I've worked in web development for the past 12 years and I have hired many programmers in that time. I have always thought of them as developers with our primary technologies being open source tools and languages. I had always thunk that engineers were only low level programmers or a group that designs hardware.

In the past year I have started working with .NET programmers who often prefer to be called engineers. I don't know if this is a .NET cultural thing or just the company I am at. Many of them feel that the open source tools I use and love (php, linux, mysql etc...) are not fully developed "enterprise" options. I believe that they feel the title differentiates them from the open source "developer" culture. The context being that those are "just" web development tools.

In the end I have worked with several great "developers" and "engineers" and the problems, solutions and context has not changed much for me, just the underlying technology and preferred title depending on the group.

Thanks for the topic Chris!

About the Author

Chris Trahey, Director of Strategy

Formally, we think of Chris as a "forward deployed engineer". Really, that just means you'll meet him and have conversations earlier in the process than you might normally expect for an engineer. At Metal Toad, we find that solving problems isn't the right place to start, so we dedicate resources to finding the right problems first, and that's where Chris comes in. During the project exploration phase, Chris is essentially a member of your team, evaluating projects, opportunities, challenges, key roles, and business & social objectives.

Once the best problems are discovered (yup!), Chris works with the Metal Toad engineering team to help your team architect solutions on a broad scale, building a comprehensive strategy that never looses sight of your goals and resources.

Chris has over a decade of experience building digital solutions to solve business problems and take advantage of opportunities. With direct business experience in the education sector, specialty coffee, and media production, his breadth of insight have lead to a migration from software engineering into broader strategy work while never releasing the kind of inquiry and thought processes native to the development world.

ctrahey at metaltoad.com