

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

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.<p>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.<p>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.
======
jacksondeane
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.

~~~
Brewer
I don't have any ideas and anything I see when I search for ideas just seems
silly.

~~~
glassx
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?

~~~
Brewer
The site cloning idea sounds pretty neat. Maybe I will try to clone HN.

------
veyron
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.

~~~
Brewer
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.

~~~
veyron
"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.

------
IgorPartola
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.

~~~
Brewer
"Or grab one of the lists of startup ideas and try to implement one."

What lists of startup ideas?

~~~
glassx
There's one right here: <http://ycombinator.com/ideas.html>

------
fribblerz
Would suggest to go through these - really helpful

1) <http://programmers.stackexchange.com/q/43528> 2)
<http://edweissman.com/53640595>

------
johnny22
contribute to an open source project that does something you like, but not
quite good enough.

~~~
Brewer
Any suggestions? I can't find any Python projects that look cool.

