Saturday, July 04, 2009

What makes a great software engineer

There was a talk in the company by Srinivasan Sheshadri, founder of Strand Genomics and a former IIT Bombay professor, on what makes a great software engineer. It is difficult to talk on such topics, because there are no definitive answers, as Sheshadri acknowledged himself. From his experiences, and observations of people there were a bunch of points that Sheshadri has found in common among good software engineers:

  • Passion for your work: That goes without saying, and there is nothing that plays a bigger role.
  • Taking pride in your work, and as one person from the audience said - take responsibility of your work.
  • Do not be afraid to make mistakes and to fail. "If you are not making a mistake, you are just not trying hard enough."
  • Do not look for absolute perfection. You cannot optimize speed (in the sense of time to market), performance and stability all at the same time.
  • Just do it
  • Ability to communicate with all stakeholders - to bring out ideas, to get workable solutions fast.
A good list, and the list could go on and on, with each person putting out his own experiences. That is why, a quite a few people don't seem to be excited about such talks. After all, most things have been heard and talked of earlier. I enjoy such talks, and think of them as refreshers and morale-boosters. We keep forgetting most of these things, and the daily mundane activities dampen spirits.

Another thought. Since such a list runs the risk of growing infinitely, is there a smaller finite list from which a list of things that make a great software engineer can be generated? (Software engineers can't resist automating things :P). Here's a proposal:
  • Passion for your work: That goes without saying, and there is nothing that plays a bigger role.
  • Taking pride in your work, and as one person from the audience said - take responsibility of your work.
  • Honest introspection: If you want to be a better software engineer, keep learning, understand your limitations and strengths, and work on them. (That becomes the generator part of the auto-generator :))
  • Observation: How do you learn? From observing those who have done well, those who have made mistakes.

No comments: