Live data from Hacker News

Ask HN: How to step up my coding skills?

news.ycombinator.com

1–10 of 57 posts

Ask HN: How to step up my coding skills?

#1
My current job is lucrative but very unsatisfying, so I want to change careers and become a software developer. I understand that skilled developers are in high demand, but I have never written a program longer than about 1000 lines. What should I do over the next 6-12 months to become a "skilled developer"? Would it be possible to learn enough in that time so that I could pass a coding interview? I've been running Linux for years and know it inside and out, and I double majored in math and physics. I would love to work for a tech startup, or an established company like Google.

Re: Ask HN: How to step up my coding skills?

#2
My suggestion would be to find a simple website and clone it, or come up with your own idea. Start with Django and Python as it's easy to pick up compared to most anything else in my experience, and just learn by doing, searching stack overflow, and looking at other Django projects on github. That's how I learn new languages and frameworks and it seems to work well. However it might be different since you aren't yet a programmer.

I would say not to spend too much time reading books as you won't remember any of it when it comes time to code.

Re: Ask HN: How to step up my coding skills?

#3
Code. Build something. Figure out something you'd like to build, then figure out out to build it. You can't help but learn if you take that route.

If that's not your cup of tea, then start contributing to open source projects. Learn Git and Subversion, then start taking tickets for Firefox or Chrome. Start off with the easy things, then work your way up. There's lots out there that needs attention, and being able to show a potential employer your commits will stand you in good stead. There was a guy who was developing Chrome on here a while back offering you just that: get in touch with him, and he'll start feeding you tickets.

Ah, found it. here you go: http://www.aaronboodman.com/2010/10/wherein-i-help-you-get-g...

Re: Ask HN: How to step up my coding skills?

#4
Learn python the hard way: http://learnpythonthehardway.org/index

Try to think about exiting programs that intrigue or excite you. Clone these.

Think about whether you want to write "web" applications, mobile applications, scientific applications, etc. Basically, with a background like yours, coding will be easy to "step up", you just need to commit the time and discipline to doing so. Pick something, do it, and stick with it until you're good at it.

Re: Ask HN: How to step up my coding skills?

#6
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?

#7

Learn python the hard way: http://learnpythonthehardway.org/index Try to think about exiting programs that intrigue or excite you. Clone these. Think about whether you want to write "web" applications, mobile applications, scientific applications, etc. Basically, with a background like yours, coding will be easy to "step up", you just need to commit the time and discipline to doing so. Pick something, do it, and stic…

The advice to learn a variety of programming paradigms is sound:

http://mvanier.livejournal.com/998.html

http://matt.might.net/articles/best-programming-languages/

--------------

I haven't read pyHardWay, but I think it's vaguely in the lineaage of why's:

http://www.cs.uni.edu/~wallingf/teaching/188-agile/ruby/whys...

and for FP:

http://learnyouahaskell.com/

http://learnyousomeerlang.com/content

http://www.lisperati.com/clojure-spels/casting.html

Also, SICP, little schemer. Others?

Re: Ask HN: How to step up my coding skills?

#8

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 (CO…

Thanks for the advice. Given the choice as you define it here, I choose to be a "programmer", without specializing in only one language.

Re: Ask HN: How to step up my coding skills?

#9
A couple of suggestions from my experience as a self-educated engineer:

1. Become a programmer and not a coder (see below)

2. Don't skimp on theory, algorithms, data structures and math

3. Learn many different languages between OOP and Functional

4. Contribute to open source

5. Have personal projects

6. Stay current (but not inundated) with the industry

7. Plan on spending at least 5 years to become "skilled"

Some elaboration:

Becoming a programmer means having vision and seeing the system - not just its parts.

Theory, math, algorithms, data structures &c... will help give you a point of view that is abstract enough that you can see the system and not just its constituent parts.

Learning different languages exposes you to radically different ways of thinking, different methodologies, different approaches, and different "programmer culture".

Contributing to open source was the best thing I ever did - I was around other programmers of varying skill levels that influenced me from the very small to the very large. Plus, there's an amount of rigor in the application of the VCS/ticketing/workflow system that you will rarely find anywhere else (you typically will have upwards of 50 or more developers that work on code at different times of the day and all of this needs to be coordinated without soaking up the project lead's time). There is also more quality control of the API's and code, in general, because it is something other people use - not just the institution.

Personal projects is self-explanatory. Anything small, to the large.

Staying current is easy, just skim HN/Reddit and read articles that catch your interest but don't get sucked into them as a time sink.

It took me five years to become "skilled" at web application programming with Python. I would venture to guess that number will be true of many industries (with varying degrees). However, do it once and your ability to adapt is pretty acute.

Programming is an investment of your mind, body, and spirit. I wouldn't have it any other way though :) Any engineering field, really, where you get to create. Programming just has the quickest feedback loop of them all.

Re: Ask HN: How to step up my coding skills?

#10
The obvious is to contribute to an open-source project if you want to write a thousand lines of code. There will be plenty of suggestions on here for that.

I'll add that you should consider a site like StackOverflow to really get into "sprints" on lots of different programming topics. Plus you'll get to see what the experts do at the same time you submit your own answers, which is very helpful in the learning process.

Post reply on HN