Technical Debt

We all experience technical debt when building software, especially software that has been around for years. Most of us have likely encountered code that we are loathe to touch and modify. At least, we don’t touch it twice. We might change things once, but when it doesn’t work as expected, most of us put it back in it’s previous state and move on to something else.

At the same time, it’s hard to define what technical debt is or point it out to managers, who often can’t grasp the concept of why technical debt matters to a development team. They can’t understand the reasons why new code built on older code takes longer and longer to produce. It’s a nebulous concept that can baffle both people new to software development and those with years of experience.

I ran across a few articles that talk about technical debt. This one notes it’s commonly used as a phrase and also, it’s inevitable. There’s a short video from Ward Cunningham, who is said to be the inventor of the term. It’s interesting because the explanation isn’t bad code, it’s more that we don’t always understand the problem when we write code, especially at the beginning. As we have a disagreement between what’s coded and what’s needed, we accumulate debt. Ward talks about refactoring regularly as we gain understanding.

There is another piece that uses the Chernobyl disaster as a comparison with software development. This one looks at cost-cutting in both situations. The emphasis in software development is something Jeff Moden will appreciate: developers not writing robust code. There is also a section on designing to meet only 95% (or less) of perceived use cases, which I think is just reality. We can’t write software, in any practical sense, to cover 100% of use cases.

The final section talks about incomplete testing. While software development has gotten better here, there is still plenty of work to be done, especially with database software. I find far too few database engineers wrap tests around their code and often have problems with new data or when code is refactored. A few more tests added early often prevent issues later, or at least, save time when debugging. This is one place I think AI might really help with labor savings by writing these tests for us.

Technical debt is a reality of life. We have imperfect engineers, we have the pressures to get things done, the increasing complexity of software systems, and perhaps most of all, the pressure to keep moving forward with something new instead of refactoring something old. I don’t have any great solutions, but I also do see software developers working better than they did in the past. That gives me hope for a future where software is embedded in more places and used more every day.

Steve Jones

Listen to the podcast at Libsyn, Stitcher, Spotify, or iTunes.

Posted in Editorial | Tagged | 2 Comments

Slides and Code for SQL Saturday Jacksonville – Architecting Zero Downtime Deployments

The code from my talk today at SQL Saturday Jacksonville is available in GitHub in a repo: Zero Downtime

There is a description in the readme, but you can open the DBClient folder and the VS solution for ZeroDowntime in there in VS 2019 and run it.

The SQL Code is numbered in order in the SQL folder.

If you have questions, please feel free to contact me or submit an issue on GitHub. Please feel free to use this presentation at your own employer or usergroup.

Posted in Blog | Tagged , , , | Comments Off on Slides and Code for SQL Saturday Jacksonville – Architecting Zero Downtime Deployments

Traveling to SQL Saturday Jacksonville 2023

I’m heading to SQL Saturday Jacksonville 2023 today, speaking tomorrow. After not making any of their events, I went in 2022 and am back for their 15th event this year. I’m excited to go, though this will be quick trip. Some personal commitments have me going this afternoon and coming back Monday. This was supposed to be a Thur-Tues vacation + work, but it isn’t. Sad smile

I’m delivering a session on Zero Downtime Deployments, but there’s a bunch of great content scheduled. If you’re nearby, I urge you to register and attend.

Posted in Blog | Tagged , , | Comments Off on Traveling to SQL Saturday Jacksonville 2023

Startup Advice

Many technical people dream of starting a company and having it grow to an IPO. The history of computing is littered with the successes and failures of companies that attempted this. As a young man in high school, I saw the explosive growth and success of Apple, dreaming of working for them or duplicating their success. In the late 90s and 2000s, I tried a few startups before I founded SQL Server Central with my partners. I had success with that company, though no IPO :(.

I’ve seen many friends start companies, often consulting ones, though a few have built products. Building and running any enterprise is hard, and startups are no exception. There was a post on Hacker News looking for advice and business lessons from others, and I enjoyed reading the responses. I wouldn’t read much deeper than the first level of responses, as many of the subsequent comments are less interesting.

This response was something that caught my eye, especially as someone that’s had to do more than the technical part of running a business. A lot of the challenges I find in startups are business related, especially when technical people are in charge. It’s good for them to understand that core business, especially sales, skills are important. Even more important, home life matters.

It’s easy to assume that your technology matters. Is the bidding technology at eBay better than uBid or eBid or even Craigslist? They are now, but 20 years ago many of these sites were similar, and some had arguably built better systems. Was the tech behind Amazon in 1999 that far ahead of Barnes and Noble or Borders? Certainly, Amazon continued to invest in technology at a scale that exceeded many other companies, but they built their success because of execution in business, not technology.

Starting a company is hard, and it takes a lot of work. Whether you create a product or you are the product. I’ve seen many over the years, worked with some, and often the best products, tech, or people aren’t the ones that succeed. The ones that are best at running a business succeed.

If you want to try and start a software company, go into consulting, or perhaps create another business, I urge you to learn a lot about how to run a business. Basic sales, marketing, and accounting skills will go a long way towards helping your endeavor succeed. For many of you, the tech is the easy part, so don’t spend all your time there.

Steve Jones

Listen to the podcast at Libsyn, Stitcher, Spotify, or iTunes.

Posted in Editorial | Tagged | Comments Off on Startup Advice