After 20 years off earning my daily bread writing software, it’s still thrilling to start a new project.  That feeling of hope, knowing that this time we’ll do it right rather than cut corners and choose good over expedient. Every new beginning makes me think of what should happen, and reflect a little on what makes good work. That gets me thinking about what makes quality software.

One of the most important things in any endeavor is solid fundamentals. Whether it’s playing a sport or writing software, the basics matter. Always.

There are some constants that date from the days of 16 bit windows, C, Pascal, Foxpro and the rest of the pre-web world that still matter. It seems like the important ones have acronyms that stick, like the SOLID principles and DRY. We start to lose sight of them when we get experience.

Re-engaging with the basics makes projects go more smoothly. One of the things that I do is to review the basics every year.  It kind of makes me think about the reason that you would re-certify for a pilot’s license. Sometimes I think that it’s the kind of thing that we should do for developers. The downside of that is that people will naturally game any test.

We tend to optimize for the metrics and we would waste a lot of time re-certifying people. Any tests would either be to simple to be useful or take months of work to complete. So, testing would be a non-starter.

That pretty much leaves inculcating a culture where the basics are valued and appreciated. Creating that kind of culture means that management needs to understand and share those values.  Much like we need to insure that management buys into agile processes in order to make them work, we need to insure that management buys into creating solid principles and good design.