

Ask HN: Where does a beginner programmer start? - Buunta

Hey everyone,
I'm currently working full time while doing one unit a semester of a computer science course at university. In my spare time I am trying to learn as much about different languages (currently C, objective-C, html, css and php) as I can, however I am getting frustrated as I don't really know where to start and how to go about practising. I have been reading a few books but it's just not the same as actually working on a project and learning on the go.<p>If anyone has any suggestions or resources that could help me it would be greatly appreciated if you provide them!<p>Thanks in advance
======
pkamb
Pick a _simple_ project and see it through to completion. That's really the
only way.

So not making your own search engine, a dating website, twitter for cats,
anything like that. Far too large of an undertaking. Those are for later in
your career.

Because you listed Objective-C, I'd really recommend making a menubar app then
launching it on the Mac App Store. People expect menubar apps to be small
utilities that do one thing well. Perfect for someone just starting out. And
having launched an app to THE App Store is a huge boost to your portfolio and
self-esteem.

So pick some little piece of functionality you need and wrap it up as a
menubar app. Forum notifications, whois-lookup, image upload, workflow
enhancement... I'm sure you can think of something.

I made a small menubar app (see below) when I was learning Objective-C myself.
Highly recommended, once you have the basics down, to get to work on a simple
app.

Reddit Notifier: [http://itunes.apple.com/us/app/reddit-
notifier/id468366517?m...](http://itunes.apple.com/us/app/reddit-
notifier/id468366517?mt=12)

------
shanelja
First of all, practice makes perfect, throw yourself in to a project, even if
the task seems childish and inane, get yourself in to the routine of regularly
churning out code and you will become a much better developer.

One thing you will find is time pressure, as you go forward you will want to
give up or spend more time with your family, make sure you devote some time to
them as well, an unhappy coder generally makes for unproductive sessions.

Once you are in to the swing of things, coding away big chunks every day, you
will find that the standard functions given to you no longer suffice, try to
write a small library to ease whichever issue you are having (but please,
don't bother us with it if it's yet another javascript library!) and you will
begin to understand modularity and namespacing.

One key thing is this: if you have the passion, no matter your situation you
will become a much better programmer, if you don't care or don't devote time
to the task you will wilt.

There may be those who claim that they learned python in 6 weeks, or became a
coding superman guru in 12, but this is a game of masters and those stuck
behind them, it's a long journey ahead of you and a few years before you can
really say you are competent but if you stick at it like the rest of us, get
involved with the community and do your part, you will inevitably, through
trial and strength of will, be where you want to be.

If you are stuck for a project, try implementing a simple text based game in
PHP, then try to convert some of the code to c and port it to the software
level, it will teach you a lot about the differences between programming
languages and when to use one over the other.

P.S. Wrote this comment for your deleted topic :)

------
jfaucett
For practicing or learning new coding things I like to read a projects source,
run a debugger on it, and basically spend a couple days/weeks analyzing how
every aspect of the system works. Then after I'm comfortable i.e. I can go
through in my head for example the structs, their function calls, the system
flow, etc, I try to program my own implementation of the system, a part of it,
or a plugin. This has worked for me ,hopefully it helps :)

------
TobbenTM
Personally, I feel I have gained most experience from creating solutions to
(sometimes) stupid or easy problems. Stuff to generally making my life easier.
I even built a small social network focused around dating because I didn't
want to pay for the existing ones. (Needless to say, no one uses it today. :))
These kind of projects give me the most inspiration to learn new stuff and
finish it.

So find something that bothers you and fix it!

------
AtTheLast
CodeSchool.com has a lot of great classes on a wide variety of programming
topics. Also, think of a simple project you want to work on and do that.

DHH has a great post on learning how to program.
[http://37signals.com/svn/posts/2582-how-do-i-learn-to-
progra...](http://37signals.com/svn/posts/2582-how-do-i-learn-to-program)

------
runjake
Not to sound snarky, but try browsing previous posts to Ask HN. There are
numerous times when someone's asked a question like this. Rather than rehash,
try reading the good recommendations provided in those threads.

------
helen842000
I think Udacity has it spot on. It's great to finish a project and actually
have something to show for it, instead of having ticked off x number of book
pages or tutorials lost in the ether.

~~~
marinescualex
Great advice! Building a basic search engine is pretty awesome and keeps you
engaged. Really enjoyed it and now I'm taking as many courses as my time
permits :D

