Becoming a software engineer often looks deceptively simple. You earn a university degree (typically three to four years) or complete a coding bootcamp (often three to six months), receive a certificate, and suddenly carry the title „Software Engineer„. Congratulations – you should now be able to write code, understand basic concepts, and contribute to real systems.
But, does that alone make you ready to build software that millions of people rely on – or the human lives may depend on? Are you now a professional?
Writing Code vs Engineering Software
There is a fundamental difference between „just“ writing code and engineering software.
Writing code focuses on implementation: „How do I make this feature work? What is the User Story telling me?„
Engineering software focuses on responsibility: „How do I solve this problem? Should this exist? What can go wrong? Who is affected if it fails?„
Software Engineer focus on designing systems, understanding trade-offs, and thinking about the big-picture. Programmers just cranking out code. They are replaceable.
If your job title says Software Engineer, ask yourself:
- Do I understand the system I’m working on?
- Do I know how my team is integrated in the big-picture?
- Do I question decisions that seem risky or unclear? Or do I just things because someone demands them from me?
- Do I think about long-term impact, not just delivery dates?
- Do I behave like a professional under pressure?
These are learned skills. No one expects a junior engineer to have all the answers – but learning to ask these questions early is critical.
What Does it Mean to Be a Professional?
A profession is not defined only by technical skill.
Professionals:
- Follow ethical guidelines
- Adhere to standards
- Apply disciplined practices
- Accept responsibility for outcomes
In fields like medicine or aviation, this is obvious. Doctors and pilots are trained under supervision for years because mistakes can cause serious harm.
Software engineering, however, often skips this step. New engineers are frequently expected to contribute to large, complex, and sometimes safety-critical systems almost immediately.
Every five years, the number of programmers roughly doubles. As a result, about half of all programmers have less than five years of experience. This rapid growth—combined with insufficient mentoring and training—is risky. Experience, judgment, and professional discipline take time to develop, and they cannot be rushed.
Ethics in Software Engineering (They Do Exist)
Contrary to common belief, software engineering does have ethical frameworks.
One example is the ACM Code of Ethics and Professional Conduct, which emphasizes:
- Avoiding harm
- Being honst and trustworthy
- Respecting privacy and security
- Taking responsibility for professional work
The real issue is not the absence of ethics – but the lack of consistent adoption, enforcement, and discussion in everyday development work. Furthermore, the lack of training in the university that ethics and standards exist and how to apply them.
Why This Matters: Software is Everywhere
Software is no longer isolated to IT-Systems
It controls:
- Medical devices
- Financial markets
- Transportation systems
- Legal and government processes
- Vehicles, factories, and infrastructure
A car consists of 100 million lines of code. Millions of people trust those code that the break is applied and does not hit 100% throttle input instead. We, as software engineers, are responsible to get this correct and produce good code.
Society depends on software functioning correctly. When it does not, the consequences are not theoretical, they can be tragic.
Real-World Examples: When Software Fails
The following examples are not meant to blame individuals. They show how technical mistakes, weak processes, and ethical failures can combine into serious harm.
Wrongful Arrests Due to a Faulty System (Australia, 2011)
In New South Wales, Australia, defects in a data migration system led to 22 innocent people being falsely accused and arrested.
The system incorrectly identified them as criminals.
The result:
- Innocent people harmed
- Legal consequences
- A cost of approximately 54 million NZD.
- Loss of public trust
This was not just a bug – it was a failure of validation, oversight, and accountability.
Knight Capital Trading Failure (2012)
In August 2012, Knight Capital lost 440 million USD in under an hour.
Cause:
- A new trading feature was deployed incorrectly
- One of eight servers ran outdated code
- Automated trading continued unchecked
This single operational mistake nearly bankrupted the company. One year later, the company was merged with another one which was much smaller in 2012.
Radiation Therapy Machine Errors
A radiation therapy machine calculated treatment dosage based on user input. The results depended on the order of input. Hence, inserting the same parameters but in different order led to a different calculated dosage. Nobody knew this, not even the developers.
The result:
- 8 patients died due to radiation overdosis
- 22 patients were seriously injured
Boing 737 Max Crashes (2018-2019)
Two Boing 737 Max aircrafts crashed, killing 347 people.
The causes are complex due to hardware decisions, management pressure, and software. But the software played a key role:
- Critical behaviour was controlled by software (MCAS) but used only one sensor as input
- Design decisions prioritized cost and speed
- Boing prioritized cheap software over safety
- Risks were not clearly communicated by Boing because they were aware of the software problems but decided to ship the code anyway
Dieselgate Emissions Scandal (2015)
Several car manufactures used software to manipulate emissions test results. The cars detected if they were on a test rag or not and reduced emissions temporarily – while emitting far more pollution in real-world driving.
This was not a mistake. It was a well-made decision. It was an ethical failure, where software was used deliberately to deceive regulators and society.
Software engineers believed that only the company and their managers will take the blame because the software engineers just wrote what was demanded. But the VW U.S. head, Michael Horn, said under auth „This was a couple of software engineers who put this in for whatever reason“. The focus was shifted from the company to some individuals. The finger pointing on the responsible person went down from the managers to us, software engineers. Those software engineers are in prison.
A Pattern Emerges
These examples vary in context and scale, but they share common themes:
- Pressure to deliver quickly
- Weak standards or ignored warnings
- Lack of ethical accountability
- Poor communication of risk
- Value cost higher than other standards
Software rarely fails in isolation. There is a human factor as well. Failures happen when professional responsibility is diluted or ignored.
Why „My Boss Told me To“ Is Not Enough
At some point, some software engineer will do something stupid and this mistake will kill thousands of people in one shot. It is not hard to imagine some scenario since software is everywhere and updates to them are done over the air by now. It just takes a stupid line of code to sent all cars with 100% throttle into the next tree when the driver applies the break.
The politicians of the world will rise and point their fingers at us and ask how we could let this happen. They will be angry and we should have a better answer than „Yeah, well… my manager said we had to ship on Tuesday„.
They will begin to pass laws how we should do our job. They will tell us what to use and how to do it. Nobody wants this. Hence, we should come up and follow practices, ethics, and principles before the politicians begin to regulate us.
A Practical Code of Professional Princinples
Do not ship shit! This is not optional. Shipping knowingly defective or sub-standard code is unacceptable.
Say “No” When It Is a No! You are hired for your judgment. If something is unsafe, unrealistic, or technically unsound, you must say so—especially under pressure.
Continuous Improvement! Leave the codebase cleaner than you found it. Without constant improvement, systems slow down, flexibility disappears, and change becomes painful.
Continuous, Aggressive Learning! Your employer is not responsible for your career. Growth requires curiosity, experimentation, and learning beyond your current role.
We Cover for Each Other! Teams own products collectively. Knowledge silos are a failure. If one person is unavailable, others must be able to step in
Honest Estimation! If you don’t know how long something will take, say so. Provide ranges—best case, expected case, worst case—and refine them as you learn. Never commit to “trying”; professionals already give their best effort from the start.
Mentorinng! Young developers, directly coming from the university, from bootcamps, are most of the time lacking experience and discipline. That is nothing bad, it is natural because, where should they get the experience from? Experience learns you how to produce well-structured systems and disciplines. You can compare this point with how new doctors and flight students are treted.
Doctors train under supervision for years. Pilots fly with instructors before flying alone. Software engineers deserve the same level of guidance. Code reviews, mentoring, and shared ownership are not optional; they are safeguards.
Final Thoughts
Software engineering is becoming one of the most influential professions in modern society. With that influence comes responsibility.
You do not need to have decades of experience to act professionally—but you do need awareness, humility, and ethical intent.
Professionalism in software engineering is not granted by a title.
It is built—one decision at a time.
No responses yet