Monday, August 25, 2008

Are you a 'Java Graduate'?

Let me be serious for a change.

I recently had the opportunity to work with a highly talented bunch of individuals from a leading University in Sri Lanka. From what I have seen so far, them lot seem to be die-hard Java fans. Being as old as I am, I was brought up as a C/C++ programmer. But I had the opportunity to work with many other programming languages since then; one of which was Java. I thought it might be useful if I share some of my views in trying to answer the age old question that software engineering students seem to be having when coming out to the industry.

“What language should I specialize in?”

Naturally, we tend to side with the programming language which we are most familiar and good with. At the start of your career this is good as it gives you a jump-start at your job placement. You have enough things to worry about than having to learn a whole new programming language.. right?... well, the answer might not be that simple.

Yes, it is good to do the thing you know. But generally speaking, you will know a particular language well mainly as most of your course work would have been based on that language. Maybe a particular lecturer was better in teaching you one language as opposed to another. Maybe the course syllabus was setup a few years ago and at the time a particular base programming language was selected as the most popular in the industry. Maybe you had friends out there who were experts in one language and your judgment was biased based on that.

Maybe you shouldn’t be worried about a specific programming language after all. Wouldn’t you like to shock the interview panel of your first job by saying “I can program in any object oriented language out there”? Can you really do that? What if I tell you that most software developers with more than 7 years of work experience generally think like that? Given the opportunity they really can. True, they might have to get a quick refresher course on the latest technologies associated with the new language, but the language syntax is fast becoming a non issue. Online and compiler help is so good these days that I was able to learn Java on the job within 2 weeks.

But can you do that as a fresh graduate coming out of the University? Perhaps not on your first job – as most of the time, it is the hardest to secure. But from day one, in my opinion, you should think as a software engineer.

After all, your degree is in software engineering – not in java programming (or in any other language for that matter).


Trinity_SL said...

I agree with the fact that being religious about a particular technology/ language is a minus point when one’s career growth in the IT field is considered. The technological decisions should be taken based upon the nature of the problem you are going to address. There is no doubt about it.

But according to my personal experience in facing interviews, especially as a fresh graduate, I have to accept the fact that most of the companies tend to test the depth of our knowledge based on a particular language, may it be Java, C++ or any other. Having an in-depth knowledge of a language apart from knowing the basics of software engineering is definitely going to be an added value in such occasions. Correct me if I am wrong.

And again what I believe is that if you are good at a particular language/ technology, it is really easy to adapt to any other similar language/ technology which I have personally experienced. Once you broaden your scope, there is a high possibility that you end up not having a proper knowledge on any of the areas.

Bimal said...

Agree. Like I said, maybe it might be too adventurous to expect one to think generic when they are concentrating in getting their initial job placement. It is a case of specialization vs scope. I personally believe that you need to take the “middle path” - at least in your thinking that is. You certainly need to specialize on the programming language your current work is being done. But it doesn’t have to limit you on your next opportunity.

SanJ Wijeratne said...

Hi Bimal,
I'm an Undergraduate who is currently studying in the Faculty of IT, UOM and I face the same challenge to learn a new programming language in a quick time during my internship at Virtusa. Prior to that my specialization was in PHP and I wanted to learn a new programing language during my internship. So I choose Java and I was able to learn it in few weeks time (2-3) as I was taught OOP concepts in the Uni and it was a good foundation for me to learn the concepts in Java. Though my designs in Java at the beginning were not that good, I was able to come up with good scalable architectures for the research projects I was involved in after playing with Java for some time. So it is true that having a good understanding of the concepts is vital for you to familiar with any new technology.

As you have mentioned in your blog, now I also feel that I should master in Java and related technologies because most of the companies are now believing in that the fresh undergraduates should at latest know some tools and technologies (i.e - Servers, Frameworks, languages such as JSP, JSF related to Java, etc etc) that are heavily used in the IT industry to develop commercial grade software, when they pass out. So they question about those technologies directly in the Interviews. So we have no choice than reading and practicing those, if we want to join a company for a good salary.

I personally believe that Undergraduates should very much focus on concepts and theories in IT so that they can adopt themselves easily with the rapidly changing technologies. But since most of the IT companies expect undergraduates to be familiar with above technologies and undergraduates want to join for good salaries, they choose a particular language to master in, than practicing the concepts. But there are companies which believe in undergraduates should be good at concepts than tools used. My nearest experience on this was on the IT symposium we organized in the Faculty recently, when the CEO of WSO2, Dr. Sanjeeva Weerawarna addressed the audience and said that he personally believes that a university should produce graduates who are thorough in concepts and his company always seeking individuals like that. So I think undergraduates will stop running this race to learn industry related technologies and be limited in to a particular range of technologies if all the leading IT companies will start thinking like Dr. Sanjeeva and seek people good in concepts than who are limited to Java or .NET or the coming next generation state of the art programming language.


Bimal said...

My experience with most software companies in Sri Lanka is that they generally would like their staff to be versatile yet be particularly skilled in a few programming languages they might be using – which is understandable. But regardless of the employer’s preference, what I believe is crucial for a successful software engineering career is a solid foundation and then careful nurturing of conceptual knowledge and capability; especially capability to learn new technologies.

It takes several years in the industry to be able to truly appreciate the results of such an approach. First few years you will probably be spending perfecting your skills on a selected programming language or two. At this point the smart employers out there will recognize the potential and select individuals and assign greater responsibilities. This is the time you will be able to cash-in on those well honed capabilities.

Good luck!

Kokila said...

I always wondered what they meant by "Umba Java porak da?" This is most commonly heard when new acquaintances are made amongst the technology folk.

Upeksha said...

100% correct Bimal ! Its obvious we have to enter into the market with a value but on the other hand pricing you is totally depends on the individual. I've met some ppl who are always WILLING for new things and I feel they always deliver 110% to the company compared to an language geek. Ya.. Java is ONE language and its not THE language...!! having the foundation for any language is not directly given by the paper qualification, thats the passion I believe! hats off!

Bimal said...

Kokila, sounds like you've been hanging around with too many 'Java' friends... not that anythings wrong with it...

Upeksha, I never thought I will ever hear YOU saying "Java is ONE language and its not THE language" :-)