Career 1.0: Selecting first programming language

In last 2 months, at least 4-5 computer science students asked me which programming 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, 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 changes 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 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 or two 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.
sohail Imran

Accounts Receivable Finance |

6 年

Thanks for giving advice.... Please suggest some languages for Accounting and Finance Professional... Like Chartered accountant, Cost and management accountant. etc. Thanking in Advance.

回复
Vishal Shende

Tech Lead at HCL Technologies

10 年

Bhai give me your number

回复
Dinesh Shrivastava

Production Support Engineer & Assistant Consultant at Tata Consultancy Services

10 年

Nice post SIr!

回复

要查看或添加评论,请登录

Kapil Sharma的更多文章

  • Linux Power user; enhanced your productivity

    Linux Power user; enhanced your productivity

    Introduction You must have heard about power user or some users/coders doing things very quickly and efficiently…

    2 条评论
  • Setup development environment on new Mac

    Setup development environment on new Mac

    I recently resigned from Eastern Enterprise (Ansh Systems) and submitted my official Mac in the company. I'll be…

  • PHPReboot's WhatsApp weekly newsletter

    PHPReboot's WhatsApp weekly newsletter

    PHP Reboot have a WhatsApp group and we recently started weekly WhatsApp newsletter, where we share latest news, blogs,…

  • Quotes to remember by programmers.

    Quotes to remember by programmers.

    Few quotes that might help you understand what you are doing wrong. Just writing as I'd like to remember them forever.

  • Things I practically learned in 2017

    Things I practically learned in 2017

    One more calendar year is about to finish. It had some mixed success for me and without doubts, great practical…

    5 条评论
  • Comparing Angular JS, React JS and Vue JS

    Comparing Angular JS, React JS and Vue JS

    The article's title is comparing #AngularJS, #ReactJS and #VueJS but I personally hate comparing any tools. I…

    6 条评论
  • Experiment with open meetup

    Experiment with open meetup

    Meetups are a powerful way to grow communities. I'm organising regular PHP meetups in Pune since 2013 by name of PHP…

    2 条评论
  • PHPReboot: Current status and future

    PHPReboot: Current status and future

    I shared following message was posted to PHPReboot meet up newsletter. A must read for PHP developers in Pune.

  • Setting Cent OS minimal for Headless selenium testing

    Setting Cent OS minimal for Headless selenium testing

    This article is first in the 3 part series of . Series include three posts: Setting Cent OS minimal for headless…

    7 条评论
  • Selecting right PHP framework for your next project

    Selecting right PHP framework for your next project

    There is no thing best in the world. If something is best, it means, others simply wont exist and if exist, won't…

    1 条评论