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."
Nobody expects a recent graduate to write a kernel or a banking app!
So, do whatever makes you happy until you get a job.
Do daemons dream of electric sleep()?
Oh, and FWIW, it's best to learn several languages -- for example, Java / C# / C++ (and even C) are all fairly similar so they're easy to learn together. Once you learn one of them well, the others should come much more easily.
To succeed, you need a competency in far more than just a language. I'm sorry, its not that easy.
Get at least a basic level of understanding in the following :
* how to talk to and effectively use databases
* how to talk to hardware
* networking
* sys admin work
* presentation work
* regular expressions
* grep/find
* create a simple web page
* run a basic web server
* file permissions and ACLs
* build system
* shell
* source control systems
* the relationship of assembly to C
* that memory and processing power are limited resources
Pick a scripting language to know at a reasonable level. It will come in use when you want to quickly transform data or even write some of your program that's in your favorite language. That is the equivalent of your swiss army knife and duct tape kit.
As for a language, strongly know the basics for any OOP language, procedural language and functional language.
Don't expect to be spoon fed details of what you have the program. Learn why this program is being written. If you are programming a spectral analysis program, learn about that subject enough to know how your program is going to be used.
Learn to understand why the program is written, and what the audience will use it for.
Learn to communicate clearly.
Learn to ask questions when you are not sure.
you can master any language withing a matter of weeks
Not really, but you can be *proficient* and a *productive contributor* in a matter of weeks.
Mastery of a language takes longer because it's more about mastering of all of the little quirks, warts, conventions and whatnot that only come with experience with a certain platform than it is about syntax and transliteration of general programming techniques to the new language.
Still, I agree with the overall sentiment: Focus on being a good programmer and learning new languages (and being a valuable contributor) takes care of itself.
We are agents of the free
These are probably the most important "skills" any recent graduate can have. Companies expect new graduates to be a blank slate. College, especially a BS, is just to give you the background your going to need. After that, it's a question of acknowledging when you don't know something, finding someone who can help you, and, whenever you have down time, finding someone you can help.
In fact, one of the best things you can do during an interview when asked a hard technical question is to admit you don't know, and say that if faced with that problem in real life, you'd ask a coworker for help.
I'm a CS student and I learned python well enough to migrate a mysql database in under week.
CS shouldn't be about the programming but problem solving.
Non impediti ratione cogitationus.
If you're doing this to gain experience that will help you land a job, forget about C or Fortran.
Otherwise, it depends on what kind of software job you're looking for. Games and application development tend to be C++. Web-related software is more likely to involve Java.
I'm a final-year Computer Science student from the UK. During my studies, we covered 3 programming languages: C, C++ and Java.
And the other two languages were...?
Beetle B.