Are software engineers engineers?

 
Software engineer in the wild

Software engineer in the wild

 

Look around you. How many things work because of code?

We know Alexa, your iPhone, smart TV, and the Roomba work with code so let’s go beyond that. Let’s look at your microwave. How does it work? We know we can press buttons to give it a time, to make it start, make it stop, and there is that nice little popcorn button that never gets it quite right. Beyond giving it time with the buttons, we don’t have to do anything else for it to work. So how does this machine understand when to stop? There has to be at least one computer system in it, that translates the directions from the buttons to the electrical system, which causes the oven to heat. And yes, it does this with code.

How about the street lights in your city? Who decided how long it takes for the amber to turn red? Who programmed the logic: ‘While red, intersecting equals green or amber? How about trains, defibrillators, ticketing systems, online banking, normal banking where the banker relies on computer systems? They all have code, but who was behind it? A lot of engineers.

Electrical, computer, and mechanical engineers behind these systems have strict processes for deploying them. They have many people behind the board/mechanics/design and have designated licensed virtuoso engineers that can sign their bit off, and say that the thing they made is A-OK and no humans are in danger.

Software engineering also has many people behind the software system. There are programmers, technical leads, managers, an architect, a QA team etc. But there is not a single licensed accountable engineer that could sign the software off and say that it is A-OK, and no humans or data are in danger.

If software engineering is engineering, why haven’t we treated it like the other engineering fields do? Who signs and seals a software solution and is responsible for it?

Dr. h

One of my favorite computer science professors, Dr. H., would always say in class that computer science students should be required to go through a licensure for software engineering, just like engineers do to become professional engineers. I didn’t quite get it back then, but after being in the industry and witnessing all kinds of foolish software engineering decisions, programmers, bugs, fast-track coding courses and bootcamps, I now understand exactly what she meant.

 
 

what’s in a title?

My first job fresh out of college was with a team that was doing business intelligence with machine learning models and my title was Software Engineer. It didn’t take long for me to realize that to successfully apply any machine learning model, I would need to do a lot of data cleaning - not for me, I moved on. After that, I joined a team that was making internal apps for mechanical engineers. This is when I started to notice that I had a lot to catch up on physics. My title was Engineering Software Developer (yes, all of those words). Shortly after, I joined a group where we made fancy APIs and internal websites. Easy, breezy, beautiful and my title was Software Developer.

Then, I found the team that was in the “bleeding edge of technology”, was “changing the industry as we knew it”, and this team was doing something “no one had ever done before”. So naturally I joined and started working in real-time automation for a specific type of giant robot. My title was Computer Scientist. Then, after a few years in that team, I became a lead. Oddly my title was not officially Software Engineering Lead, which is what I technically was, my title was [the name of group] Supervisor - I hated that title.

All these titles meant nothing to me when I just had to wear my same engineering hat and solve problems as fast as I could.

Same programmer, different problems

  • “We don’t have any data but, we need a regression algorithm to see what happened between those two years”

  • “Can you add a right click functionality on the image to edit? If you have time, it would be nice to switch to 3D models instead of images… and be able to rotate them as they are built in the program”

  • “If you go too fast and the machine slams the thing on the floor, it could cause a massive accident and also we would also lose $10M USD"

  • “Should we use Bootstrap or Material Design to make it look pretty?”

  • “The os image and packages that have worked for years, need to run on this new slow and cheap processor because we already bought many of them and we need to use them”

These are real... Sometimes I got to be creative with optimizing algorithms and play with data. Other times, a wrong calculation or a segmentation fault could destroy expensive equipment and be dangerous to humans. They all shared a level of complexity, could be risky, had many layers of managers and teams, and when releasing, I noticed a lack of accountability and overall care for humans.

If software engineering problems range from making a web app work on Internet Explorer, to preventing a disaster that takes human lives, where do we draw the line? When is it engineering and who is accountable for any errors?

“Software engineers aren’t real engineers, they’re self proclaimed engineers.”

- Reddit user @poopmagic in r/SoftwareEngineering

I agree with @poopmagic.

a quick engineering history

Back in the early 1900’s, we had all kinds of engineers: the self proclaimed, the classically trained, and the lawyers and notaries that could create and sign maps as engineers. The State Engineer of Wyoming Clarence Johnston, noticed the variety and proposed a bill that would require registration for engineers. The bill was enacted, making Wyoming the first state in the US to register engineers and land surveyors. The first professional engineering license was issued to Charles Bellamy on August 8, 1907.

The first engineering license!! Photo from thetranstecgroup.com

The first engineering license!! Photo from thetranstecgroup.com

That was Wyoming though. You could still be a self proclaimed engineer like William Mulholland, and design and build giant structures in other states. It took a disaster that killed hundreds, to get California to regulate civil engineering - 30 years after the first license (read the St. Francis Dam disaster) .

Now you can get a license in all states and as of 2015, there were 474,777 licensed professional engineers in the U.S. And just like lawyers and the bar, you have to re-license if you move to another state.

software engineers should get a license to not kill

Dr. H’s favorite example during her software engineering class was the Ariene 5 rocket failure:

In 1996, the Ariene 5 rocket was launched by the European Space Agency and it exploded about thirty seconds after its lift-off from Kourou, French Guiana. It was a software failure. An integer overflow. The exception was caused during a conversion from 64-bit floating point, to 16-bit signed integer value. If you have done any tiny bit of programming, you know about floating points.

I did some googling and found quite a few articles about this event. Some even share the buggy code that caused this failure! But no one talks about who was responsible for this. Who was accountable for the lost decade of work and the $370M USD?

Is it because the rocket was unmanned that we haven’t taken this software failure seriously? Are we waiting for a St. Francis Disaster of code?

As of 2020, anyone who wants to become a software engineer, can do a four-year degree in computer science, or mathematics, or any engineering. In fact, they don’t need a four-year degree, they can do a six-week code bootcamp which will teach them how to use a specific technology and find work as a software engineer. They can also teach themselves how to code, study the “Cracking the Coding Interview”, and get a software engineering job.

In contrast, engineers have to have at least a four-year engineering degree to become engineers. PERIOD. There are no self-made engineers anymore. They can also become Professional Engineers (PEs) . To become a PE, they must complete their four-year degree in engineering, work under a Professional Engineer for at least four years, and pass two intensive exams. It is like doing another degree! Once a PE, they can make, sign, and seal engineering plans and works, and they are responsible and accountable for the lives affected by the work they sign and seal.

“But I am not building a dam or a bridge Estefannie, I am coding, who cares?”

- what I think my alter ego Stepho would say.

 
 

I say, licensing should be an option! Just like engineers can become PEs, software engineers should be able to become PSEs (you heard of this acronym here first!). The way I see it, if the system that is being developed affects lives and human data, then it should be signed off by a Professional Software Engineer to be accountable for the software system.

*FUN FACT* Today I learned that there is ONE state in the U.S. that licenses software engineering - it is Texas! It turns out that while Dr. H. was talking about this in my class at the University of Houston back in 2013, it was being added to the Texas Board of Professional Engineers. BUT, how come it hasn’t become a thing? I haven’t seen any of my software engineer friends here in Houston, who work on systems that do affect humans looking into any of this… or any company that requires it.

The only other places in the world that have a sort of licensure for software engineers are Australia and some provinces in Canada.

 
 

the future?

With Obama’s “everyone’s got to learn how to code“ declaration back in 2015, we got an influx of new programmers - which is great because we need more programmers. We need them to code your favorite streaming apps, traffic lights, park rides, robots, virtual reality, social networks, IoT devices, for anything and everything.

“There is no life today without software, the world would probably just collapse. Fortunately, really important software has a reliability of 99.9999999%. At least, until it doesn't.”

- Frank Lanza, VP of American rocket maker Lockheed Martin

Sure, I agree, the world would collapse without software and it isn’t 100% reliable. But who is responsible to ensure this 99.9999999% reliability? Who is responsible for our personal data? The control systems? The cyber-security? The human-machine interface? There are too many sides to software in which a tiny mistake can cause immeasurable damage to society.

So we got a bunch of new programmers - good. I think the next step is to add a licensing option for software engineers. This way, the pressure of being accountable and responsible for any damages, will hopefully ensure the release of well rounded software solutions that are not dangerous to human lives and our privacy. I truly hope we can learn from history, and not wait until a disaster like it did to engineering to enact a licensing bill across the states.

 
 

SO what is a software engineer?

Is it a programmer? A hacker? Are software engineers the ones that work at Google and play with Nerf guns? I think that as of 2020, there is no difference between a software engineer, a software developer, a computer scientist, a programmer, a coder, a developer, and whatever new title kids come up with on TikTok. I don’t think there is a difference until there is some sort of licensure across the industry for actual software engineering. But hey, that is my opinion after being out in the software industry, and coming back to say: Dr. H was right.

What do you think? Should software engineers be licensed?

e

 
Dr. H. and I

Dr. H. and I