ASK HN: How are you becoming a better programmer?
dmoney: For me, it really helps to have external structure in which to learn.  I had fooled around with computers, but I don't consider that I really learned how to program until CS 101.  Getting a job and learning what a big disgusting mess software can sometimes be was another big step.  Finishing projects I start on my own is a lot harder.I started composing a longer response to this, but it's getting too long for a comment one thing from it.  Maybe I'll post it when it's done.  Here's a paragraph from it:One thing I continue to learn is how bad I am at estimating.  I think the key to estimating how long a software project will take is not to lie to yourself.  It's easy to be overly optimistic about your ability to keep things on schedule by working extra hard or being extra smart (step 1, step 2, ... and then a stroke of genius happens... step 4: profit!!!).  Software complexity (and hence development time) grows non-linearly with feature set.  When you're thinking about squeezing in one more little waffer-thin feature, you have to trust your gut when the little exclamation point or question mark appears over your head.Also, estimating (and re-estimating) takes time.  Giving estimates off the top of your head is a recipe for disaster.