Ask HN: Please help me get out of this infinite loop of n00bness
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 ] threadA: "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.
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.
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?
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.
What lists of startup ideas?
1) http://programmers.stackexchange.com/q/43528 2) http://edweissman.com/53640595
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.
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.
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.