Please note: this article is inspired and reports concept demonstrated in a chapter of the amazing book The Clean Coder, a code of conduct for developers around the world on what a “Professional Developer” is, and how to gain such level of professionalism.
As a young developer with barely three years of experience, I find myself dealing with new aspects of relationships with peers in my job almost every day. Especially when it comes to speaking to senior developers about how “that feature you’re developing is going”.
And you know, when you’re new in the office, you often wanna act like the guy who isn’t causing troubles to the seniors. Who’s job is always done in time and who isn’t causing any troubles because he still doesn’t know how the project works. So sometimes you basically lie and act like everything you are working on is under control. Like you don’t know that this feature will be late and you will “somehow” find a way to make this work for the promised deadline.
Well guys, let me just tell you thing… If you believe that this behaviour is gonna “make you shine” or simply save your face, then you are wrong.
See, not only this practice is not honest, but dishonesty is also one of the basics behaviours of somebody who’s not what we would call a professional.
The definition of being a professional is quite wide and difficult for me to give with some exact words, but I will give a try:
A professional is somebody who takes full responsibility for his actions, his words and his promises. All while trying to deliver the best possible result from his work.
That’s it, a professional won’t lie to you about a deadline, it won’t accuse somebody else if the code he/she has written that doesn’t work. And every promise he makes has a meaning and commitment behind it. There is no trying, just doing it and doing it properly.
And when it comes to trying as Robert C. Martin says in The Clean Coder
The promise to try is an admission that you’ve been holding back, that you have a reservoir of extra effort that you can apply. The promise to try is an admission that the goal is attainable through the application of this extra effort; moreover, it is a commitment to apply that extra effort to achieve the goal. Therefore, by promising to try you are committing to succeed. This puts the burden on you. If your “trying” does not lead to the desired outcome, you will have failed.
— Robert C. Martin — The Clean Coder
Of course, the above-given definition of a professional is pretty personal and quite limited. There are other important traits of such a figure that we can consider such as:
- The willingness to help others: how good is it to have a senior developer who’s not afraid to help juniors? Not by shaming them or making feel them inferior, but simply by providing them with occasions to grow.
- Continuous learning: would you pay a lawyer who’s not updated with the latest laws or rules? Or a mechanic who doesn’t know how to fix new technologies in your car. Well, that’s the same for a developer, a true professional will always be up-to-date and will strive to learn new stuff to keep his/her figure marketable.
But there is one professional trait that I still have to mention and that is the key point of this article: the ability to say no. When I talk about this, I don’t mean that you should have some manipulative skills to just avoid some work that you were assigned. I’m talking about telling the truth, I’m talking about having the ability to say no to a situation that is damaging to the project and the company.
Let me try to give you some examples of scenarios where your inability to say no can be damaging:
- Your boss asks you if that feature will be ready by the end of the week, even when you know that it is impossible for you to finish it by that date.
By lying to your boss here you are not really doing any well to anybody. First of all, lying is not professional and won’t take you any far, instead, you will probably lose respect from your peers. Second, what do you think is gonna happen exactly at the end of the week? Well, that’s simple, your boss is gonna come to you asking for that feature that now is not even close to being ready.
Somebody will have to solve this issue, probably your boss talking to the clients at this point. Maybe you could have worked every night to accomplish the task, but why killing yourself 16 hours a day instead of simply telling the truth and try to find a new solution.
Maybe you could have delivered part of the feature and make your boss and clients aware of it, maybe you could have dropped a simplified version of it. It’s none of your boss’s fault, in this case, he was just making his job and trying to get the best possible outcome of it, he trusted you as professional and your words for a language of commitment.
- You start working on a new feature and realize it will take a lot more time than planned
Pretty similar to above, raise your hand immediately and make your brain burn to try to find a new solution based on truth, on your ability to say no to a situation that would otherwise damage everybody.
Does everything I have mentioned above mean that you should just say no to everything that appears to be unprofessional and just stop there? Well, that’s not the end of it. You should always strive to find creative ways of saying “yes”. That’s it, the best teams are full of people who will negotiate with each other based on their needs and trying to find the best yes possible. Your colleagues and your boss are counting on you and your ability to say no to truly understand how to solve a problem in the best way! this is what a team player is and what everybody should try to be.
Being a software professional is hard, not only because of all the technologies we’re required to know, but because there are a lot of behaviours, practices and soft skills that are a core part of how we will manage our life in the office and how “professional” we will be perceived as. Learn how to say “no”, learn the benefits of truth and how it can activate your brain to find the best “yes” possible.