The classical dilemma between product and engineering
Are you working with an organization that has been there for a few years? whether it's a 30, 10 or even 3 year old organization, I am quite sure you've faced or facing this now. There is technical debt somewhere, or everywhere, that needs to be paid, and paying that debt will hinder the value you're trying to add to your customer and stakeholders for a certain amount of time. Guess what? you're not alone! And being in the middle of this exercise right now at b_labs , I thought of sharing some thoughts about it.
So, how did this happen in the first place? I believe there are 2 major causes of technical debt:
Based on the size of the decision, the impact can also be different; a small component here or there that created some technical debt, is different from choosing an ERP as an innovation layer, or build software for years on top of a monolithic architecture; the debt in the later two is very high.
However, even small decisions causing technical debt can be very pricy; technical debt is like cancer, once it starts somewhere, it keeps spreading, a small decision here, a small decision there, and suddenly, there is a sleeping dragon underneath that just waiting to be awaken.
And believe it or not, I have never seen an organization starting to pay their technical debt by choosing to; there was not once that someone said: "hey, we have a technical debt here, so let's rewrite this, or refactor that"; there is always that wake up call, a performance bottleneck somewhere, a new feature that will require a massive change because it was not catered for, a software package that is will not be supported anymore... yes, always one of those bloody wake up calls.
So... what can we do about it as product and engineering people?
领英推荐
Avoid it! but how?
And guess what (again), it will still happen! How can we pay it then?
Happy to hear your thoughts, how you paid your technical debt, what you're doing to avoid it.
Co-Founder, Managing Partner at Cognipharma | Product Strategy | Operator | Product Management Advisor | Low-code Advocate | Former Head of Product @ OutSystems
8 个月Harder to do at scale, but something I’ve done recently was to put a value tag on the tech debt items … just like any other debt. “If we don’t solve (in our case, migrate) this in X amount of time, it will cost us X/year”. If the business return is there to support the Cost (not investment…) then I can live with it. If not, the actual $ amount makes it very easy to prioritize solving tech debt against other things. (PS: don’t get me wrong. It is usually not that easy to quantify / value it… but it is also not easy to quantify the next shiny object in your roadmap… we just need to be true to ourselves and our own value framework)
Senior Software Engineering | ex-Amazon, Microsoft
8 个月But do we always need to spend the energy and time to address the tech debt and wipe it out? Can't we live with it? Amazon ecommerce website uses a technology called Mason, properly no many people heard about it. The technology is obsolete and lacks basic capabilities such as unit tests. However, amazon website still uses it, or at least until i left, and no one decided to kill the technology for multuple reasons. First, business risk, any major revamp for a technology might result in a downtime, no one had the courage to sign off the decision that could bring amazon website down. Second, amazon ecommerce website is mature and stable. The revamp would not open the door for new features and business opportunities. In other words, there is no return on the investment required to address the tech debt.