In last 2 months, at least 4-5 computer science students asked me which language should they select/learn for their final year project and career? I was surprised what should I answer. Selection of programming language is generally based on your existing knowledge or project.

Problem here is, two of the most crucial factors of selecting programming language are missing here which make it very difficult question to answer.

Before we answer this question, we must first understand how most programmers select language for any project. There are two major factors:

  1. Existing knowledge.
  2. Project requirements.

Existing knowledge is very important. Suppose you know Java and someone give you choice to work on either Java project or PHP project. Your selection is obvious; Java. Why? Is it because Java is better than PHP? No, no language is better than other. You choose Java just because you know Java or in other words, you didn’t chose PHP because don’t know it and you are scared of learning it. Thats human nature. Changes are difficult for humans and we don’t want to go out of our comfort zone. Another reason, which is more valid, programming language is just a tool to fulfil business requirements and if I can do it with existing tool, why should I purchase another tool.

Second reason is project requirements. Now assume you are PHP programmer and you got a project to make a desktop application. Since PHP is not a good tool for desktop applications, your project requirements are forcing you to switch programming language. No matter which language you choose but you definitely will not choose PHP. Please note this is just an example when project force you to switch language but not a practical example as ‘only PHP’ developer will never accept desktop application project. However in real world, you sometimes get project that can be done in your programming language but learning and doing in some other language is more convenient, based on multiple factors like production server availability, existing team knowledge, client preference etc.

Now if you agree these two major factors of choosing programming language, both of them do not apply to the students. They don’t already know any programming language, at least they are not expert in any, so no matter which programming language they select, they have to learn. Again their project is not yet decided so obviously they can’t select programming language based on project requirements.

Now since traditional deciding factors are out of options, we must understand students requirements before we can suggest them programming language to learn. I spoke to couple of students and get their question ‘Which programming language should I learn?’ translated into following questions and their one line answer.

  1. Which programming language is easy to learn?
    If you understand the logic and concept, ready to put some hard-work and write some code, all are easy. Otherwise, none is easy.

  2. Which programming language have best job security?
    None. Any programming language will give you a start but you can’t simply stick to it throughout your life. Technical world change very frequently. Being in technical world, you have to learn throughout your life. As far as you keep learning and remain synchronized with latest technologies, your job is secure.

  3. (Most important) Which programming language have maximum job openings?
    Well there is no single acceptable answer to this question. Everyone have their personal view and everyone is biased towards language they know.

Answer to this last question depends on region, and quite a few different factors. So answer to this question keep on changing, let me explain through my own example. When I started my career in 2004, Java/J2EE and Dot Net had more demand in India. So I started with one of them (Java/J2EE) but at around 2007-8, I felt there PHP has more scope in future for me (well my personal view only, based on my personal/professional goals) and I switched to PHP. After that Python/ Ruby become famous. I learned their basics but I stick to PHP. However recently, I’m getting a bit interested in NodeJS. Currently I’m learning NodeJS but not sure if I switch to NodeJS or not.

So the point is, just start with any language and if needed, you can switch in future. Still selection of initial language is crucial as you have to find a job without any experience behind you and companies prefer experienced employees. So you must be very good in the language you are applying job for.

So my best answer, work hard during your college life and get selected in campus. If you can manage doing that, your company will train you and don’t shy to learn any language they teach. Simple reason is, learning first language is difficult but learning second, third and further languages becomes easy.

But above answer do not fit for you in two condition:

  1. You unfortunately do not get selected in campus.

  2. You want to decide your first programming language and not willing to let your company take decision on your behalf. Exceptional case but happens.

So now, you first need to know options. Options are:

  1. Web design: Although I will not call it true programming area but if you are good at arts, this may be your piece of cake. For this, you must be expert at HTML (5), CSS (3) and average to good knowledge of JavaScript. Along with that, some knowledge of design tools like photoshop, Gimp, etc also needed.
    This is a good option for those who do not have very good logical ability but good at arts. There is a very good demand for web designers as in commercial world, web presence is most needed and want to present them unique. A unique web design is important for that.

  2. Java: Java have little steep learning curve but it also have its rewards. While learning, you first have to learn core Java. With core java knowledge, you can design desktop applications. Again you can go ahead with J2EE for web programming. Most banking websites are designed in Java/J2EE and there is myth that banking/financial sector offer best salary packages. With Java, you also have option to go towards Android programming. With increasing use of mobiles/tablets, all companies want their own mobile apps and Android can’t be neglected in this area.

  3. PHP: PHP initially mean ‘Personal Home Page’. It was intended to make simple dynamic web pages initially. Lot has changed since then. PHP now is very good and acceptable programming language but PHP is programming language for web. So with PHP, you must also have average knowledge of HTML, CSS and JavaScript. Still they are easy to learn technologies as compare to Java.

  4. Dot Net: Dot Net is not a language but a framework. It contains different language like VB.Net, ASP.Net, C#.Det etc. Visual C++ and VB.Net are very good language for making desktop/mobile applications for MS Windows. With ASP.Net, you can also go to web applications. However be warned, this will bound you only to Windows operating system. It is still one of the most widely used operating system, but losing users to Linux/Mac.

  5. Ruby: Ruby become very famous recently due to one of the best web frameworks ‘Rails’. You must have heard about ‘Ruby on Rails’. It never come close to Java/PHP in terms of popularity but still have many job openings. With easy, English like syntax, it is easy to learn as compare to Java/C++ etc.

  6. C/C++/Objective C: C/C++ is one of the first language taught in most universities. It is still most widely used language. Whole Linux is based on C/C++. ‘C’ also have extensive use in embedded electronics so if you are Electronics student and still planning to make career in IT (which is common in India) you can pick that line. Objective C is mostly used by Apple and power Mac, IPhone/iPAD. So if you stick to C, you can easily learn Objective C and find your career as iPhone developer. Be warned, in India, most students use turbo C++ compiler. This is fine for initial learning but never a serious compiler. If you want to make career in C++, you must use professional compiler/libraries based on your functional area.

  7. Python/Perl/Cold Fusion/NodeJS etc: These are also popular programming language and popular now a days, but might not fit for you if you are just looking for job opening, at least not in India.

Above is the list of some of popular languages right now, their job openings, basic idea about learning curve and functional areas where they are best.

Still my best answer is, do it yourself. I recommend to invest one day for each language, go through their manual/tutorial and make few basic programs. You will get an idea which language is best fit for you. Once you select a language, give next 5-7 days to that language and make a small project to ensure you still love that language. Remember, this is just a starting of long journey. Get a job first but keep learning new languages.

Conclusion (Not recommended to go with my conclusion)

Again if you don’t want any hard work and need one concluding answer, focusing only the job, best answer in India is:

  1. Java/J2EE: It need lot of initial hard work but there are many Java/J2EE jobs available in India. However hope you have to sit idle for some time as Indian companies do not generally prefer Java/J2EE fresher.
  2. PHP: Learning is easy compare to other languages. Lot of mid/small level companies are working in PHP, even in tier 2 cities. You can get easy entry there but do not expect high salary right from beginning. However after 3-5 years experience, if you go in right direction towards learning, you can get very handsome salary.