Hacker News new | ask | show | jobs
by smckk 2210 days ago
Pick one programming language and learn the hell out of it.

One way of deciding which language to choose is by surveying the top ten languages over the last 5 years and comparing it to the most common language most of your courses will be taught in. If your school is teaching Pascal or COBOL, the survey of relevant programming languages will help you avoid making the mistake of learning a “useless” language.

Then pick a nice tome, (I personally use the Deitel series) and just go through it faithfully for the next few years of college and after until - and this is the important part - you complete it.

You want a book with complete examples - not snippets of code. You have to type out these examples and have it run. This works in the skill of being able to write complete code of up to 200+ lines without breaking a sweat. A very valuable skill to have going into your senior year and the first few years of work. You don’t want to learn this on the job.

Learn the fundamentals of the language(loops, conditions, etc), learn data structures and algorithms and then learn to create GUI applications. Learn networking and databases. Learn everything in that one language. Again it’s important that you pick a general-purpose language to learn. You are not picking a language for its speed or unique characteristics, you simply want a language in which you can do everything.

And after all this learn to make simple games in that particular language or any other broad projects that you find interesting. I recommend game programming because it usually brings every part of the language together in one application, helping to keep your broad skill set sharp.

I’m also going to throw in a schedule you can use. Ideally aim for one week to complete a chapter, meaning a minimum of 2 hours every other day within a week. This weekly consistency will probably set in after your first year but if you stick to it, I can promise you from personal experience that you will master programming.