Slashdot Mirror


Programming Language Specialization Dilemma

aremstar writes "I'm a final-year Computer Science student from the UK. During my studies, we covered 3 programming languages: C, C++ and Java. The issue is that we didn't cover any of these languages in sufficient depth for me to claim that I have commercial-ready experience. It's one thing being able to write simple programs for class assignments, but those are quite different from writing something as complex as the Linux kernel or a multi-threaded banking app. I'm thinking of spending a few weeks/months studying in order to specialize in one of those languages. Fortran also entered my consideration, as it is great for numerical computing and used by many financial institutions, banks, etc. In terms of skill requirements in job ads, my (brief) experience suggests that most programming jobs require C++, with Java a close second. C — unfortunately — doesn't appear as much. My question is: if you were in my shoes, which language would win your time investment? My heart suggests C, with a little bit of Fortran to complement it, but I'm a bit worried that there might not be enough demand in the job market."

3 of 569 comments (clear)

  1. Wrong way to look at things by janoc · · Score: 1, Redundant

    I happen to develop software for living and recently I am also teaching at an University at both undergrad and graduate levels. The students often ask which tools are we going to use and which ones should they learn. And I am always telling them - "the right tool for the job". If you want to learn tools, do not go to school, get a training course. The school is there to teach you the concepts behind and how to think. Focusing on the tools is like a carpenter learning only to use a hammer and screwdriver but not how to actually build anything. Also, the carpenters have more tools than just a hammer and screwdrivers - so do expect to have to learn more than the standard C/C++/Java/C#, they are not one-size-fits-all tools. I have honestly stopped counting the languages I had to learn - they are only tools to get the job done, and you learn a new one when it does the job better than something you knew already.

    In the programming case - learn your theory - principles of computation, logic, data structures. Programming languages are not important, if you are any good, you will be able to pick a new one up in a few days/weeks at most. However, that assumes that you know how to learn and how they work. Not to mention that a particular tool or software may be obsolete in a few years, then what? If you have learned only how to "push buttons", you are screwed, your skills are now worthless. Nobody may hear about C++/Java/C# in 10 years, but you do plan to be working in the field for longer than that, don't you? So you need to be able to adapt and keep learning - the principles will be similar, only the tools may be different.

    Also, as many pointed out, do not expect to be able to write an enterprise application right out of school. Nobody does that. The school gives you the foundations, but you need practical experience. And that comes only with time, there is no school that can give you that. Take on internships, part-time jobs, work on OSS projects, volunteer - all that helps to build up your skills. I was lucky to have a part time job at a small software company during my studies (I needed the money to support myself). That company did things "by the book" - proper analysis, everything documented, proper design. At the same time that I was learning software engineering in school, I had a hands-on tour de force in a real enterprise solving real problems using the methods I had just heard about, under supervision of really good engineers. That has helped me immensely - you cannot pick up all that knowledge from the courses alone.

  2. Re:Forget C and Fortran by khayman80 · · Score: 0, Redundant

    I don't have mod points- someone mod parent up!

  3. Re:Good News! by Gorobei · · Score: 0, Redundant

    You want to actually quote a statement I made about multi-threading that was incorrect?

    Feel free to assert my lack of understanding about multi-threading. Feel free to explain how you are the expert on exotics. Guess it's good to keep your mind occupied between making the customers' lattes.