Software engineering dilemma: professional vs ethical
I was reminded recently of a situation I found myself in at a previous employment in the past, something which made me question being professional against being ethical.
We had a process for all stories/changes we would make. The usual agile approach, something like:
- requirements up-front
- peer reviews (adhering to strict standards + conventions)
- manager sign offs
However we had a newish app which was non-user facing i.e. customer support team. Due to unclear and changing requirements going into the future, managers decided our process for this app would be:
- adhoc changes
- no tests
- no reviews
- limited care given
- no end to this cycle in sight
My immediate response was an obvious one as these good practices are around for a reason. The warning was focused on 3 main points which you can see below:
1. tests – These are there for developer confidence as much as business. Without which anyone touching the code in the future could easily introduce new bugs and take longer to get anything done.
2. quality – without proper peer reviews or standards/consistency/conventions, the app does not guarantee to be in a fit state in 3-6 months time. Dirty code will be a by-product and everyone (the app + developers) will suffer.
3. life span – most code we write is somewhat short lived anyway and that does not effect our current practice and disciplines. Lack of care sets an expiration much earlier.
This situation made me question why do we let ourselves be compromised and if its actually an ethical or professional question?
Professionalism vs Ethics
Ethics are defined as: “moral principles that govern a person’s behaviour or the conducting of an activity”. One way to interpret this is that it’s relating to the details of how, of the standards and conduct. Perhaps from the developers-level.
Professionalism is defined as: “the competence or skill expected of a professional”. One interpretation could be what is broadly expected, detailing the what, possibly from the businesses-level.
So how do these relate to my dilemma?
The repercussions mentioned in my warning details how it effects almost everyone involved, from users to developers.
In my eyes that means it has both an ethical and a professional impact. As the work we are able to do is effected but also how future changes will have to be implemented.
Its impossible to pin-point exactly which shortcut effects which of the topics, but its clear that there are professional and ethical boundaries crossed.
‘The Clean Coder’ states, “it is professional to learn how and when to say NO”.
As engineers all we can do is try our hardest to explain these outcomes and potential future costs, in an understandable fashion. Then hope that the business makes the right decision. Either way we have done our best to be both professional to our employer, and ethical to our fellow engineers.
After all, when a ship with holes in sinks nobody has a right (moral or otherwise) to be surprised, but you can bet they will do their best to act it.
Would love to hear other developers thoughts on this topic.