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
Start Small, Get Big
Growth Secrets for Self-Funded Startups. It'll Change Your Life.
What you get for signing up:
  • A 170-page ebook collecting my best startup articles from the past 5 years
  • Previously unpublished startup-related screencasts
  • Exclusive revenue-growing techniques I don't publish on this blog
"The ideas and information Rob provides should be required reading for anyone that wants to create a successful business on the web." ~ Jeff Lewis
Startups for the Rest of Us...
If you're trying to grow your startup you've come to the right place. I'm a serial web entrepreneur here to share what I've learned in my 11 years as a self-funded startup founder. Luckily several thousand people have decided to stick around and join the conversation.

For more on why you should read this blog, go here.


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