I want to start by saying that my intention is not to denigrate or diminish people's effort or profession. This post is to stimulate discussion among the community.
I have been reading here about the engineering discipline regardless of the domain in which it is getting deployed and it sparked several questions. It appears to me that the discipline of Software Engineer as we know it today is not performed as other engineering does in other domains such as electrical, mechanical, civil, etc, and I'm wondering why might be the case.
I want to number the points I see are similar but in practice are different:
Education: I want to mention education not in the sense that people need a formal education to write software and have a job, but in other engineering disciplines, education is required to the point that you are not allowed to perform the discipline without education. Nowadays a computer science or software engineer degree is not required to land a job.
Let's say that I learned everything needed to be a civil engineer on Coursera, Edx, or any other free MOOC. Not only I learned it, but it is also possible that I take the state license exam and pass it. Why am I not allowed to perform as a civil engineer and build a bridge or a skyscraper? I'm going to answer my question on my ignorance. I think it is because I didn't get a formal education that is well rounded with all the courses needed, the mentorship that is required in many countries and the license to be responsible for the outcome of each decision I make. Decisions that are not light since the lives of many rely on my design and decisions for that construction.
So I have a few questions on the topic of education that I don't have the answer.
- Where we draw the line?
- Do you trust the ML algorithm that denies your loan?
- Do you trust the software that is written in IoT devices?
- ... thinking about critical software, that puts someone on the jail, or schedules someone for surgery, or even worse, you do have the disease and the software said no you don't.
License: All other disciplines of engineering requires a state license to perform as an engineer. I think that this is a measure to protect/ensure the quality of the work and the safety of the people. I have heard of some edge cases where you don't need a license but in general, you do. However, in the software industry, you don't need anything at all. Since software applications are everywhere and in everything...
Here next to me is my wife telling me about a nursing license test that she would take if she decides to go to nursing school. I didn't know that a nurse has to take a licensing exam.
- Do you allow a self-taught nurse to take care of you in the hospital?
- Do you think that the software industry could get out of control?
- Do you think that we need to put some control like a state license?
Research: My observation with research is that in the design face of any project, the research analysis is done before you can proceed with the project, in Software Engineer we don't. We do have research done at the academic level where innovation is taking place or in big tech companies since they can afford to have their R&D department.
This is how normally goes...
Hey, we have a green project and we need to come up with a POC.
- That is great, I have been waiting for a greenfield project so I can learn Svelte. Can we use it in this project?
- We should do a microservice architecture... Dude, this is a POC.
- And the list goes on...
This scenario doesn't look like research to me.
I think it would be beneficial for the industry to have separation of duties in their titles. That way you can tell who is doing what. For instance...
- Software Architects - need a license
- Software Engineers - need a license
Software Programmers - don't need a license
What are your thoughts on this topic?
Do you think that the software industry needs to start to put some guard rails?