Computer Science,  Life Style,  Software Development,  Tips

Good Developers Are Practical Not Emotional.

As the story goes, once at a restaurant, a cockroach flew in and sat on a lady. As a natural reaction, the lady screamed in fear. The insect suddenly flew onto some other lady in the restaurant. She too screamed in fear. In fact, having panicked, she started to jump, flailing bother arms desperately trying to get rid of the cockroach. Such reactions are always contagious and therefore, all her group members had now panicked. The cockroach now jumped onto another lady in the group and some more drama ensued. A waiter rushed to help her and finally, the cockroach landed on him.

And Instead of screaming, the waiter stood firmly, watched the cockroach and confidently, he grabbed it off his shirt and threw it out.

As Sundar Pichai contemplates afterwards.

Sipping coffee and being witness to the drama, I wondered if the cockroach alone was responsible for all the hysterical behavior? No. In reality, the cockroach did nothing just land on people and it were the restaurant’s patrons who were unable to handle the disturbance caused by the mere insect. In reality, too, it is not the yelling of our superiors, family members, fights with our spouses or the traffic jam that causes us to behave out of character. It is our inability to handle such situations and the inability to handle the disturbances caused by such situations that disturb us.

In short, it is not the problem itself but our reaction to it that causes misery in our lives.

That said, a developer’s life can be challenging at times. Unrealistic deadlines, over-committing superiors, the loving code crafted by you which does not work in production or worse still, your loving code screwed up mercilessly by a novice developer. The situations that can cause distress are endless.

Breaking down and letting your anger get the best of you often turn out to be stupid and immature in most of the cases. Granted, life doesn’t always throw us pleasantries, but also disappointments which we definitely have to learn to deal with. On the other hand, avoiding the problems or blaming it on others is also not a viable solution.

A developer needs to practically respond (stop and think about what he needs to face) to situations instead of reacting to them. Doing this, we will develop the right attitude to enrich his life, despite the challenges thrown at him.

The key is to experience uncomfortable emotions but not get stuck in them. Emotions have the ability to cloud our judgment. And just like any other skill, managing your emotions and being practical in times of stress is a hallmark of a good developer.

And here are some ways in which it can be done.

Challenge the deadlines

By challenging the deadlines, I do not mean refusing it outright or fighting with your superior or client. Challenging means to take a proactive solution-based tone while reacting to unreasonable deadlines.

Some of the ways can be.

  • Work backward from the deadline and map out realistically as to how much work can be done by you or others and by when.
  • Highlight the dependencies carefully well in advance. For example, “I can finish the code for the loans module but the ATM switch code needs to be in place before that.
  • Break the deadline up into a series of small milestones and set yourself a deadline for each. This will keep you motivated and on track towards the final deadline.
  • The key to questioning deadlines is educating yourself about the real purpose. Is there any pressing need for this urgency? Are they aware of the quality impact of the deadline? Are they lacking any information which they should know? Question the intent until you can get the real reason and suggest a solution towards it.
  • Lastly say ‘NO’ if the deadline is really unreasonable. Your superiors will respect you more if you insist on quality rather than compromising on a rush job.

Remember at the end of the day you are a professional and a professional does the right thing always even in situations when he is under pressure to do the wrong. Be a professional.

Prioritize ruthlessly

Good developers know the art of prioritization very well. They don’t get overwhelmed by urgency.

For example, you are working on getting the production code ready for the loan origination system and the most important thing for you should be to get the work done for the client when they are expecting it. During your programming time, you will get several other activities like meetings, discussion of other areas, pre-sales discussions with prospective clients, etc. You need to make sure that each of these ‘other’ tasks does not interfere with your ability to meet the deadlines of the project.

An easy approach to prioritize work will be the follow the urgency-important matrix:

  • Urgent and Important — Topmost priority
  • Urgent and not important — Calls, meetings and any activity which is not helping you to meet your deadline. Postpone them.
  • Important but not urgent — Can wait or can be delegated.
  • Not important and not urgent — Don’t waste your time on this.
The Eisenhower Matrix

And if interruptions go beyond your control, consider using an ‘out-of-office’ message stating that you are in an important work and will only be available after so-and-so date. Sometimes there is no harm to be unavailable..

Decide to Have a Growth Mindset

Neuroscience says the only way to deal with fear: you need to face it, head-on. When we avoid scary things we become more scared. When you face your fears they become less frightening.

And to face fear, you need to have a growth mindset. When you are dealing with a difficult situation, too often your confidence takes a knock and you tend to underestimate your capability to deliver. To counteract this, cultivate a growth mindset.

Honor the strength of your past. Remember the struggles and the effort put in by you that made you such a great developer. Create a long list of all of your strengths and achievements. If we respect ourselves and honor our strengths, we automatically become stronger and wiser in times of struggle.

And rather than focusing on the difficulties you are facing, focus on what the experience can teach you. Make a conscious effort to absorb the learning rather than getting bogged down by frustration.

And remember to have a moral compass in place. Good developers have a strong sense of right and wrong. If things are wrong, ‘stick your neck out’ and do the right thing despite told otherwise.

Communicate, Communicate and Communicate.

Communication. It’s about honesty. It’s about treating people in the organization as deserving to know the facts. You don’t try to give them half the story. You don’t try to hide the story. You treat them as…as true equals, and you communicate and communicate and communicate.

If you have important information to share with your boss, colleagues, vendors — even if it’s not great news — don’t wait. If you put off providing them with actionable information until it’s too late to act, then your news will never be well received, whether it’s good or bad.

In almost every conceivable scenario, it’s to your advantage to communicate as quickly as possible, allowing everyone involved to understand and digest the information, formulate an appropriate reaction, and respond accordingly. If it is bad news, your early warning just might allow for sufficient planning to minimize the damage.

Above all, remain professional, polite, direct, and clear. Remember, Professionalism: it’s NOT the job you DO, it’s HOW you DO the job. As a developer, you need to do your best work even if circumstances are not favoring it. That is your forte; your unique selling point, your indomitable attitude and never dilute it what so ever.

As John Maxwell has rightly said.

We choose what attitudes we have right now. And it’s a continuing choice.