5 Lessons I've Learned from Three-and-a-Half Decades as a Software Developer

After more than 35 years in software development (I know I don’t look it—dermatologists hate me), I’ve written a lot of code, solved a lot of problems, and worked with all kinds of people and projects. The technology has changed dramatically, but the lessons I’ve learned along the way are still applicable, even decades later.

Here are five lessons that continue to shape how I approach both software and business today.

1. Never assume; always ask

When I was a younger developer, I sometimes thought I knew what the client wanted without asking too many questions. Inevitably, I’d spend hours building something that didn’t fully meet their needs. The hard truth is: assumptions cost time and money. Asking questions, even the ones that seem obvious, may feel slower at first, but it saves frustration in the long run.

2. Software projects almost always take longer than expected

No matter how carefully you plan, there are always unexpected hurdles: integration challenges, changing requirements, or simply the complexity of building something new. That’s why I’ve learned to build in buffers, set realistic expectations, and stay flexible. It’s better to under-promise and over-deliver than the other way around.

3. Work with clients that align with your values

One of the best pieces of business advice I’ve ever received is this: don’t work with jerks. No amount of money is worth the stress of a bad partnership where you’re never going to see eye to eye. When clients share your values—respect, honesty, collaboration—the relationship is smoother, the projects are more successful, and everyone enjoys the work more.

4. “Simple” requests are often more complex than they appear

When a client says, “This should be simple,” it often means they don’t see the complexity behind the scenes. What looks like a minor tweak can involve unraveling interdependent systems, refactoring code, or rethinking architecture. That’s not the client’s fault—it’s just the nature of software. I’ve learned to gently set expectations and explain why “simple” might take longer than expected.

5. Last but not least: Hire people who put the team first

Talent matters, but teamwork matters more. I’ve seen brilliant developers derail entire projects because their egos got in the way. On the flip side, I’ve seen so-called average coders elevate a team by collaborating, sharing credit, and supporting others. Ego can destroy a team; humility and collaboration can make one unstoppable.

Software development has been my career for more than three decades, but it’s also been my teacher.

At Sovereign Systems, these principles guide how we approach every project. We don’t just write code; we build partnerships, solve problems, and create software that helps organizations thrive.

Previous
Previous

Employee Spotlight: Jessica Gehman

Next
Next

SQL Server 2016 and 2017: Preparing for End of Life in 2026 and 2027