Developers or engineers?

I’ve had quite a few job titles where I basically did the same function: Software Engineer, Software Developer, Technical Lead, and so on.  In some companies, a Software Developer is a completely different position than Software Engineer, and in others they’re used interchangeably.

The connotations and implications from each title are strikingly different.  The term “engineer” has a much different meaning than “developer”, taken outside the context of software. A Developer might lay out the plan of a new subdivision, where its green areas are, what style homes should be built and what theme the neighborhood should adhere to.  The Engineer lays out the water and sewage lines, elevations, roads, utilities and other functions vital for sustainable human habitability.  A Developer creates the vision and designs the implementation, while the Engineer ensures that quality, regulatory and ethical standards have been met.

That’s not to say an Engineer isn’t creative.  In a family full of Engineering graduates (including myself), no Engineer would have a job if they weren’t creative.  Every problem is an implementation of a different pattern, but the details make each challenge completely different than the one before.

Having worked with many types of real Engineers (i.e., they’re doing the job they went to school for), I didn’t see what they were doing was much different than me.  They were concerned with:

  • Safety
  • Reliability
  • Maintainability
  • Aesthetics
  • Usability

As well as a host of other “ilities”.  One critical difference between me as a Developer and they as an Engineer was that Engineers are licensed by an independent group.

In many fields and jurisdiction, including Civil Engineering in Texas, licensing is required by law when performing engineering services for the public.  Licensing isn’t easy, either.  To become a licensed Professional Engineer PE, you must:

  • Graduate from an accredited engineering program
  • Take an initial exam to become an Engineering-in-Training (EIT)
  • Have a minimum of 4 years experience as an EIT, preferably as an apprentice to another PE
  • Take a rigorous exam, which takes 6-8 hours to complete

Licensing isn’t a one-time affair, you have to renew your license, which has its own requirements including continuing education.  Even if not working in the public sector, licensing is considered a career necessity.

But we have certifications, right?

Anyone that has interviewed candidates for positions knows the sad state of software certifications.  At best, software certifications signify that your are certified to be an absolute beginner for that topic.  For some reason, software certifications still hold value, though all involved, managers, HR and candidates, know that the certifications aren’t worth bytes it was emailed with.

Would licensing help our industry?  We live in a sad state of affairs when identities are not stolen because of sifting through your mail or stealing your wallet, but because of careless, ignorant developers.  In a Twitter conversation with an ex-colleague, Terry noted that software development lacked discipline, respect and accountability.  Can licensing help prevent the ridiculous failures, by both raising the bar and raising the stakes for individual failure?

If a bridge fails, the engineers can be held liable if they are found to cut corners, or even sheer ignorance.  Oversight in the form of inspectors is supposed to help, but in the end, the engineers are held accountable.

I see Developers as code monkeys, slapping code out without regard to reliability and maintainability.  Engineers have a much longer horizon too look at, they must ensure the bridge they build lasts 100 years, not six months.  Shouldn’t we hold ourselves up to the same standard?

Understanding Mock Objects: an alternate solution