loading...

The Impossible Bar of a Professional

recursivefaults profile image Ryan Latta ・4 min read

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?

This Will Happen

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?

Are You a Professional

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?

Posted on Mar 21 '19 by:

recursivefaults profile

Ryan Latta

@recursivefaults

I've been in software since 2009. I help software companies get the results they want and developers get the career of their dreams.

Discussion

markdown guide
 

If you are a 3d artist, then the difference between a good one versus an aficionado is the speed. A good artist could model a 3d art in a single day while an aficionado could do the same in a month.

With programmers are the same. And it is here some "ideologies fail":

  • agile without deadlines.
  • TDD if it involves spending more than 10% of the developer time. In fact, 10% is still a big waste.
  • Docker, Kubernetes and such (if you spend so much time configuring it).
  • Full SOLID, for example, to add Interface for a class that will be used only once.
  • Reusability of the code when (and again) it will be called only once.
 

It's interesting that you've emphasized speed so strongly while discounting things that are often attributed to quality.

I didn't write about the skills and abilities a professional may carry, because that isn't the point of this article.

I wrote about what people industry do with any skill or ability. I wrote about what happens when, "Professionals" become complicit in doing poor work because of a fake deadline, when they harm themselves staying up late or on weekends because they are pressured to, when they build something that is unethical, illegal or causes harm, when they sit at their desk when they know bullying or harassment happens.

That's the line I draw here. How much of that does each of us bring and allow into our workplace while still claiming we're responsible professionals?

 

It is because we usually don't know the "name of the game".

I explain. Let's say that our user (if not the company that we worked) is a Knight, if it is a Knight then we are a blacksmith.

Now, some ogres attacked a village and our knight must fight them back.

The knight says:

  • Hey blacksmith, I need a shield and a sword right now (or, I need it for yesterday I have hear it tons of time).

So, we could give it a fast-but-cheap shield and sword but at least the knight could do its job, or we could say "yes, I will give you the best one but it will take a month". Of course, a month means that all villagers will be dead. Some knights even improvise with their own resources (while they are waiting for proper equipment), some even throw rocks because they are accessible and they know how to use it (Ms excel).

So we do what we can (with our limited resources) and we hope it for the best.

https://i.imgur.com/bH1MomW.png

Our ethics suffer if we do a poor job. However, maybe our ethics (or ego) is intact if we take the time to build a better tool but, our usability is compromised (we are useless!) and finally it is the same. So we usually should balance time and quality but we could have them all, we should read the "mood" of the project.

Some developers refuse to release a rushed project. 9/10 ogres prefer this kind of blacksmith

https://gdb.voanews.com/CBA557DF-3314-403D-B8C9-3B9FD829CBDD_w408_r1_s.JPG

Now, the software has a duration date, right now is around 3 years, it could be extended two cycles (6-7 years) but anything over it is insane. This doesn't mean that there are not systems and programs around here that aren't older than 7 years (aka legacy) but they are costly. It means that if we took 3 years to develop a system, then the end result borns outdated.

 

Hmmm.... It might be hard especially ethics can mean different things in different cultures or country.

Like while reading the book by Peter F Drucker that talked about US politicians was jailed due to bribery by japanese companies.

It was totally fine for Japanese companies giving kickbacks since their culture has the Japanese companies taking care politicians when they retire due to the low wage of a politician.

Unless we could come up with something every developer could agree universally it will be very hard.

But I do agree on raising our standards of excellence to be able to sleep at night.

Without worrying of the backlash of what you had done is unethical and cause harm to another fellow human being.