News for hackers. Stuff that matters.
Re:Ask HN: How to step up my coding skills? by thaumaturgy on Tuesday January 04, 2011 @09:54PM (#2069635)
You can learn a lot in 6 to 12 months, but you probably shouldn't expect to become a skilled developer in that time period. There are a lot of edge cases that you just have to experience to understand, and you'll never stop experiencing them, as long as you're programming.

These days, my advice -- if I felt qualified to give any, which I don't -- would be to decide now whether you want to be "a programmer", or "a (COBOL | Python | Ruby | PHP | Java | JavaScript | .NET) programmer". That is, decide whether you want to learn the principles of programming, and apply those to multiple languages, or whether you want to learn a language, and specialize in it.

If you choose to be a generalist, then you'll be able to more easily pick up new languages and work in alien frameworks, because everything you look at will be similar to something else you already understand. You won't be as good as someone who specializes in that particular language or framework, but you'll be good enough to get a job and do reasonably well at it. The flexibility will also make it easier for you to find jobs, assuming that you're able to sell your generalism as an advantage instead of a disadvantage.

If you choose to specialize, you might not ever understand certain low-level programming concepts, but if someone needs work done in your language or framework of choice, you'll be able to knock it out without any concern about how long it'll take you to familiarize yourself with the environment.

This decision will probably mostly be the result of your own mindset -- whether you prefer puzzles or stability -- as well as whether you'd rather aim for a job as a consultant (or freelancer) or a regular job as an employed programmer for some company.

If you decide to be a generalist, I'd recommend spending a couple of months learning basic concepts in an "easy" language (PHP, VisualBasic, Pascal), and then diving into C and then C++. By then you should be able to relate most languages to one of the couple you've worked with, and you'll have a better idea of what to learn next. You'll also develop a solid understanding of types, stacks, heaps, object frameworks, and on and on.

If you decide to specialize, then honestly the best recommendation I'd have would be to hit some of the job sites, see what people are looking for (and willing to pay for), then get some real, actual books on that particular language and dive in.

Your background in math and physics will help you when it comes to thinking analytically, but programming is still a whole other level of analytical thinking.

Good luck!

Re:Ask HN: How to step up my coding skills? by smokey221 on Wednesday January 05, 2011 @03:21AM (#2070349)
PHP is not an easy language for someone just learning programming, it has tons of annoying quirks and is hard to debug. Visual Basic is better, I'd also reccommend Ruby. Not only is it a very easy language to learn, it also provides him with decent career prospects.
Re:Ask HN: How to step up my coding skills? by thaumaturgy on Thursday January 06, 2011 @02:42PM (#2076824)
I selected languages based primarily on the range and depth of programming concepts that they use. So, PHP because it's relatively straightforward, but not Javascript because of its use of closures. Even though a beginner doesn't need to learn closures in Javascript, it's likely that they'll encounter them before long, and lots of experienced programmers have had to spend effort trying to get their head around them.

But, you're right, PHP does have a bad reputation in programming circles.

> hard to debug.

True, but there are ways to remedy this. My primary development environment is a PBG4; since I'm doing lots of Javascript/PHP work these days (and hating most of it), I have MAMP set up for a local development environment, with MacGDBp for debugging, and a couple of bash scripts that let me rsync between my laptop and various servers. With MacGDBp, I can step through PHP code, set breakpoints, examine variables, the usual debuggery stuff.

There are Windows equivalents for all of these tools.

Re:Ask HN: How to step up my coding skills? by SoftwarePatent on Tuesday January 04, 2011 @10:00PM (#2069651)
Thanks for the advice. Given the choice as you define it here, I choose to be a "programmer", without specializing in only one language.