Top 20 Programming Lessons I’ve Learned in 20 Years

Loading ...
November 30th, 2006 | Becoming a Better Developer, Cool News, Links & Reviews, Managing Software Developers, Software Development
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
About Me: My name is Rob Walling and I'm a software developer living and working in Boston, Massachusetts.
I write about hiring, managing, and motivating software developers, in addition to random outbursts on improving
development skills and software startups.
My consulting firm,
The Numa Group,
performs .NET development for clients throughout the United States. If you are in need of a .NET developer or architect,
drop me a line.
If you'd like to subscribe via RSS, my feed is
here.
If you'd prefer to receive very occasional emails when I publish a major new article, use the box below. Cancel anytime.
5 comments ↓
I think the most often missed lesson is “No Project is ever simple”
- 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.
Excellent points, Casper. I’ll likely touch on some of them in future posts.
Nice list, but with all due respect: this took you 20 years to figure out…?
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.