TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Buy Don't Build

232 点作者 jrott超过 4 年前

72 条评论

simonw超过 4 年前
One thing to pay close attention to when making a build v.s. buy decision is the impact that billing models will have on your usage of a tool.<p>Take logging for example. If you buy a log aggregation platform like Splunk Cloud or Loggly the pricing is likely based on the quantity of data you ingest per day.<p>This can set up a weird incentive. If you are already close to the limit of your plan, you&#x27;ll find that engineers are discouraged from logging new things.<p>This can have a subtle effect on your culture. Engineers who don&#x27;t want to get into a budgeting conversation will end up avoiding using key tools, and this can cost you a lot of money in terms of invisible lost productivity.<p>Tools that charge per-head have a similar problem: if your analytics tool charges per head, your junior engineers won&#x27;t have access to this. This means you won&#x27;t build a culture where engineers use analytics to help make decisions.<p>This is a very tricky dynamic. On the one hand it&#x27;s clearly completely crazy to invest in building your own logging or analytics solutions - you should be spending engineering effort solving the problems that are unique to your company!<p>But on the other hand, there are significant, hard-to-measure hidden costs of vendors with billing mechanisms that affect your culture in negative ways.<p>I don&#x27;t have a solution to this. It&#x27;s just something I&#x27;ve encountered that makes the &quot;build v.s. buy&quot; decision a lot more subtle than it can first appear.
评论 #25404446 未加载
评论 #25401961 未加载
评论 #25401490 未加载
评论 #25401510 未加载
评论 #25408867 未加载
评论 #25411691 未加载
评论 #25402976 未加载
评论 #25425227 未加载
评论 #25409891 未加载
评论 #25405205 未加载
评论 #25404468 未加载
评论 #25404586 未加载
cortesoft超过 4 年前
All of this is true, but sometimes people forget that buying a solution doesn&#x27;t mean there will be no work. Sometimes, the integration and maintenance of that integration ends up being more than building and maintaining your own solution, especially if you have to do any large changes to how your systems work in order to integrate.
评论 #25401060 未加载
评论 #25400913 未加载
评论 #25399736 未加载
评论 #25399717 未加载
评论 #25401105 未加载
评论 #25400260 未加载
评论 #25399707 未加载
评论 #25403328 未加载
评论 #25399829 未加载
评论 #25401730 未加载
评论 #25399703 未加载
thinkharderdev超过 4 年前
These sorts of discussion always seem somewhat confused to me because &quot;buying&quot; vs &quot;building&quot; is not a binary choice. It is more often a choice between:<p>1. Buy some platform&#x2F;framework which you will then need to hire a small army of costly consultants to integrate and customize for your particular business need. Or<p>2. &quot;Build&quot; your own solution by orchestrating a bunch of open source technologies to solve your problem.<p>Moreover, it is not quite clear up front whether 1 or 2 will be costlier in terms of development effort and overhead.
评论 #25400404 未加载
评论 #25400069 未加载
评论 #25400328 未加载
评论 #25400331 未加载
评论 #25400479 未加载
评论 #25401019 未加载
评论 #25399811 未加载
评论 #25399868 未加载
watermelon59超过 4 年前
I hope this doesn&#x27;t get buried, because there&#x27;s something that I feel like I&#x27;m a bit of a unicorn about.<p>&gt; The problem then with that is everyone who is working on those services is usually trying to get off of them. After all, no one wants to work on something that their boss doesn’t care about.<p>&gt; Yes, your CI&#x2F;CD system is absolutely critical, but it’s easy for executives to not think about. This leads to a failure mode where you have a lost garden of internal tools.<p>I love maintaining stuff. I don&#x27;t care that my boss doesn&#x27;t care about something. I care about... what I care about :)<p>I don&#x27;t mind the &quot;boring&quot; tasks like keeping library versions up to date, being on the latest runtime version, and using a recent version of the framework we&#x27;ve adopted (we&#x27;re currently running on an ancient version of it). I like doing that stuff. I like keeping things tidy. If things are up to date, I can move on to making our CI better, or improving our test coverage, or really <i>anything</i> that improves the whole team&#x27;s productivity. There&#x27;s always something to update or polish or improve.<p>My dilemma is that as much as I&#x27;m willing to do all that stuff, I&#x27;m essentially not allowed to. My lead and their boss say my skills are too valuable to be spent on that, so instead I must do things like lead the new team they&#x27;re forming to build a new service... which I&#x27;m not interested in at all. I&#x27;m not keen on the whole lead thing. Glad to be a follower. I&#x27;m also not thrilled about building new stuff. I like to say I&#x27;m more like a car mechanic rather than an engineer: I like tweaking and tuning and fixing existing stuff, not creating new stuff.<p>Does anyone else feel like this? I&#x27;ve tried bringing it up in chats with coworkers and everyone looks at me like I have two heads.
评论 #25404583 未加载
评论 #25406678 未加载
评论 #25404489 未加载
评论 #25404503 未加载
评论 #25410002 未加载
评论 #25404417 未加载
评论 #25404835 未加载
taylodl超过 4 年前
<i>Systems of Differentiation</i> should employ a build-first strategy. These are the systems that differentiate you from your competitors, they are your competitive edge. As such you typically need tight control over these systems and don&#x27;t want to rely on 3rd parties - either vendors or contractors.<p><i>Systems of Engagement</i> &amp; <i>Systems of Record</i> should employ a buy-first strategy. These are typically more operations-focused systems and as such you&#x27;re usually better off buying them, but not always (see below). It&#x27;s possible that some of these systems may also be <i>Systems of Differentiation</i>.<p>What is a buy-first strategy? It means consider buying first. How much would your operations be impacted by the necessary changes to your workflow? How much customization will be required in order for it to be usable and how are those customizations maintained throughout product upgrades? How much integration is required with existing systems? Buying software is rarely a buy, deploy, and done proposition! Usually the TCO is lower if you buy, but not always - depending on how much customization and integration is required.
评论 #25400337 未加载
评论 #25400351 未加载
评论 #25404824 未加载
zmmmmm超过 4 年前
It&#x27;s interesting that the whole article is pitched around a context where there is a basic assumption that there is a whole engineering team, devops etc., and the question is about how their time is best utilized. But if you chose to buy instead of build <i>everything</i> most of that would not exist.<p>So there&#x27;s a paradox I see which is akin to the credit system where only people who don&#x27;t need credit are offered it: you can only &quot;afford&quot; to buy instead of build when you <i>have the engineering competence to build</i> - that&#x27;s when you can intelligently choose not to.<p>On the other hand, if you lack the internal competence to build and for that reason choose to buy? That&#x27;s when all the bad things happen. You&#x27;re going to get screwed by your vendor - they are going to know you aren&#x27;t technically capable of supporting yourself, they will give you stupid timelines, blown out costs, unreasonable constraints (&quot;it has to have a 16 core, 256GB RAM server or we won&#x27;t support it&quot;) etc etc. You <i>will</i> end up with the worst case of vendor lockin and a system everybody hates.<p>So one of the pitches I make when people are making this decision is that you should be building at least some things, because the strategic cost of not doing that affects everything else you do.
mlthoughts2018超过 4 年前
I think all four points in the article are deeply wrong.<p>1. It is easy to run your own services. You should be investing in internal developer tooling that makes this easy, and in fact that developer tooling should sit in front of any vendor solution you ever buy so that the way it integrates with your alerting, monitoring, data exporting, etc., is completely standardized to be uniform with service delivery in any other system in the org.<p>2. and 3. You do need complete control over what the application does because it absolutely always is unique and special on a per-use-case basis every time. A good example is search. Anyone who thinks search is a commodity service you can just throw ElasticSearch or Algolia in front of is sorely mistaken and dangerously naive. Every different search use case is going to have different success criteria, different data privacy concerns, different timeliness and freshness concerns, etc. and you need business software to control these elements in ways that fit into standard internal product management and QA procedures.<p>4. Vendor lock-in is a critical problem. If you choose GCP vs AWS, you are defining <i>culture</i> and you are defining experimentation and exploration that you <i>cannot</i> do. You’re essentially cleaving away many future possibilities from <i>even being testable</i>. It’s much worse than just having a crufty old system to maintain, it’s about brittleness and lack of ability to appropriately empower engineers to consider whatever part of the solution space <i>they</i> decide is needed. Companies that “get it” will prioritize “ease of swapping” so that you can constantly improve and leverage autonomy without needless parochial constraints on what can be considered. Thinking, “yeah but just buying it solved our problem today” is such a death knell of weak leadership who cannot fathom strategy or how to leverage real solution ideation from their staff.
评论 #25405186 未加载
veesahni超过 4 年前
For Enchant [0], we followed the &quot;buy don&#x27;t build&quot; philosophy a lot in the early years. However, the biggest challenge has been reliability.<p>For example, a service provider will have a 5H outage without any clear indication about what&#x27;s going on or when it will get resolved. This leaves us in a difficult position to raise an incident with an unknown ETA where we can do nothing but wait. Then when it&#x27;s all resolved, we either don&#x27;t get a post-mortem or a hand-wavy one.<p>Or a service provider will lose data, which may have been minor to them but critical to our operations. And all we get from them is an &quot;oopsie!&quot;<p>So over time, we&#x27;ve ended up insourcing mission critical pieces (within reason) since we can engineer solutions with guarantees that are inline with customer expectations and our own targets.<p>Separately, in some cases, buying and integrating turned out to be a ton more work than what building in house would have been. Because when we build in house, it can be built to meet our full requirements in the first place.. whereas when buying, we may find ourselves working around limitations in the APIs provided to us.<p>0: <a href="https:&#x2F;&#x2F;www.enchant.com" rel="nofollow">https:&#x2F;&#x2F;www.enchant.com</a> - shared inboxes, knowledge bases, live chat
phsource超过 4 年前
I&#x27;m totally on board with the overall message that building (i.e. engineering) your own internal tools come with lots of overhead, but take issue with this one point:<p>&gt; My counter-argument to that is there is also lock-in with internal systems. The most common version of this is the keeper of the spreadsheet.<p>The author then disparages spreadsheets as becoming the exclusive domain of one employee who wouldn&#x27;t want processes to change.<p>In reality and my experience, though, spreadsheets are one of the most versatile and accessible systems, and their close cousins (Airtable, Notion) great as well! You can customize it to your own processes and they&#x27;re pretty universally understood, so the barrier to change is pretty low.
评论 #25399600 未加载
评论 #25399637 未加载
评论 #25399751 未加载
评论 #25401214 未加载
评论 #25399601 未加载
rachelbythebay超过 4 年前
It’s not buy vs. build. It’s _rent_ vs. build.<p>Unless you are actually purchasing whatever it is you’re using... and I’m guessing they aren’t doing that.
评论 #25404483 未加载
评论 #25411417 未加载
drej超过 4 年前
I used to have a boss who took this logic to an extreme and basically preached “always buy, never build”<p>Problems mounted - cost, security, integration issues, performance, ... - we couldn’t do anything about any of that, because we just wrote glue code to combine all the SaaS stuff.<p>I think about that job from time to time and I have two theories as to why this guy was like this - a) lack of trust&#x2F;knowledge his engineers can build stuff, b) bragging about using a shiny-new-tech is better than talking about writing a Python script that saves data to Postgres.<p>All in all - good points in the article, but there is more to the decision (as hinted in the summary), building stuff is not just about scratching one’s itch.
评论 #25400015 未加载
rq1超过 4 年前
Sorry but no.<p>It’s cost dependent and you should carefully study both options.<p>It’s part of the engineering: study fixed and variable costs.<p>Outsourcing is cost effective when the market is mature enough.<p>You should maybe not rebuild cloudflare’s core services to operate a website.<p>Depending on your scale, you certainly should build your own ML stack for instance.
libria超过 4 年前
&gt; The desire to build custom versions of everything seems to come from a few places: 1 [...] 2 [...] 3 [...] 4<p>There are personal reasons as well:<p>5. Innate curiosity and excitement about technology<p>6a. Get experience<p>6b. Resume talking point<p>Many of us picked a career in IT because just like building things out of Legos is fun, building a streamlined full CI&#x2F;CD pipeline is fun, building a full stack application is fun, etc. Speaking of career, one needs to acquire experience in the new technologies to pad their resume and it&#x27;s convenient to do it on company time.<p>I&#x27;m not justifying putting your interests ahead of your company&#x27;s, but understand that&#x27;s what some of us do. I&#x27;d say #5 and #6 are often stronger drivers for decisions than #1-4.
je42超过 4 年前
You can only buy stuff if you know that stuff is aligned with what you need.<p>Further, you need to consider that the stuff you buy also needs to aligned with your needs over time.<p>However, you also need to consider this when building stuff.<p>The alignment is the tricky thing it is easier to achieve when building in-house as long as you engineering is up to the job.<p>Also, note that building in-house doesn&#x27;t mean engineering &quot;from scratch&quot;. Usually it means use lower level components over higher level components&#x2F;services.
whoisjuan超过 4 年前
I own a Screenshot API service (shameless plug: <a href="https:&#x2F;&#x2F;getscreenshot.rasterwise.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;getscreenshot.rasterwise.com&#x2F;</a>) and this exactly the argument that I make for small utilitarian services like mine. You shouldn&#x27;t build them because buying them is several orders of magnitude cheaper.<p>I have a small paragraph from a blog post where I explain this with some math that is probably crappy but captures the idea:<p><i>&quot;When you spend time in areas that are not the core of your product, you&#x27;re actually being financially inefficient. Taking screenshots is likely not a core task of your business so it doesn&#x27;t makes much sense to waste development resources in this area.<p>Here is a brief example of how inefficient it gets:<p>A mid-level developer in a small market earns $90K USD per year, working 40 hours per week. His&#x2F;her effective hourly rate is $47 USD per hour.<p>Writing a basic implementation of a screenshot utility will take at least 5 hours. But this is just a simple prototype. Many use cases will need to be addressed, and there&#x27;s likely going to be a large amount of time spent in optimizing, securing, provisioning, testing, etc.<p>A realistic utility that can be used for a development workflow is going to take at the very least 30 hours of development time, but likely more.<p>Other un-accounted areas of development time are: documentation, training and maintenance.<p>Given this scenario is very likely that writing a semi-good solution will take more than a week and maintaining it, will take at least an hour every month.<p>This means that writing this solution will cost almost $2000 USD of development time plus another $500 USD or so, just to support it every year. And of course, this doesn&#x27;t include the cost of the infrastructure you&#x27;re paying to run it.&quot;</i><p>My argument is that the more utilitarian the service, the more cost-effective that is to buy it instead of writing it. Writing it could be simple but there&#x27;s a drain in engineering resources when you try to maintain it in the long run.
评论 #25402028 未加载
评论 #25399662 未加载
评论 #25400222 未加载
评论 #25399725 未加载
temporallobe超过 4 年前
This is not a universal truth. I’ve worked with COTS products that required a ton of work to customize and get working properly - sometimes costing as much in time and manpower as it would have been to build the same thing from scratch. Often this happens with managed server all-in-one “business solutions” systems that let non-developers build UIs and reports (and charts&#x2F;visualizations, etc.). Nearly 100% of the time this is inadequate and often completely fails, requiring management to bring in actual software engineers to “fix” things and eventually just rebuild an entire dashboard from scratch using real development tools and techniques. Many of these kinds of shops underestimate the importance of strong software engineering practices and fail to understand the complexity of their own requirements, much less the complexity of their data.
trabant00超过 4 年前
There are several good comments in here explaining cases and reasons to build instead of buy. But they are all techical and miss one critical thing: human motivation.<p>Nobody cares about your bussiness as much as you. The motivation behind your product&#x2F;service provider is to take your money. Buying will always be a battle with the other party to get value for your money. They are strongly motivated to offer as little work for as much money as they can get away with because there is where profit is made.<p>The provider might even be more competent than you in building. But think about hiring a good programmer that just doesn&#x27;t want to work vs a mediocre one that is highly motivated. I think everybody has come across these examples and knows the outcomes.
评论 #25404817 未加载
monadic3超过 4 年前
This doesn&#x27;t account for vendor incompetence at basic customer support, which is far and away the largest reason to avoid renting commodity services. Being able to debug and fix things on demand without waiting on another party is massively valuable.
lexicality超过 4 年前
One of the few things I appreciate from my abusive first boss was making me acutely aware of the value of my own time.<p>He was incredibly stingy with money and always wanted to know how much it would cost him to have his engineering team implement something vs how much it would cost to buy it and integrate it.<p>Admittedly he was pathologic about this to the point of having us create a timer that counted in pounds sterling that he&#x27;d start running at the start of every meeting, but I feel like it made me way more efficient with my time (and hate long meetings)
评论 #25399983 未加载
评论 #25399762 未加载
human超过 4 年前
From an engineer perspective there is a learning opportunity that can’t be underestimated. If you have free time to build it’s always interesting how much you can grow by doing it yourself. However, if you are working for a startup and time to market is essential, than buy it for sure.
nine_k超过 4 年前
When you have more money than time, prefer buying. When you have more time than money, prefer rolling your own. It&#x27;s a well-known principle.<p>For a VC-backed startup with millions galore and a pressure to beat competition, buying is natural.<p>For a bootstrapped company or a side project, building your own may be best, especially when the advanced features that make market-leading solutions more expensive does not add a lot of value at the company&#x27;s current scale, and the growth is not exponential.
coward8675309超过 4 年前
The way I put this to clients is that you should own the bricks that your product is made of and not worry so much about the mortar. The bricks are the SQL queries, the logic inside the container images you run, the data stored in the tables and storage buckets. Oh yes, and the business relationships and brand equity.<p>As long as you&#x27;re wiring those things together in ways you can replicate across cloud providers or in your own datacenter or on your own server in the closet, you&#x27;ve achieved the sweet spot in terms of deployment portability.<p>Running your own (Kubernetes cluster|database instance|pubsub system) on a cloud provider is crazy given that you now have at lease $150K+&#x2F;yr piece of overhead in the form of at least one (dev)ops person. Save that expense for when or if you decide your needs have become predictable enough that you can start building your own software&#x2F;hardware&#x2F;network infrastructure.<p>Unless advanced devops fu is an important part of your company&#x27;s mission or valuation, don&#x27;t do it unless its saving you a lot of money over the alternatives.
评论 #25402274 未加载
CapitalistCartr超过 4 年前
Building anything is step 5 of a good process, not step one. Whether you buy or build is far secondary.<p>First, check the motivations. Emotional or logical. If the driving motive(s) is ego, that&#x27;s already a big, red flag. Consider running like a bull in reverse.<p>Second,intel. Gather information about the situation; educate yourself. Find the apples on the road.<p>Third, formulate a vision, an image of the final result that all the stakeholders (those whom you cannot ignore, no matter how hard you try) agree on. This is where beautiful diagrams are created. Which don&#x27;t matter. All that matters is each stakeholder signs &amp; dates it.<p>Fourth, plan. Use your knowlege gained in step two to formulate a plan for getting from the current situation to the &quot;vision&quot;.<p>Fifth, execute said plan. Find more road apples.<p>Sixth, debrief. Analyze the outcome. Get a drink with the ones who did the work.<p>This can all boil down to just you spending 2-3 days running around doing it yoursels, or multiple teams spending most of a year herding cats. The important part is knowing the steps, and mentally looking for them. And for those who push to skip.
jrochkind1超过 4 年前
Good article, I am definitely filing away to pull out in some future team discussions.<p>This paragraph is confusing me, either it&#x27;s missing a &#x27;not&#x27; or something, or I&#x27;m just confused. Is anyone following?<p>&gt; The question you should be asking is what else could be done instead of tuning your own stuff or building a new internal system. The answer is usually spending more time coming up with the correct architecture instead of fighting fires or developing actual customer-facing features.<p>Instead of building internal systems you would be coming up with the correct architecture instead of fighting fires or developing actual customer-facing features? Wait, what? there are too many &#x27;instead of&#x27;s in there and i&#x27;m not sure they are all meant how they are said.<p>I think developing actual customer-facing features is the goal, but here it sounds like the thing you would like to avoid... and I&#x27;m not really sure about fighting fires (ideally you want a system where you do less of that, right?) or coming up with the correct architecture (?).
评论 #25399649 未加载
评论 #25401047 未加载
x87678r超过 4 年前
This is where free &amp; opensource has really changed the world. Its not buy vs build any more its download vs buy vs build and its best to use a free package that is out there. Its incredible what is available now, in the future I wonder if anyone will need to build anything.
einpoklum超过 4 年前
This is Capitalist logic, and more specifically - an argument for the concentration of capital in the computing&#x2F;IT sector.<p>We, software developers and users - people and small organizations - should adopt the opposite slogan:<p><i></i>Built, Don&#x27;t Buy.<i></i><p>When we build, we improve our knowledge and understanding of systems. We help affect them, through engagement with their developers or through modification and forking. When the challenges and overhead of building exceed our abilities - this will drive us to:<p>1. Strive for better-fitting software - easier to use, deploy, build and maintain; and<p>2. Cooperate and collaborate with related organizations and communities&#x2F;groups of developers and enthusiasts, either to share knowledge on how to get things done more easily, or to distribute the load of work between many parties, each of which can&#x27;t do it on their own.<p>Even if a lot of FOSS contribution these days are made at for-profit corporations - the above is key to the future of both software freedom and social freedom.
评论 #25404908 未加载
madrox超过 4 年前
What this doesn&#x27;t mean, though, is Buy Everything. Buying everything is also how you get poor quality and poor process. It&#x27;s important to recognize what&#x27;s core to your culture. It&#x27;s why I prefer discussing this as a what is core vs commodity decision.<p>If there&#x27;s a general rule for making these decisions, I haven&#x27;t found one. What&#x27;s helped me, though, is asking whether or not the problems my team has is any different from most other teams. Sometimes it&#x27;s true, like when I was at an entertainment company working on asset management. Sometimes it isn&#x27;t, like when I was at the same company figuring out an AB testing solution.
评论 #25405123 未加载
talkingtab超过 4 年前
If you are talking core technology then I disagree. My example is Oauth. There are lots of libraries that make it easy to use Oauth, but then what you have learned is not Oauth, but some library and how to use it. Libraries can also add a layer of complexity because they are generalized. And finally, what if the service you buy and don&#x27;t build needs to be modified for some use case that is particular to your application? While I agree that all of these points should be considered in the general case, core technology for your business presents a very different set of considerations.
mirekrusin超过 4 年前
Nonsense without a context.<p>Sometimes &quot;building&quot; means writing 6 shell scripts (each &lt;10 LoC) and &quot;buying&quot; means getting CKA&#x2F;CKAD certificates for all people involved and spending half a year on training.
dmantis超过 4 年前
The very important point of today&#x27;s world - data protection - is not covered at all.<p>For customers, it&#x27;s better to give their data consciously to one provider within one chosen jurisdiction than moving personal data, documents, activity logs, etc within multiple 3rd parties, as well as to do due diligence on any web service they provide any data.<p>Please, respect your customers and don&#x27;t share their activity when it&#x27;s not necessary and cost just a few hundreds bucks per month.<p>Treating humans as &quot;units&quot; instead as people with rights is a big problem of IT businesses.
mchusma超过 4 年前
The answer here is not so simple as &quot;always buy&quot;. It depends heavily on context.<p>I think there are some things that do make little sense for anyone to build unless it&#x27;s super core. These tend to be low level, cheap developer tools that do a couple of things well.<p>Trying to &quot;buy and then integrate&quot; larger pieces of software is often more work. Lots of people &quot;buy&quot; because they don&#x27;t understand the problem. It&#x27;s a mental opting out. This leads to disjointed experiences internally and externally.<p>But it all depends on your situation.
api超过 4 年前
This is <i>usually</i> true except for two cases:<p>1 There is some other expense you can save significantly on by DIY. An example would be DIY k8s on bare metal via bare metal providers for a massively bandwidth intensive service where paying AWS or GCP outbound data rates would be thousands and thousands a month.<p>2 You are at sufficient scale that there is an economy of scale that can be accessed. This overlaps a bit with the first point but can also happen if you are just big enough. The first point is more about some special need.
blakesterz超过 4 年前
I think he&#x27;s right, if you&#x27;re at a small&#x2F;medium sized place, all the reasons he lists there are solid reasons to buy and not build things for yourself. That being said, there&#x27;s no reason to make that an absolute rule, I think it&#x27;s ok to build some things and buy some things. Just think of all the things we&#x27;ve ended up with because someplace built some thing and it ended up being some big thing that we all know. Isn&#x27;t that how Slack and Docker both got started?
wenbin超过 4 年前
Totally agree.<p>Some engineers love to say &quot;I can build this over a weekend&quot;. But the main cost is almost always on the maintenance side.<p>I forgot where I saw this number - in the entire lifecycle of a piece of software, (on average) maintenance cost is at least 8x of the initial dev cost.<p>Yes, buying a solution also costs time (and $$$) to integrate and maintain, e.g., using a 3rd party API - time to write code, time to set up monitoring &#x2F; alerting, error handling... There are always exceptions, edge cases, special situations...<p>But in general there are fewer and fewer things that a web company needs to build from scratch. It takes less engineering time to launch a web product than before, thanks to all those out of box solutions, e.g., SaaS, apis...<p>I like building a software&#x2F;web business today than 10 years ago :) One-person (or tiny team) web businesses will be very common (I&#x27;m running one [1]), and running an API business is not bad because it actually saves customers time &amp; money(vs building one in-house) [2] thus they are willing to pay a small fee (compared with hiring one or more full-time engineers).<p>[1] <a href="https:&#x2F;&#x2F;www.listennotes.com&#x2F;blog&#x2F;the-boring-technology-behind-a-one-person-23&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.listennotes.com&#x2F;blog&#x2F;the-boring-technology-behin...</a><p>[2] <a href="https:&#x2F;&#x2F;www.listennotes.com&#x2F;blog&#x2F;how-i-accidentally-built-a-podcast-api-business-46&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.listennotes.com&#x2F;blog&#x2F;how-i-accidentally-built-a-...</a>
评论 #25399807 未加载
leowoo91超过 4 年前
I have to disagree.. Not everyone has enough time to learn &quot;ready&quot; systems either, they can get pretty overwhelming. When I decide to build instead of buy, it&#x27;s mostly because I don&#x27;t believe in the design of the product that is favored by thousand people with reason being &quot;it just sounds cool&quot;.
评论 #25399921 未加载
XCSme超过 4 年前
I think the answer is somewhere in-between. I really like the idea of &quot;paid open-source&quot;, where someone creates a software product and you pay a small license fee to self-host it. This way you still have full control over the software, very low costs but the product is still externally maintained so you don&#x27;t have to worry about it breaking. The only thing you have to maintain are the servers, but with all the VPS and managed cloud platforms out there, running a server, backing it up or monitoring it is done in a few clicks.<p>The biggest selling points of such a distribution system should be:<p>1) It&#x27;s REALLY easy to set-up, no technical knowledge required.<p>2) It doesn&#x27;t require any type of maintenance (eg. can run perfectly at least one year without changing anything, this means that the software should allow for OTA updates).<p>3) It is a lot (10x) cheaper than a SaaS alternative.
PeterStuer超过 4 年前
&#x27;Buy&#x27; often is not available at the granular cost:benefit price-point that your specific application needs, especially in the startup and scale-up phase.<p>For the service provider there is a fairly fixed to linear base overhead so it does not make sense to make an special offering for the 1&#x2F;10th or less of functionality you might require at 1:10th of the price. It doesn&#x27;t make economic sense.<p>So for the small business it can mean they get away with a homegrown minimal service at a fraction of the cost, even though the &#x27;quality&#x27; of the produced for general applications might also just be a fraction of integrating the &#x27;off the shelf&#x27; offering.<p>I&#x27;ve seen some startups running in major deficits simply because they went all out on integrating external services the aggregated cost far outstripped the margin their market allowed for.
inshadows超过 4 年前
This is very often misinterpreted to mean that you should use exiting stuff even if it doesn&#x27;t fit your purpose. Obviously there need to be products that fit your purpose BUILT by someone for you to buy one. Several times I&#x27;ve been in a position where people around me pushed me into using something that remotely looked like it solves my problem. Since I was the one doing actual analysis and work, I knew I&#x27;d spend a lot of time digging through internals of said product to bend it for the use case. They also claim that they don&#x27;t believe that there&#x27;s not some existing software that exactly solves my problem and I&#x27;m creating something just for the sake of it. Let&#x27;s be honest, these people are full of crap thinking about software engineering only superfluously. There&#x27;s no silver bullet.
fuzzy2超过 4 年前
I&#x27;m a little confused. When I have to build software (for a client), it&#x27;s usually to support some business process or make it automated or whatever.<p>What am I supposed to buy, except some PDF&#x2F;Excel&#x2F;whatever library every now and then?<p>But maybe I&#x27;m just not the target audience for this article.
评论 #25400399 未加载
magicalhippo超过 4 年前
It&#x27;s all trade-offs. At work a customer could only send some data via mail, our integration could only accept via SFTP.<p>I had just had a look at Azure and had seen their Logic Apps, and quickly whipped up one which downloaded the mail and uploaded the files to SFTP. Nice.<p>Until a few months ago when it suddenly stopped working because for some reason Azure doesn&#x27;t like the key exchange algorithms Bitvise SSH server provides. Or at least, that&#x27;s as far as I&#x27;ve been able to determine. Zero logging on the Azure side so no clue what&#x27;s wrong.<p>After spending hours trying to figure out what went wrong, I made my own program that does the same. It took a bit longer than the Logic App, but at least I can fix it when it breaks...
bird_monster超过 4 年前
I work at a small startup. My boss comes from only enterprise level companies. My boss believes literally everything we touch has to be custom, and we have to make it. It&#x27;s an incredibly exhausting process of getting in front of and&#x2F;or retroactively nullifying any planning the company does based on his suggestions, because most of the time they&#x27;re quite harmful to our startup&#x27;s tech. I&#x27;ve gone to our CEO about it and he agreed that we have to curtail this behavior whenever we see it. It&#x27;s just an extra layer of &quot;stuff&quot; I have to think about.<p>No, we don&#x27;t need k8s, Kafka, a home rolled CDN, custom authentication, etc.
codebolt超过 4 年前
Completely disagree with this sentiment. I personally built a small program that scans our production environment for logs with errors and sends the team an email if something&#x27;s up. Spent two days writing the initial version, have only made a handful of small extensions since then. Been using it for years now, with no complaints from anyone. But countless problematic situations that were resolved before they could cause major havoc.<p>Would have probably spent a lot more time wrestling with a more general solution to make it fit our particular environment.
Ataraxy超过 4 年前
I tend to favor abstractions so that services can always remain agnostic. It&#x27;s one thing to buy, but it&#x27;s another matter to be locked into something. Especially if it&#x27;s core to your business.
zapataband1超过 4 年前
There are some good points in there, but it&#x27;s worth noting build&#x2F;deploying is becoming easier than ever. For a simple static site you could pay 300$ a website-builder-thing or you can build an app inside a docker container and your host will reboot it for you if it crashes. I use a docker-compose.yml file and I was able to quickly download an open source service that automatically renews my SSL cert. But yeah it depends on the scope, and the project, and what skills you have freely available or wouldn&#x27;t mind learning.
评论 #25400430 未加载
lumberjack24超过 4 年前
Another great read on the topic is from Calm&#x27;s CTO - <a href="https:&#x2F;&#x2F;lethain.com&#x2F;build-vs-buy" rel="nofollow">https:&#x2F;&#x2F;lethain.com&#x2F;build-vs-buy</a><p>Some interesting takes<p>1) There&#x27;s more to it than the &#x27;risk&#x27; factor, consider value &amp; costs!<p>2) Ask yourself &quot;What can I actually build right now?&quot; and be brutally honest before attempting any comparison (vs external tools)<p>3) Solutions that hinder your efforts to move any component outside their ecosystem are best avoided. These prove to be costly in the long run.
beshrkayali超过 4 年前
The article makes some good points, but the title is somewhat clickbaity and reductive. Blanket statements such as &quot;Buy don&#x27;t build&quot; are unlikely to be a good rule-of-thumb to follow imho.<p>However, at the end, a somewhat more sensible advice is presented:<p>&gt; I suggest that you prioritize buying to building, unless building will provide a real sustainable advantage for the business.<p>I generally only buy things to save time when I really don&#x27;t have it, and usually as a temporary solution. Buying isn&#x27;t an all-in or all-out solution. There are many levels at which you can decide to either buy or maintain the thing yourself. In a lot of average&#x2F;usual situations, reading how to properly setup the service rather than just buying it from x-as-a-service will provide valuable learning not just for the setup itself, but also for tooling used around it, which will make developers even happier and more productive. For example, I wouldn&#x27;t buy Redis&#x2F;Elasticsearch as a service if I can spare a couple of days to read how to set it up (and of course there are always exceptions). Care about security first, then efficiency. It will take time, but it&#x27;s not as difficult as it&#x27;s made to seem.<p>Quick example, a few years ago, I witnessed a company save more than 80% of their hosting cost by switching from Heroku to a simple EC2&#x2F;Ansible setup. They&#x27;re still buying, but there are levels. Also, it helps to know what are the actual requirements when you&#x27;re buying.<p>Thinking that buying everything as-a-service will save time is a misconception imo, as you&#x27;ll likely end up having to spend time reading the docs of whatever you&#x27;re buying. Decision changes will also cost more time because unless that service was using an open standard, you&#x27;ll likely end up having to change a few things.<p>There&#x27;s great value in learning open standards and how to automate setups. With that being said, no one can learn everything at once, so if the need is urgent and you&#x27;re short on time and have properly studied the financial model of the service, yes, buying is a good option.<p>Not related to this, but I&#x27;ve been having a lot of fun messing around with Nomnad. I&#x27;ve also learned some very interesting things about how docker networking work because of it.
mjgs超过 4 年前
Great article and some really interesting comments in this thread.<p>I wrote a piece just a few days ago talking about the same topic, although it was aimed at earlier stage developers, so there is less detail, but the overall message is similar:<p>Deciding when to build a custom solution in web development<p><a href="https:&#x2F;&#x2F;blog.markjgsmith.com&#x2F;2020&#x2F;12&#x2F;11&#x2F;deciding-when-to-build-a-custom-solution-in-web-development.html" rel="nofollow">https:&#x2F;&#x2F;blog.markjgsmith.com&#x2F;2020&#x2F;12&#x2F;11&#x2F;deciding-when-to-bui...</a>
burnte超过 4 年前
Meh. In 2007 I wrote a webapp for a friend to help him manage his business. It&#x27;s in PHP and other than a few fixes here and there, it&#x27;s running just fine in 2020.
philjohn超过 4 年前
Also worth noting that &quot;buy&quot; in this context can also mean using a piece of open-source software, not just buying something commercial.
z3t4超过 4 年前
I think there is a balance in the &quot;Yak Shaving&quot; business... There is a swaying &quot;the best code is the code you did not write&quot;.
rmason超过 4 年前
Like all things challenge absolutes. I agree you shouldn&#x27;t always build, otherwise you&#x27;d build your own office suite!<p>But do you know how many times engineers started to build something and made a discovery that resulted in inventing something significant. Or created something that gave their company a significant advantage. A not small number of times.
ideamotor超过 4 年前
Talk Don’t Do<p>So much effort is spent on hypotheticals. If you think about a problem for too long, it will seem like a worse problem than it is.
hootbootscoot超过 4 年前
Mmmm probably depends upon what <i>it</i> is. Core competencies of your business? Probably not the best thing to use an external service for. (Assuming your core competency is not cloud computing &amp; storage) Your core will need to constantly be extended, honed, refined, redefined, poked at, prodded etc...
jokethrowaway超过 4 年前
This implies that employees actually have more valuable stuff to work on or that the leadership in the company know what&#x27;s valuable, which is not always the case.<p>Given the limited number of projects creating values, it&#x27;s often a choice of working on the next failed project or saving the company 100 grand.
ummonk超过 4 年前
The problem happens when Ops software tends to be GUI-based and overly complex, and you just want some programmatic &#x2F; command line tool you can properly integrate into your software &#x2F; processes.<p>It&#x27;s often simpler to take open source software and adapt it to your needs than to buy commercial software.
Silhouette超过 4 年前
The longer I run small businesses, the more sceptical I become of this sentiment. I wrote a cathartic rant here at first, about all the different ways external services have let down my businesses over a period of many years and how often our in-house systems have been the only thing that kept us going in those situations. But instead of letting rip and naming names in rather undignified fashion, I have decided to settle for just posting the conclusion.<p>I <i>want</i> to agree with the principle that you build what is essential to your business and you buy in the rest. As both an entrepreneur and a developer, I <i>want</i> to focus on the unique, value-adding parts of whatever my business is doing. I <i>want</i> to let someone else handle the mechanical stuff and the formalities, and I have no problem with paying a fair price for that.<p>But that whole argument is predicated on the idea that outsourcing will get an overall better result than building in-house, so that in some way it saves time and&#x2F;or money that you can better invest elsewhere. So many services we&#x27;ve used have changed or discontinued functionality and forced us to relearn or reintegrate just to avoid going backwards, so many services we&#x27;ve used have pushed their prices up in real terms while adding little of extra value to us, so many services only ever reach 75% of what we&#x27;d like from them and the missing 25% of functionality hurts more and more, so many services we&#x27;ve used <i>just don&#x27;t work</i> so often that you wonder how they manage to stay in business at all, that I now find it hard to trust or expect good results from any external service at all.<p>Sometimes you have no choice about outsourcing. No small business has the resources to do some things, particularly in heavily regulated areas like payments and tax, or in large-scale infrastructure like operating a data centre, unless that is part of the purpose of the business. So you choose the least of evils and hope for the best.<p>But today, as someone just starting to set up another business, I am looking for services that handle <i>everything</i> in a particular area where for practical reasons we can&#x27;t do it in-house. I want to specify what we need, and have it done and the results delivered. I don&#x27;t want to care about anything in between. I don&#x27;t want to be distracted by any related legal and regulatory compliance matters. I just want the job done, properly and legally, for a reasonable price. I have little interest in working with anyone offering less than that, unless I have absolutely no choice.<p>Maybe this means I actually do agree with the original principle after all, and I&#x27;ve just learned from experience that an extreme interpretation of it is the way to go.
papito超过 4 年前
The most egregious cases of violating this involve trying to create your own CMSs, search engines, and God forbid - databases. There are of course, exceptions. AirTable wrote their OWN database engine, but they knew what they were getting into, and they did it right.
评论 #25409638 未加载
figers超过 4 年前
A huge customer went with our custom build software because we controlled everything, all built in house, we could integrate with them exactly how they wanted vs a competitor who bought their technology platform and couldn&#x27;t control the changes asked for...
recursivedoubts超过 4 年前
Every build v. buy decision should ask: &quot;Is this a place where we want to bet on our ability to derive competitive advantage.&quot;<p>If the answer is no, lean towards buy. If the answer is yes, lean towards build.<p>For ops, netflix would say &quot;yes&quot; whereas most companies would say no.
nitwit005超过 4 年前
This misses the rather obvious issue of price. Building your own software is the cheaper option some of the time.<p>This is particularly true when you have to pay to add some missing feature you need. They will, naturally, try to ask for as much as possible to get what you want.
bdcravens超过 4 年前
The hardest part of learning to not look through your developer eyes. Often the 80% solution is &quot;good enough&quot; for your customers or your stake holders, and they&#x27;d never appreciate the extra 20% a fully custom solution provides.
woleium超过 4 年前
A lot of the maintenance issues change with low code solutions, as do a bunch of other assumptions made in the article. We will be seeing a lot more low code developed without rigor by end user teams in coming years.
blindm超过 4 年前
Some people take lifetimes, even multiple reincarnations to come to the conclusion that they are buyers, not sellers. Some people are born marketers and are very good at persuasion, hyperbole, and other tools to sell a product&#x2F;service.<p>Others are natural consumers: they develop tastes and grow to be rabid shoppers. It&#x27;s good to sit in the middle of these two opposites, but often better to decide which extreme you want.<p>I know I&#x27;ve made the decision too late in life, when I wasted a vast portion of it trying to sell some product&#x2F;service&#x2F;idea when really I just wanted the latest Porsche!
评论 #25400746 未加载
say_it_as_it_is超过 4 年前
And then the day comes when you&#x27;ve been laid off and your lack of product development expertise keeps you from a world of opportunity.
jvanderbot超过 4 年前
Build the secret sauce, buy the packets.
didip超过 4 年前
I agree.<p>If you are in decision making position, I struggle to see why would you want to spend so much energy installing Prometheus + Grafana stack instead of just using DataDog.<p>Even worse if your company attempts to build Prometheus&#x2F;Grafana from scratch. Just why? What a huge waste of money.<p>If it contributes to your core business then ok, I can see why you may want to build custom solutions.
评论 #25399738 未加载
评论 #25399678 未加载
评论 #25399617 未加载
评论 #25399586 未加载
marsdepinski超过 4 年前
If you know what you&#x27;re doing building and running yourself is usually a good path
dilyevsky超过 4 年前
Buy if you want to save money, build if you need it to work.
bobbydreamer超过 4 年前
This blog has only one article
doonesbury超过 4 年前
Interesting read. Coincidentally this is a current conversation at our office (10K+ FTEs): use&#x2F;extend open-source or develop institutional proficiency at aspects of distributed computing?<p>Ours is the usual case: we have homegrown brokered message queues plus Kafka and 21 more. We have homegrown single-master replicated DB, but also use DB2, Oracle, Postgres, MySql. We have private in-core caches with speciality code to knit together data and also use Memcache, Redis. Some of that code is installed from DPKGs; some if it slightly edited code and installed as service so internal users aren&#x27;t bothered with the icky-details.<p>We have the Jekyll &amp; Hyde behavior mentioned in OP&#x27;s write-up and from commenters: on stuff considered core to the company and clients for a sufficiently complex system, we&#x27;re not going to rely on 3rd party trouble ticketing systems and support. It&#x27;s in-house. But that resolve falls away in stages and never lasts. We also have people who strongly push the business practical side: we&#x27;re not here to write Azure or Kafka. We&#x27;re here to make business apps. Get focused, and get client focused. That comes with an interesting blend of boredom and brand awareness gone wrong: I looked around &amp; I saw or heard people in Dept X are working on caching solutions so ... what&#x27;d be the point of you doing it?<p>Now, here&#x27;s the interesting question: suppose we needed a distributed ledger (without blockchain) or we needed 2PC for some homegrown caching. Now what? Do we write that in-house as a reusable components? Dig it out of PG or MySql code if they have it and we know were to look? Suppose we make a business case to upgrade a cluster to kernel bypass NICs. Should we go into Redis and self-modify the code to support that I&#x2F;O path? No? Frankly, what then is the purpose of a CS guy&#x2F;gal with a MS in distributed computing otherwise?<p>My own perspective on this:<p>- The first 1&#x2F;3rd of this back and forth is the proxy conversation that flies above reality which is more about risk management and perception of failure i.e. company reputation &amp; gossip mongering.<p>- The second 1&#x2F;3rd of this is what people talk about because we can&#x27;t talk about the underlying CS concepts. Most company employees usually have no ability to formally describe, or otherwise even sketch 2PC giving pseudo-code for it on a whiteboard. Or take this another way: see if you can get your lead on your homegrown replicated DB to explain how it works and why it works like we&#x27;d see in a senior level CS class: clear, specific, and yet abstract enough not be talking about superfluous implementation details. Can the audience understand it?<p>- Insufficient grounding in customer needs so one can better determine what clients really need, and what&#x27;s lacking in the current offerings. Failure here will send you on goose chases to no where.<p>Gedanken experiment: you and I start a new software company broadly in distributed ledgers, caches. We are able to get 25% of MS&#x27; distributed computing leads --- not all --- but none of these guys and gals are slouches. What now? Do we write it in house or expand and extend some IBM offering? The the difference is we have talent, and there&#x27;s some reason to believe they can deal with a distributed system&#x27;s worth of risk.<p>To end this with humor, here&#x27;s a nice analogy I once heard: On a Saturday, mom and dad were sick of the noise of their three kids. And the house was a mess. So they send them outdoors to work their energy off. At sunset the house is clean, and they&#x27;re sitting on the porch watching the sun go down over some wine. They see the kids coming back: they are filthy dirty. They see work: all 3 kids needs baths. The clothes have to be washed. And they&#x27;ll probably destroy the bathrooms they just cleaned. So the father looks at the mother and says: As I see it, we could clean these kids up or make a new one. Not sure if making a new one is wisdom, but it&#x27;s a hell of a lot more fun.
dave_sid超过 4 年前
Nah
tus88超过 4 年前
&gt; It’s usually a major mistake, that ends up costing a ton of time and money<p>LOL this is hilarious. Because outsourcing to consulting firms (cough IBM cough) has never resulted in blow-outs and poor delivery.<p>Buying almost always means being trapped in a snake-oil contract that requires ongoing consulting costs that quickly outweight the costs of the actual software.<p>&gt; This can be avoided by making sure that the key differentiators for your business are in-house.<p>Oh....so you are saying we <i>should</i> build now?<p>Blogpsam.