Top 20 Programming Lessons I’ve Learned in 20 Years

JD over at DCS Media published an insightful post titled Top 20 Programming Lessons I’ve Learned in 20 Years. A few highlights:

  • Always backup your code
  • You are not the best at programming. Live with it.
  • Simplify the algorithm
  • Reminisce about your code
  • No project is ever simple
  • Software is never finished
Subscribe to this blog via RSS.

If you'd like to receive a very occasional email when I publish a major new article, enter your email below. Cancel anytime.

Launch Your Product. Quit Your Job.
If you want to launch your product (or website) and quit your day job, you've come to the right place.

I use the term Serial Micropreneur to describe an entrepreneur who creates the lifestyle of their choice through a portfolio of one-person technology businesses (MicroISVs, SaaS websites, e-commerce sites, etc...).

I'm a full-time Serial Micropreneur based in Boston, Massachusetts. If you're interested in hearing more about Serial Micropreneurship, subscribe to my RSS feed or email list (above).

5 comments ↓

#1 Bill Pierce on 12.01.06 at 12:11 am

I think the most often missed lesson is “No Project is ever simple”

#2 http:// on 12.01.06 at 1:28 pm

- The waterfall model is a fallacy; don’t succumb to its idealistic but unrealistic view. - Customers never know what they want, yet they don’t understand why this can be so hard for you to find out. - Use two phase contracting, first learn what and how to construct as a baseline, and then sign off on the actual construction. - You will never arrive at complete requirement coverage, nor should you. Deal with the complex and uncertain domain issues for the baseline. - Software is not manufactured, it is grown; the tools involved may be engineering based but the process and mindset requires just as much creativity. - Quality simply takes time, better to think of this as maturity and account for this in the plan. - Don’t optimize too early, it feels good but can lead you astray. - Watch out for gold plating, it feels good but can lead you astray. - Software can not be planned; it can have a target deadline and dynamic estimates but watch out for management trying to merge these. - Only developers can do estimates and the quality of these improve over time during the project. - Estimates are always overly optimistic, try to err on the pessimistic side since it is cheaper and cause less stress. - Software degrades over time; maintenance fixes/tweaks/hacks have a tendency to ignore the large picture and add complexity. …prolly more, but I should get back to work now.

#3 admin on 12.01.06 at 5:43 pm

Excellent points, Casper. I’ll likely touch on some of them in future posts.

#4 http:// on 12.02.06 at 9:44 am

Nice list, but with all due respect: this took you 20 years to figure out…? ;-)

#5 admin on 12.02.06 at 6:30 pm

The list was actually put together by JD at DCS media. I don’t think it took him 20 years to figure them out, rather after 20 years, these are the most important lessons he’s learned about programming. That’s a subtle, yet substantial, difference.