The deadline is approaching and there is still so much to do. Workdays get longer, the rigor that normally applied to design and testing begin to slide in favor of cranking out more features. The technical debt card starts getting swiped.
A feature shows up for delivery, something about it seems a little off. It seems like the feature could be used for something a little shady. Maybe it gets a little more money from customers. Maybe it makes it harder for customers to leave. Maybe it extracts material that is under copyright. Eventually, it clicks as to what is happening, and someone says, “Don’t worry about it.”
The product is in production, it becomes clear that some of the things the product is being used for are allowing people to get hurt. The concern is raised and buried under the excuse that there is no time and it will be too hard to address.
You keep showing up to work and getting paid.
At what point do we ask if we are acting responsibly or professionally?
I was working at an agency and a project came to me. The project was to build a mobile application that allowed people to buy vouchers for drinks at nearby bars for your Facebook friends.
I thought we should probably have an age gate since we were close to selling alcohol. I was told that having an age gate would, “Cut into the core market,” and, “Do your job or we’ll have to fire you.”
I stuck to my guns and dared them to fire me. They didn’t, and eventually, lawyers got involved and demanded an age gate.
I worked on another project on a floor that was actively under construction. There were live wires, horrific fumes, dust from construction, and wild changes in temperature. The team I was with got sick with incredible regularity. I was told there was nothing we could do.
At the same time, we were violating our client agreement by working in a facility that was nowhere near secure enough. We were told not to bring it up since the lawsuit would cripple the company.
I was on a project that was nearing a contractual deadline. We wanted to test our system under load to see how it performed. We were told not to as it would take time from feature development. We did anyway and the entire system collapsed. It couldn’t handle the load predicted on day one.
The solution that leadership chose was to hide that by sending a static message indicating the user made a mistake while the system crashed under the load.
I rejected that solution and fixed the problem. I was alienated for months to come.
At some point in your career, you will be asked to do a bad job. You will see someone harassed or bullied. You might be asked to do an unethical job. You might be asked to do an illegal job.
What will you do?
It’s worth inventing the idea of a professional. I say inventing them because the imaginary professional is free from the constraints of our day-to-day.
What is it like to work with that professional? How do they talk? Why do you want to work with that professional? How do they collaborate, design, test, code? How do they maintain their integrity and standards with management? What does this professional do about technical debt?
More than likely this professional is not who we are every day. More than likely we don’t have the skill they have. More than likely we are anxious at the kind of confrontation the professional would have.
More than likely we’d rather choose to not be that person.
After my decade of being in this industry, I’ve had to come to terms with what I know it means to be a professional and what I am willing to compromise.
I’m not always a professional myself. I own that.
The bar for professionalism in software is so low that there is almost no depth to how far we can go in terms of quality, ethics, or legality in our work.
Our industry will struggle to be one that enriches our lives or those of our users if we don’t find a way to raise that bar. Maybe not all at once, but a little at a time.
One example that I work with teams on all the time is to end night and weekend work. If teams need to be on call then they don’t have to be there during the day.
Another is never working anything from work on your personal equipment. The company had you sign something giving them ownership of everything they touch. Make them provide the equipment for the job. They want you to check email at home? They can get you a laptop or a phone.
The list is near endless in most companies, and it adds up.
So the challenge is this: What is next for you to get closer to being a professional?