Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This demonstrates the problem if our education material focused so heavily on micro problems and so little on the next step of building a (non-trivial) app.

If you want to learn programming I recommend having a project in mind. Learn a little bit and get to hacking on the app. Don't worry if the code is good or not.



Step-by-step guide to implementing a complex project:

1. Think carefully about what behavior you want the project to have.

2. Prepare your development environment.

3. Hack on stuff until it seems to work.


For me, it's:

1. Pick the simplest, most trivial concept at the core of your project and implement the minimal toy version of it in a REPL.

2. Now implement the next simplest thing that moves the needle of progress.

3. Repeat.

I started working on a Bitcoin implementation a few months ago to practice Clojure. It started with this:

    (def block0 {:hash "abc"})
    (def block1 {:hash "def"
                 :prev block0})


I broke through that barrier by just building my own framework.

By the time I stopped, it was still grossly under featured compared to real FW's, but I figured out how to write an MVC framework with some of the niceties like URL routing, helper functions, validation harnesses, etc. The other part was building a websocket server in PHP, because the concept of something depending on Guzzle and parts of Symfony2 just struck me an insane for something like a standalone daemon.

Those two projects dumped me face first into the internals of a framework, and then into the nastiness of protocol implementation (hybi-17) in PHP. After that came PHP daemons for the AWS SDK, learning how to make shared memory segments work with different processes, etc. Once the floodgates are open, there is no stopping.


Even if we rewrote a lot of the education material to an ideal, there's still a huge leap from hobbyist to employment that I don't think is well covered.

My problem is that I believed employment would be within reach after teaching myself for a year.


> My problem is that I believed employment would be within reach after teaching myself for a year.

I was doing paid work within a year of learning PHP. It wasn't good work, but it was work.

The problem is that people want to go from 'learning programming' to 'building Facebook from scratch' - that's why the OP is having problems, when you compare your work to Wordpress, of course your work is going to come up short when you're new.

An analogy to carpentry: nobody expects a novice carpenter to make an entire set of kitchen cabinets from scratch and have them all fit and function correctly, or build a timber-framed barn.

But you certainly would expect a novice to be able to build you a crate or knock together a stool, shim a squeaky table leg, or make you a cutting board.

The equivalent paid work I was doing was along those lines - tweak this so that the tax calculation is updated, change the pricing structure to add a 10% surcharge if the order is over X pounds, those kinds of things.


This comment makes me realize how extremely lucky I was when I started learning to Program:

I had a friend working for a local medical company; they wanted to robo-call patients and remind them of appointments. They couldn't afford the existing $300,000 + $50,000 solution they were considering, and he told me if I could come up with something they would pay me $10,000. I had done some simple C++ programming in high school and knew I was good enough at programming, so I quit my job at HomeDepot and became an aspiring programming with a goal -- in my moms basement.

I read about Asterisk (open source phone software), then about PHP (which didn't excite me), then about Python. I liked Python. I read the 1200 page "Learning Python" book, but I learned most from the Python chat room on freenode IRC. They were harsh but helpful: "you're code sucks" and "use twisted" and "read this".

I manged to piece something together in 6 months and got the $10,000. From there, I got a entry level job, then job hopped for a 250% pay increase, then job hopped once more for another small pay increase, and now I'm here.

I think most people don't get offer a free contract and a goal to work towards before they even start.


Every programming job I've taken (ok, there have only been three) involved a lot of on-the-job training. And I have a 4-year CS degree!




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: