iA


Lessons for a software company

by Vijay Kiran

Passion for programming

The fundamental quality of any programmer is passion and care about his/her craft. Unless you have passion for the code you are writing you can’t build the best possible software. Take challenges; try something new, every week, if not everyday. Passion drives you to be the best.

What we lack is commitment and passion to build the world class product. Most of the tools we use everyday are built by a team which has less than 5 members. Compare yourself with world. There are so many ways for this now a days, participate in a coding competition. Take programming challenges at websites.

As a software company, we don’t need people who can swim better, or who can keep the ball on the ping pong table. We need people who can write fastest algorithms. We need people who are smart and get the things done. We don’t need just “smart” people. They’re carried away by the overwhelming enthusiasm in 20 things and try to do all of them. We don’t need people who get things done. They complete the work without finding a “smarter” way to do it. We need focused, passionate programmers. I don’t deny the importance of play. But play is something that comes after work. If you enjoy playing ping-pong more than writing a new program in Java, you better find a better place for yourself.

Organize coding competitions and algorithm challenges and design competitions. Create schedule for code wars.

Technical Knowledge & Experience

No one can deny the importance of technical knowledge in a Software company. I believe there should be Quarterly Technical knowledge review of each and every employee. If you interviewed a guy for his technical knowledge 4 years back, you still think that he’s keeping his knowledge up-to-date?

Personally, I believe that a person who has 4 years experience in 3 companies is better than a person who has been sitting in the cubicle in your own company for the last four years. The latter guy is accustomed and happy with what is happening here, he can’t tolerate some one moving his cheese. The person who’s coming from outside has seen the scenarios in 3 companies, and knows what failed them or what made their projects a success.

Training & Sharing knowledge

If you want to learn guitar, you want learn it from a guy who has given concerts, not the guy who read a book about guitar. A good trainer has rock-solid product development experience. Not just a stupid website and writing articles. (I , myself have a website, on which I put whatever I write, its just a matter of $3 a month and some typing).

Encourage people who propose new technologies, carefully evaluate them, and give them a chance to prove their point. Let them share the knowledge with everyone; create a proper forum for it.

Team spirit and Communication

Everyone in this world has his own importance. The people you lead have a value. Understand it. Communicate with them, tell them what is happening. They deserve the knowledge of what is happening. As a company we are paying them, we are not running charity institution. The people who lead other ones should have the real “leadership” qualities.

In big projects communication is really important. You make a big design decision and it loses its meaning by the time it reaches the real programmer who’s going to implement it, then there’s something wrong with the communication channel. Try to be as transparent as possible. Encourage the people participation in the process. People are more important than process.

The books a programmer must read

  • Pragmatic programmer.
  • The mythical man month.
  • The art of Unix programming.
  • Code Complete.

Books for the person who manages people

  • Peopleware.
  • The mythical man month.
  • The book of leadership wisdom.