SoftwareYoga

Articles on Coding and Architecture

How to be an Invaluable Programmer?

So you love programming. And you want to be invaluable and be recognized at your job?

First, let me tell you a story.

Roger’s story

Roger loves programming, he has been doing it for years. Programming is one of the few hobbies he likes, if not the only one! He is a developer in a company. He arrives early in the office and stays late. He has sacrificed a huge amount of his personal time to the company on innumerable occasions. He generally works after returning home from work. He is always one of the first ones to volunteer to work on weekends.

In the performance appraisal at the end of the year, he is told that he did a good job, but it was all expected of him anyway. So, he ended up receiving a satisfactory performance rating instead of the top rating. He goes home disappointed, not able to fathom how the manager could not recognize the efforts that were put in, all those sacrifices to make the code better, increase the code coverage, fixing bugs, making the code beautiful etc.

So, he devices a strategy. He is going to work harder than before. So hard that the manager just cannot ignore him, or so he thinks.

This repeats year after year in different companies Roger works for.

Roger now hates programming. He feels no one cares about his work. So he no longer cares. He is a beaten man.

Roger is over and out.

What went wrong? Is programming not a valued skill?

Lets face the reality - it is the business people that run companies. Heck, they even run the world! No technological advancement will see the light of the say if not for its business value. It doesn’t matter how beautiful the code is, how good the architecture is, what matters at the end of the day is the value it brings to the company and the end users.

Business people and your managers are never going to understand code. Accept that as a fact! They only understand the impact of work on people and processes.

They have no means to measure a programmers work. Well, it cannot even be truly measured. A salesman has figures to show, a call center employee has number of calls to show. You just have code that is Greek and Latin to everyone outside of your team. Trying to explain code to them is futile.

Software craftsmanship and good code is a means to an end, not the end itself. The final aim should always be about creating value. As programmers, we often tend to forget that.

How to be invaluable employee?

Or in other words how to bring more value to the company as a result of your work?

You got to show them how your work is making a difference to their world - A world where $, savings and time to market has precedence over exceptions, design patterns and interfaces.

Listed below are some aspects that will definitely get you recognized as a programmer who goes the extra mile beyond and above the official duties.

  1. Understand what the end users want in the software. Talk to them. Figure out the things they don’t like in the existing system, things they would like to improve etc. You have to solve their problems using your technical skills.
  2. Identify what modules or components have the most defects in your system. Come up with high level technical approach to solve the issues. Present the ideas to the management, explain what benefits it would bring to the company and how it can save time and cost. Use statistical figures to explain how your ideas will bring vast improvements.
  3. Identify things that are being done manually or with complex workarounds. Eliminate them or handle them in a better way.
  4. Speak to management on what they think are the biggest problem areas. A lot of the times, getting input from someone who is away from the technical stuff helps immensely.
  5. Evaluate new technologies for your product and present to the team and management on what benefits they may bring.
  6. Identify and improve workplace processes. You will surely have few issues regarding the way some things are done in the company. Figure a way to alleviate the issues.
  7. Many a times, the project managers might over-promise or set extremely tight deadlines - not because they like sucking the last drop of blood out of you, but often because they don’t understand enough technically. Have a discussion with them on their expectations. With your technical knowledge, provide them inputs on whats possible realistically and how the scope can be altered so that everyone is a winner.
  8. Draw comparisons of your work with other industries and bring in the best practices. Often, you can draw inspiration from the most unexpected places.
  9. Mentor junior employees. Train other employees on various topics and practices. In most companies, you will have someone in the company who you aspire to be like some day. Meet them and ask them if they could be your mentor or if you could shadow them in their work.
  10. Automate stuff outside of your product - Find people within your company who are not as tech savvy as you are. There will be some one out there who needs a helping hand. Solve people’s problems.

In conclusion, I believe that a programmer should get involved in other activities in a company, not just coding. It serves two purposes - provide you insights from a non-technical viewpoint and an understanding that programming is not the center of the universe.

Don’t let Roger’s story be yours.