Preparing for a Software Career

by Krishna on July 6, 2007

I sometimes get questions from computer science students about what to study. What they want to know is whether they should learn Java, .NET, or some other language. Most of them are only familiar with a programming career, so their questions center on that. They also look at newspaper advertisements to figure out what is hot in the market.

My answer about what to study usually disappoints them, because it is not as straightforward as they would like. It is also a little difficult to follow because it takes significant and sustained effort over a long period. Here is the gist of what I tell people:

  1. Improve your communication: It doesn’t matter what you know. What really matters is how well you are able to communicate to people. This includes your first job interview too. The interviewer does not know what is in your mind. You have to be able to express your thoughts clearly. When you do get your job, you should be able to understand, write and speak well. Otherwise you will be ineffective at your job.

    Learning to communicate does not come naturally. You have to work hard at it. You must read a lot to write well. You have to keep talking to people in various formal and informal settings to be comfortable doing it. In India, a particular challenge is finding the opportunity to speak English since everyone uses their mother tongue in regular conversations. This can be remedied to some extent by only using English in official settings. (Since a significant amount of software development in India is for English-speaking countries, using English makes sense. Otherwise use whatever language is appropriate.)

  2. Learn to work with people: Most people have little experience dealing with the power structures of a typical organization. You have to manage relationships with your boss, your subordinates, your colleagues, and other departments over which you have no power. One of the most common reasons for attrition in organizations is fractured inter-personal relationships and lack of inter-group coordination.As people gain experience, some of them understand how the dynamics work and are better able to handle and navigate various situations. However, other people continue to find this difficult and fall back on emotions such as indifference, anger, or frustration. Needless to say, that is not the best way to pursue a career.

    How does one build up this strength? Taking part in group activities while at school or college is a good start. Playing sports is especially good because you have to play similar roles to what you would in an organization. You also understand how to take success and failure in your stride and learn the value of teamwork and co-operation.

  3. Never stop learning: Software development is not a skill you learn at school and then use at work. You have to keep learning always. And you cannot rely on your employer to provide you training for everything, simply because even your employer does not really know what is round the corner. No one can make the training decisions for you. You have to find time and do it.The other thing about learning is to look out for learning opportunities. This is actually easier when you don’t know anything. It becomes more difficult when you think that you do know something. Then you stop learning. Also it is easier to learn a new technology than it is to understand a new methodology or follow a new way of thinking. You have to mentally remain the same age you were in school to maintain this attitude.

After I say all this, most people still ask, “That is great. But what should I focus on: Java or .NET?” Well, the answer to that is: Learn one thing really well. It does not matter what it is. Learn the ins and outs of it. Then when you pick up a book for another technology, you can relate quite a lot from what you know to that and then just learn the difference.

But that really sounds like hard work, doesn’t it? And that is the final word: The original question about the career really is a trick question. The person is actually only looking for a shortcut. There is a different path — a straightforward one. It is tough, but it is guaranteed to produce results. And in the long run, trying to cover up shoddy results and making excuses to people is actually more work. Making the effort now will bring greater satisfaction in one’s career.

The shortcut is, in fact, the straight road.


Anonymous September 29, 2007 at 10:19 am

Interesting blog you have here.

I found this post by googling around to explore the question: "If I were to learn a new language or platform, what should I learn? What are the pros and cons career-wise?"

A lot of what you have to say about communication, people skills, hard work etc is very valid. But all of it is just as valid for a lawyer or a doctor.

It is as if someone asked you about the pros and cons of being a tax lawyer versus an intellectual property lawyer, and your answer was: "the most important thing for lawyers is people skills... just pick any specialism and learn everything about it."

On the one hand, true enough that success in *anything* probably depends on your attitude and soft skills far more than the field you picked.

On the other hand, people need guidance in picking their field, especially when they are going to invest a lot of time and money in building their skills.

Mind you, if someone is only trying to decide between learning C#, C++ or Java, it is probably fair enough to tell them that their oportunities and working lifestyle will be much the same whichever one they choose.

Krish September 29, 2007 at 4:36 pm

Thanks for your comments, anonymous.

I have replied to your comment at

jobs in dc February 13, 2011 at 11:38 am

By experimenting with various jobs, you may obtain a liking to a particular position in a company. Most importantly, the job need to somehow harmonize together with your personality or you will find your self changing jobs regularly.

Comments on this entry are closed.

Previous post:

Next post: