Ask HN: Please help me get out of this infinite loop of n00bness

6 points by Brewer ↗ HN
I've been programming for just over a year now and I don't feel like I've learned nearly as much as I should have. Not only that, I feel like I'm not making any progress either. I feel like I'm stuck in an infinite loop of n00bness.

I haven't work on anything that I would really consider a “project” yet, which I'm sure isn't a good thing at all. I just don't have any ideas for projects.

What can I do to become a better programmer? I'm sure that I want to develop software for a living, but I feel like I'm not on the right part at the moment.

14 comments

[ 2.5 ms ] story [ 43.6 ms ] thread
You are going to hear this anytime this question is asked.

A: "Build Something!"

Reading books and following tutorials are all well and good, but you are not going to fully understand what it takes to be a professional developers until you start creating full applications.

Don't worry about the design, or perfect architecture, just come up with a small idea and build it.

I don't have any ideas and anything I see when I search for ideas just seems silly.
Build a blog. Keep it simple:

Have a homepage with 10 most recent posts

- Post can have many comments

- Only users can comment

- Users must be logged in to comment

- Only you (an admin) can log in and make posts. Or anyone else with credential.

- Use SSL to encrypt your login.

Extra credit:

- Posts can have tags. Harder than you think.

- Comments can have comments. This is harder than you think.

Extra extra credit:

- Implement it once using an SQL database. SQLite/MySQL/Postgres will be fine.

- Implement it using a NoSQL database. MongoDB will probably be the simplest.

If you just want to practice programming, a Blog is a great idea, as invertedlambda suggested!

You can also try cloning sites you like, such as Twitter, Facebook, Hacker News. Or maybe a text-mode game. Anything that you might think is cool.

Or a tool for reading from some API you like. What about a command-line tool for getting the weather report based on your IP?

The site cloning idea sounds pretty neat. Maybe I will try to clone HN.
If you are a student, I would join the Google Summer of Code. You can actually get paid while learning something. You could also look for Open Source projects that need a maintainer. Or grab one of the lists of startup ideas and try to implement one. Yet another solution would be to try to implement a web server or a framework just for fun.

You are right in that you need to work on projects to become a better programmer: that is the fastest way to learn. There are a ton of problems out there that need solving. You just need to find ones that interest you.

contribute to an open source project that does something you like, but not quite good enough.
Any suggestions? I can't find any Python projects that look cool.
First redefine "better". Better is not measured based against a report card. Strong programmers are better able at taking problems and representing them in an efficient manner in a programming language suited for the job.

Are you interested in an ambiguous project or one where the rules are pretty well-defined? Both are useful: the latter cultivates the ability to connive solutions to clear problems (building the mechanics), and the former cultivates the higher-level ability to dissect and attack a problem.

As an example of the former, just fish around for ideas from this and other sites, or just try doing something based on your own idea.

As an example of the latter, try to build something where the protocol is well-defined. For example, build a simple web server or quantitative trading platform or web-based git client. In all cases, the protocols are fairly straightforward, and you merely have to implement them.

bet·ter -- adj. Comparative of good. -- Greater in excellence or higher in quality.

Please excuse the smart ass answer, but it's the best I had :P

I want to feel like I know what I'm doing, because half of the time I feel like I am just wandering around aimlessly like a chicken with its head cut off.

I want to be able to take an idea and turn it into a product that people would be willing to pay for.

I suppose I want to be a bit of a Jack of All Trades.

"I want to be able to take an idea and turn it into a product that people would be willing to pay for." <-- there are lots of great programmers unable to make a product people would be willing to pay for.

You just need to do lots and lots of dummy exercises, developing experience with the tools at hand. Then, when you attack the next great thing, you can draw upon your previous examples to figure out what to do.

As a personal example, I used to start writing very large assembly projects in straight x64 assembly. This has a logistical problem, namely that you dont necessarily have a working version for weeks.

Then i discovered python! After doing a few small projects in python, I saw the light (the productivity of python) and nowadays I find myself starting in python and slowly reducing components to C/C++ (using python/C or boost::python) and finally replacing those components with assembly equivalents.