Kris, Angelica & Johnny react to the recently announced Go team changes, discuss the finding that 80% of developers surveyed by Stack Overflow are unhappy & disagree about the concept of tech debt (but agree that somethingâs gotta give).
Johnny Boursiquot: Thereâs nuance there. I disagree, to some degree. So when we think of technical debt, we tend to assume itâs because the code is bad. The examples weâve used is AI generates code, and the code by definition is going to be average, because it takes in all the â it ingests a bunch of code from the world around it, and all that code is mostly not good. Iâd argue that whatever code has been fed into these models, certainly that code has gotten the world to where it is now.
And we are a technology-advanced world. I would rather live in this world, with its, by some definition, bad code, than to live in a world without it.
So I would say that we should give ourselves as humanity a pat on the back for having written code that gets us to this point. I mean, we can fly planes, send rockets to the moon, and do all kinds of crazy things. So Iâm going to be a bit more gracious towards us, engineers, software developers as a whole, and say rather than itâs the code being bad, I think itâs the fact that itâs not often â you take any developer at most companies⌠Itâs not that theyâre writing bad code. Itâs not that they donât want to write good code. Technical debt is not inherently a software problem. It is a business problem⌠Meaning that you are going to be learning. The business is learning. The reason why the business keeps coming to you and asks you to change a feature, or add a new feature, or fix something that they thought was going to work one way and now it doesnât work, is because they too are learning.
So when the business comes to you and says âHey, I need you to build this software. And hereâs the requirements docâ, however little, however much they give you⌠And you as an engineer, you take that spec, with your team, or your manager, or whatever it is, and you go build software. Youâre building that software on certain assumptions, and then you come to find out later on that, okay, some of those assumptions were incorrect, because either we didnât have enough data, or whoever was supposed to give us the correct answers made some assumptions based on bad data⌠Whatever the case may be. Itâs supposed to be a learning process for every party involved, the stakeholder and the people building the software. So that learning experience is going to generate some artifacts. Itâs going to generate some learnings. That is inherently what technical debt is. It is some assumptions that were made in delivering a piece of software, but now that we know better, how do we address this?
So to me itâs not that itâs bad code. Itâs bad assumptions, leading us to say, âOkay, well, because we had to create these classes, or we had to build this functionality, or write these services that are now no longer valid, or now need to change, because now the business knows betterâ, then weâre like âOkay, well, crap, we have to deliver this new set of features that theyâve just brought us, we have to do that next week⌠We donât have enough time to go back and fix all the things, all the assumptions that have been made.â Now we have to say âOkay, well, how can we patch these six other things just well enough to allow us to deliver on this new set of things that has just been brought to our doorstep?â
[00:48:23.09] So you do that enough times, of course the technical debt is going to mount, and itâs going to mount, and itâs going to mount, to the point where teams canât move fast anymore. And then at that point youâre like âThe business doesnât really want to give us timeâŚâ So every time you hear the myth of âOh, I wish the business could just give us a couple of months for us to go fix some things.â That is an expression of frustration from the engineering team basically saying âAh, We never get time to fix those things we know we ought to be able to fix, in order to move faster. We never get that time from the business.â Thatâs a point of frustration.
No developer realistically believes that theyâre going to get six weeks, eight weeks to go just fix things. But what they are saying â itâs a cry for help. What they are saying is âAh, I wish addressing our technical debt as we proceed, as we go was part of the culture.â And to me, that is the biggest issue Iâve seen time and again, be it very large companies, to very small startups, that are designed, that should be accumulating technical debt, because they are learning a lot faster than the larger organizations, based on my experience⌠They are generating technical debt faster. The problem always comes, big or small, when you donât address technical debt. You just keep on building, building, building, building, patching things, making just enough so you can build the next set of things, never addressing and going back and fixing the old things. To me, thatâs the biggest issue.