

Ask HN: 0 - 6 months of programming, what milestones should I be accomplishing? - HiroshiSan

I am looking to start LPTHW and would like to set tiny milestones from month 0 to 6, to keep me motivated...something similar to http://www.whitakerblackall.com/blog/first-six-months/ I'm really new to programming so I don't know the different branches, or what the possibilities are, I assume they are endless :P!
======
Jach
My first piece of advice is to ignore what everyone tells you and find a path
you're comfortable with. :) What's been hard for me is deciding when to
explore and when to exploit. With a full time programming job that's mainly
applying my knowledge, not doing real research, I have much less time to
explore, but back in high school and the summers in between I had lots of free
time to learn a little of this and that and play around a lot. I started with
a PHP+MySQL book and for the first couple of months or so just plowed through
it, typing in the examples manually or doing my own variations of the topics.
When I learned about the "ternary operator" I made a web page that just
printed out alternating rows of color.

My second piece of advice is to find a problem, ideally a bunch of problems,
that you want to solve and that programming can help you solve. Solve them.
Definition of problem: something to solve. ;P e.g. a program that prints the
Bottles of Beer lyrics out, increase the start number until you can crash/slow
down your computer or server, build a blog website, image gallery, video game
with PyGame, or in text, native QT app calculator, project Euler math
problems, robots, whatever. The key is you have to have a desire to work on
whatever you're working on. When you lose that desire for your current
project, procrastinate by switching to a different project.

My third piece of advice is to learn how to use the git source control manager
and interfacing with GitHub. Then troll some Python repositories (
[https://github.com/search?type=Repositories&language=...](https://github.com/search?type=Repositories&language=&q=language%3Apython&repo=&langOverride=&x=0&y=0&start_value=1)
), find some with an open issues list and an issue that isn't assigned to a
particular person, fix the issue if you want/can, and submit a pull request.
Now you can say you've contributed to open source software!

Edit: if you really have no ideas of your own, which I'd find hard to believe,
you can do a small project I've been meaning to get around to for a while so I
can blog about it. (I blog mostly to my past self.) Implement a clone of the
game Pong three times in an imperative, Object-Oriented, and functional style
of programming.

------
aaronbrethorst
Six month milestone: still be interested in programming and having fun.

I'm not trying to be flippant; I don't think spending the huge amount of time
learning how to hack code is for everyone, especially if you don't have
professors, TAs or bosses breathing down your neck to get stuff done.

If you're _really_ motivated, ship something (anything!) that is used by
someone other than you.

Good luck! :)

------
benatkin
Interesting question. I've been programming for 10 years and I want to see
what I've missed. I suspect that if you picked good milestones and executed
them well you could be in the top quartile of all developers at the end of
those six months.

~~~
HiroshiSan
It would be nice if I could intern for someone and just do simple tasks, I'm a
college dropout and I don't really know how to go about finding something like
that...

~~~
benatkin
How about volunteering for the Khan Academy? Also try asking your question on
programmers.stackexchange.com. I bet they'll like it, with the ambitious tone
and the good book reference.

------
JoeCortopassi
The most important things for you to learn in the first few months are
actually pretty language agnostic (e.g. what a variable is, what a function
does, basic logical statements), but the big one that you should be looking
for is a basic understanding of how programs work. The idea being, when you
look at Facebook, iTunes or whatever, you should be able to start thinking
about the high-level decisions that the program makes, even if you don't know
how to actually implement that logic programmatically.

Everything else will naturally progress from there, but you can't progress as
a programmer, until you start thinking like one.

