TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Should a startup worry about technical debt before reaching product-market fit?

11 pointsby franciscomelloover 9 years ago
Should a startup spend resources refactoring code before p/m fit is achieved? Or should it spend its resources turning out features to win prospective customers?

13 comments

andreasklingerover 9 years ago
Everyone will say no to this question. And it&#x27;s the right answer.<p>But then you run into team problems with engineers feeling very exhausted working with your codebase and you have to constantly deal w&#x2F; missing confidence in the developed software.<p>In my experience &quot;Acknowledged technical debt&quot; is usually a good middle ground to work with. It usually also works with die-hard engineers.<p>Building software is not about writing optimal code. The goal is to have confidence in the code you wrote. Constantly wondering how something works only to realize that it doesn&#x27;t is energy draining and needs to be avoided.<p>Acknowledge and document technical debt. Explain (in notes) how stuff is meant to be, how it should be, what does work. Essentially you want to reduce the amounts of &quot;WTFs&quot; the next person (eg future you) has reading the code.<p>The most important lesson here is: technical debt can be a good thing. You buy expensive short-term impact with future time. Very often you never need to &quot;cheque&quot; that future time because that part of the product might have been thrown away.
评论 #10612686 未加载
tedmistonover 9 years ago
No, because your priority is building something people like <i>quickly</i>. Not building something <i>well</i> that people don&#x27;t necessarily care about.<p>That said, <i>tracking</i> tech debt is important. Creating issues in Jira, or whatever you&#x27;re using, can be valuable over time. Maybe there&#x27;s one specific piece that gets in your way of building features every week, and tracking it will make it more obvious or help you realize, e.g. &quot;we could make this 10x better with a few hours of effort vs. 12x better with a few days&quot;. Remember that product-market fit stage is when you&#x27;ll have the highest percentage of your time to dedicate to building features -- might as well make the most of it.
评论 #10614675 未加载
codegeekover 9 years ago
No. Your highest priority is to reach the product market fit and get real customers. You can always refactor.
评论 #10612460 未加载
mbrockover 9 years ago
Don&#x27;t write so much code. Once you figure out what you&#x27;re going to build, you can just throw everything away and make it again more properly.
vonklausover 9 years ago
I would offer that there is a definite correct answer to this in most, if not all, cases. It can go either way depending on what is going in your company and market.<p>I would consider a few things before making your choice:<p>* Likelyhood of Pivot while Repurposing Codebase<p>Obviously, people don&#x27;t just go into a startup thinking that they are going to pivot and they aren&#x27;t easy to predict because it means something unexpected is working well. Your architecture should allow for services and components to be broken out, e.g you will suffer massive technical debt if you want to pivot a service that is dependent on a schema based mysql database with a very rigid data model. All of this is set up on docker instances with crazy services and held together with a staple gun.<p>If you want to carve out a small service that is working, it will be impossible as it is inextricably tied to your bloated deathmachine. Death will quickly catch up before your revenue does if you have to port and rewrite your entire application and redeploy it. Make sure you can be sort of agile, in the sense that you at least have a componetized modular structure for services large enough to charge for.<p>* No One Likes Your Product<p>If your product is not great and no one wants it, having an immaculate and eloquent codebase will kill you as well. Something that does a great job performing a task no one will pay for is also negative.<p>my 0.02, tolerate technical debt at the micro level, but never at the macro level. E.g you can do refactoring if you need to, your code is not extremely dry, there are plenty of optimizations available but your code&#x2F;functions work.<p>DO NOT TOLERATE IT AT THE MACRO LEVEL You used the wrong tool, are trapped on the wrong database structure, your application is extremely unstable because of a major design choice, etc.<p>Lot&#x27;s of small errors are better than a few big ones.
swatthatflyover 9 years ago
The answer can depend on some of the architectural choices you made when you prototyped your product. If the original use-case has changed significantly, and you find yourself fighting the codebase to get it to do what you want today, the technical debt is something to worry about. The same thing applies if you cannot scale to serve clients requiring a lot more volume than what you anticipated originally. It&#x27;s possible that some clients have modified the original use-case they wanted when they signed-up with you, so your product must evolve to keep serving them. This may require refactoring, whether p&#x2F;m fit was achieved or not.
karmiphucover 9 years ago
The startup world may be influenced a lot by Mark Zuckerberg&#x27;s motto of &quot;Move fast; break things.&quot;<p>However, I don&#x27;t think it&#x27;s a good goal to aim for.<p>Like @andreasklinger and @hashkb said, you should have agreement with your engineers about your limit.<p>Refactoring can never be enough, because we always try to improve, try to be better.<p>You can think about the &quot;later days&quot; when you can come back on your codes and fix those crap codes, but you know you won&#x27;t. The bigger the debt for now, the costlier it will be in the future.<p>Trust me, my startup is managing on that.
ryantoover 9 years ago
It depends, technical debt lets the team build features quickly today at the cost of slowing down future development.<p>Startups with a short runway probably don&#x27;t have a future, so technical debt can be viewed as something with little downside that gets you to market faster. The tradeoff is that as your runway gets shorter debt makes it harder to try new things.<p>I&#x27;d say don&#x27;t worry too much about technical debt before p&#x2F;m fit. However, don&#x27;t let anyone on your team use debt as an excuse for half-assing something that could deter finding market fit.
shepbookover 9 years ago
No, but it depends. One thing to remember about technical debt is the concept of interest. Each time you have to go into a part of the code with high technical debt, you pay interest.<p>There is also something to be said for building a v1 MVP to prove product&#x2F;market fit, and then build an entirely separate v2 that is refined to what you have learned.
sheepmulletover 9 years ago
Like pretty much every question asked on hn the answer is &quot;it depends&quot;.<p>At what point do you consider p&#x2F;m fit achieved?<p>How many developers are working on the software?<p>What makes you think features are important?<p>How mature is your market?<p>What&#x27;s your value proposition? Etc etc etc.<p>If you are entering an established market then code-quality can be your biggest competitive advantage.
hashkbover 9 years ago
Give yourself a technical debt ceiling, and don&#x27;t raise it each time you hit it. Your engineers will stop trusting you, burn out, and&#x2F;or quit. Make sure you do more than just acknowledge the debt you are taking on, or else you don&#x27;t have technical debt, you just have bad code.
apiover 9 years ago
IMHO: &quot;A little, but not too much. The more product-market fit you achieve, the more you should worry about technical debt.&quot;
edoceoover 9 years ago
Don&#x27;t fall for the &quot;Next Feature Folly&quot;