Want to become a Computer Scientist

Started by
23 comments, last by Alessio1989 9 years, 4 months ago

@Olof Hedman - no but it's damn hard. Most people who start a degree will not reach master or doctorate level. It does take unusual commitment.

PhDs, to my knowledge, just take a looooong time to get. Pretty much like school and university: difficulty is different for each person. One has to fight hard just to get through basic schooling with no chance of surviving even the easiest university (or college for the US guys), while other sleep basically through their whole school career while still having the best degrees. PhDs seem to be even more individual, depending on the subject of your thesis and your supervisors you might have to work very hard for the PhD... or not so hard.

And then there are fields like the medical sector where the PhD is basically your master degree (At least here in switzerland)... you can skip the PhD of course, good look getting anything like a career as a doctor without the PhD. And because of that, medical PhDs are notoriously quick and easy to get.

Advertisement

When do you guys recommend that I learn a new programming language ?

Also, thanks for all the answers.

"For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life." - John 3:16

Blog: exchargedeeletri.wordpress.com

You should learn when you feel you want to in the free time you have, we can't tell you when to do this. However remember you learn more effectively the younger you are so don't wait till you're an old fart like me :D

When do you guys recommend that I learn a new programming language ?

Also, thanks for all the answers.


I learnt a single language when I started programming. After a few years of working with it, it began to dawn on me it was the only language I knew. So I expanded to C# and Python, and today I use at least three major programming languages regularly with experience in many others, some general, some scripting, some domain-specific, and even more software technologies (and I still have much to learn). Yet all this only took me about 3 additional years on top of the time spent learning my first language. It's important to realise that once you've gotten well past the beginner stage in your first language of choice, learning more languages is generally much easier. Knowing a programming language can be roughly broken down into four major knowledge bases:

(1) Abstract programming: understanding infinite loops, conditionals and branches, indirection, abstraction, referential transparency, closures, composability, algorithmic complexity, this kind of stuff, as well as a clear mental representation of how these notions generalize and relate to one another;
(2) Syntax and semantics: understanding how the language's collective keywords and constructs map to those abstract concepts, and knowing them well;
(3) Base utilities: being fluent with the development environment provided by the language to perform concrete tasks like renaming a file or communicating over the network, for Python those are the built-in modules, for C# it's undoubtedly the .NET technology stack, for Java it's its expansive standard library, and so on;
(4) External utilities: being familiar with a number of third-party libraries which are not provided by default with the language, the more you have in (4) the more valuable you are as a developer with that particular language;

Note that (1) does not depend on any specific programming language, and while you will need to add information to it over time, in general, say, 60% to 80% of what needs to go in (1) [in terms of how often you will need it] is learnt within the first two years of messing with your first programming language, and the more you have in (1), the easier learning (2) becomes for any language. Then for your second language you bootstrap (2) and (3) by writing the usual introductory programs suitable to that language (such as hello world, guess my number, hangman game, etc..) and after that it's only a matter of using the language regularly and challenging yourself to keep putting more stuff into (2), (3) and (4). Also, interacting with other programmers is a very good way to build up (4).

Also don't forget that it's not all about learning programming languages. Knowing how to develop an effective workflow is important. Experience in many different build systems and toolchains is also a very important aspect of being a programmer. Knowing how and when to use different languages together to benefit from the strengths of each is also important. Having strong debugging and testing methodologies is critical. There's so much more to being a programmer than just typing code.

All this to say that learning another programming language is not, and should not be, a big deal. Most software developers do it fairly often. If you feel you know enough C++ (is that right?) that you can successfully extend that knowledge to another language without needing to go over the basics again, then go ahead. You are pretty young, so I would personally recommend from experience to spend a few more months honing your C++ skills (have you covered lambdas, for example?) but it's ultimately up to you to make your own decisions. Oh, and this should go without saying but just to be clear: you are not expected to know every language - only learn those relevant to your career and your personal interests. Actively learning for the sake of accumulating knowledge is of no use whatsoever unless you intend to use it, and it often turns you into a jack of all trades but master of none, which is not a good thing for a software developer given the high competition and fast pacing of the industry.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”

PhD in Computer Science? Lasciate ogni speranza, voi ch'entrate. [cit. Dante]

Seriously, you are in high school so: keep programming, keep learning what you like most (a LOT important, at uni you will not always learn what you like), keep trying to obtains result (most important!)... Decide what type of uni course and degree take AFTER school.

When do you guys recommend that I learn a new programming language ?

Also, thanks for all the answers.

Programming languages are just tools. When you find that your tool does not fit well with what you are doing, it's probably time to find and learn a better tool for that job. Of course in real life there are some restrictions due to operating system, 3rd party tools (like APIs, frameworks)...

"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

This topic is closed to new replies.

Advertisement