[HN Gopher] Buy Don't Build ___________________________________________________________________ Buy Don't Build Author : jrott Score : 131 points Date : 2020-12-12 16:22 UTC (6 hours ago) (HTM) web link (jrott.com) (TXT) w3m dump (jrott.com) | blargmaster42_8 wrote: | This an ad | tus88 wrote: | > It's usually a major mistake, that ends up costing a ton of | time and money | | LOL this is hilarious. Because outsourcing to consulting firms | (cough IBM cough) has never resulted in blow-outs and poor | delivery. | | 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. | | > This can be avoided by making sure that the key differentiators | for your business are in-house. | | Oh....so you are saying we _should_ build now? | | Blogpsam. | phsource wrote: | I'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: | | > 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. | | The author then disparages spreadsheets as becoming the exclusive | domain of one employee who wouldn't want processes to change. | | 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're pretty universally understood, so the | barrier to change is pretty low. | jrott wrote: | Author here I actually think spreadsheets are great because | they are so accessible. What isn't great though is when there | is a business processs that is a spreadsheet and knowledge that | exists in one persons head. | holri wrote: | It is a management failure when this is in only one person | head. Outsourcing tools will not solve internal management | problems. | rantwasp wrote: | i don't think it's the spreadsheet itself. it's about the | process and people who defend the process no matter what | systemvoltage wrote: | > their close cousins (Airtable, Notion) great as well! | | Their close cousins are locked, proprietary, slow, bloated, | exceedingly complex, poorly designed (ui/ux), emojized, vc- | backed feature extravaganza and have a subscription fee. | | Experts of Excel use keyboard exclusively, their keystrokes are | a melody of efficiency, expressivity and productivity that is | continued to be mocked in similar fashion as the 2007-era Mac | vs. PC advertisements. | cma wrote: | Excel has a subscription fee as well. | systemvoltage wrote: | Yeah unfortunately. We still have a 2016 Excel license and | will continue to use it. | smnrchrds wrote: | You can buy the 2019 version as well. So far, Microsoft | has given their customers the choice between one-time | purchase and subscription. | | https://www.microsoft.com/en-us/microsoft-365/p/office- | home-... | tenaciousDaniel wrote: | I found Notion to be fairly simple to get started. Whereas | when I opened Airtable my head exploded and I closed it | immediately and haven't revisited it since. | systemvoltage wrote: | I agree. Notion is a lot easier to get started on. I also | should mention that Notion/Airtable vs. Excel are somewhat | different types of swissarmy knives to be used in different | environments. One is used in the battlefield and space | exploration, the other one in a children's playground. | Jokes aside, Notion has some nice features like Wiki and it | wears too many hats like a joker in a circus. I love the | fact that I can write a recipe with tables and markdown -> | publish it to the internet to be consumed. Can't do that | with Excel. | serial_dev wrote: | And it's also important to keep in mind that if your team is | using various external tools, there is a high chance that only | a couple of people will actually know how those tools work and | even less of them will be able or happy to use those external | tools. | crave_ wrote: | It's also a strawman argument. | | The alternative could instead be a system with open standards | that many vendors implement, and _only relying on standardized | behavior_. | | This works to some extent with for example SQL or C, where you | can migrate from one DB or compiler to another with limited | effort. | cortesoft wrote: | All of this is true, but sometimes people forget that buying a | solution doesn'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. | pjc50 wrote: | Ah yes, this is how SAP and Oracle make their money: you "buy" | a "COTS" solution, and then spend ten times as much having them | build something for you .. which in the end you don't own. | blackoil wrote: | That is why likes of Office 365 are popular, each component | individually may not be best, but you get dozens of apps that | are active in one go, for most parts are integrated well and | have a simple billing. | mauriziocalo wrote: | +1. And I'd add to that that sometimes there's significant work | in the _pre-buy_ phase as well: | | - Researching what your options are / what's already out there. | | - Comparing different alternatives. | | - "Hopping on a call" with a sales rep to get a product demo | (there's this super annoying trend where many SaaS companies' | landing pages don't explain what they do and the only option | they give is to "schedule a demo"). | | For CRUD-like internal tools or simple 3rd party integrations, | my experience has been that it's often much faster (typically < | 1 hour) to build a production-ready app on Retool | (https://retool.com) than it is to even get started with SaaS | vendors. | Scarbutt wrote: | Many in the "serverless" all crowd are blind to this. | victor9000 wrote: | While I agree with this comment, if someone buys and ends up in | the position you describe then they did a poor job at buying. | dnautics wrote: | there may be no options. For example, I (profitably) ran a | small cloud. My supervisor kept questioning me "why don't we | just use openstack instead of your software"? The answer is | even in this article! | | > Most enterprise systems require an engineering team to keep | them running. | | If we wanted a team of 3+ to run the cloud then we could buy | openstack, or cloudstack, probably 2+, but that's also | without pushing features. And suddenly we wouldn't be | profitable anymore. I left, so I guess they will find out. | aeternum wrote: | Nowadays you're often buying SaaS so not only do you need to | ensure the product is a fit currently but you must predict | the fit going into the future. | | It's not an easy thing to do. I've found that open source | libraries are often more stable, require less ongoing | maintenance due to API changes and have better support | lifetimes compared to the SaaS equivalent. | jeromenerf wrote: | Not always a poor job, but sometimes a bet that turns out | wrong. I have seen great products and companies disappear in | unforeseen mergers or API prices skyrocketing for instance. | | Risk is low for commodities, but high for anything | "disruptive". | JMTQp8lwXL wrote: | The people that have to perform the technical integration | between two independently developed products (and could warn | that the integration work is more involved than starting from | scratch) are a different group from who decides the | acquisition is happening. | q3k wrote: | That's very true. Especially for tooling/products/services that | sells themselves as shrinkwrapped products that only allow for | a particular flow - sometimes reimplementing your own subset | from scratch that's geared towards your usecase is less effort | in the long run than hacking around a blackbox solution. | | I'd much rather occasionally work on feature for a well- | engineered internal reimplementation than constantly fight with | shellscripts wrapping around a solution with a huge impedance | mismatch. | themodelplumber wrote: | Exactly. I've even had this happen with things like CSS, where | a master stylesheet changes somewhere upstream on another | server, and hundreds of hours of my own custom, vendor- | supported modifications now make my web application or website | look like doo-doo. | | Plus maybe I'm weird but I think it's enough to love the energy | you can get from building something. It's fun. And considerable | portions of work should be fun. Especially if you work for | yourself, where building stuff for money, for other people, | often isn't enough without a strong connection between the | work, customer, and the subject's own interests and values | system. | | (IMO a lot of those kinds of projects also build on the edge of | one's core expertise, extending it outwards, almost like a | recon mission, so it's less of a binary yes/no core expertise | condition.) | lexicality wrote: | My job involves a lot of integration work so I'm probably | biased, but I find successfully cracking open a poorly | documented API and extracting all the data in a usable way to | be deeply satisfying, especially if you can be confident | enough in your edge cases that you think it'll run until the | next unannounced and undocumented change comes along. | yawnxyz wrote: | or in Notion's case, a complete lack of documentation... | marmaduke wrote: | > I think it's enough to love the energy you can get from | building something | | I think this is good if you can get there. The IKEA of | software is pure dopamine. If had to grow and saw those trees | less so. If you are pouring concrete and get it delivered, | pure dopamine. If you have to crush the aggregate by hand, | less so. | NoOneNew wrote: | True. At that, one thing about the buying vs building argument | that's missing is picking and choosing your battles. | Competitive advantage comes from that. Build what you are | capable of producing effectively based on your environment. | Obviously you can run into roadblocks, but part of being an | adult is planning and adjusting based on your circumstances and | needs, not along someone else's. Too many of these arguments | fall into the realm of, "Everyone, listen up! I have the single | solution for everyone's problem for all of eternity!" | gentleman11 wrote: | In unreal and unity, most of the third party code I've tried to | use ended up unusable because of either bugs, performance | issues, or limitations. There are great exceptions but it's | been frustrating overall. The ones that do work, well, the | documentation is often terrible and it takes longer to learn | and integrate than it would to make your own. Finally, unity | has a history of retroactively changing their terms of service | to squeeze more money out of you for asset store buys, so it's | scary to trust them. I write a lot more of my own systems now. | CyberDildonics wrote: | Unity also changes their APIs around with every tiny version | increment, meaning that any app store package has to be | constantly on top of installing new versions of unity and | updating all the little parts that break every week. | gfxgirl wrote: | unity (and maybe unreal) have a real problem in that the | majority of users are hobbyists, students, and new | programmers. None of them are really willing to pay much for | 3rd party code and they need $$$$$$$$$$$$$ of support because | they are new. | | For example make a JSON serialization library and you'll be | asked "how do I spawn enemies from JSON" which is arguably | entirely orthogonal to your library but don't answer and get | downvoted for bad support. Do answer and you'll just be asked | more questions about how to adapt your example to their | personal project and you'll have to teach them programming in | the process. | | These incentives make it almost impossible to make money | selling 3rd party code (plugins/add-ons). If you charge what | it should really cost given the amount of work put in the | market won't bare it. If you charge what the market will bare | you'll go broke. | | Maybe Unity should split the market into "Pro" and "Hobbyist" | and the Pro market would have prices more inline with what it | actually costs. Check out the prices of libraries like | Radgametools.com (you'll have to google the prices) for | comparison. | pc86 wrote: | We recently purchased an enterprise scheduling software that I | will not name (you may have heard of it, but it's unlikely). | Told numerous times throughout the sales cycle by their | architects and engineers that their API could do all the things | we needed "easily" and that they could finish off the last few | features we needed within 2-3 minor releases. | | Fast forward almost a year, at least 7 releases, and probably | $200k of payroll on our end and their product barely runs, and | doesn't handle all of our standard workflow, let alone edge | cases. Best we can assume is they were writing the API from | scratch because we needed it and didn't have the skill to do | so. Documentation was offensively bad when it was correct, | which most of the time it was not, to the point where there | were several instances of the endpoints in the docs being | wrong, causing us to call support to ask what the real | endpoints were we were supposed to be calling. | | All this to say yeah, buying is great if the company is | professional and has a well-documented product, and the sales | and technical pre-sales folks know what they're talking about. | But that isn't necessarily the case, even for six-figure | purchases. And when it's not the case you can easily burn a | non-trivial amount of money before you ever realize it. | corytheboyd wrote: | I have been in the boat of the company that ripped you off | before. Sales will promise the world, product/engineering | caves "just one last time" to help win the deal with the | easiest shittiest thing. Years go by and things inexplicably | break all the time. | | It's such an easy trap to fall into, because I hear similar | stories all the time. | | I guess the moral of the story is to assume sales is lying to | you until proven otherwise? Haha not sure, just do as much | research as you can but you'll probably get burned anyway | from time to time | ethbr0 wrote: | Why don't more companies mandate that their engineers talk | to the company's engineers, alone, in an unrecorded room, | before agreeing to buy? | | I mean... talking to people with every incentive in the | world to stretch the truth and/or little technical acumen | doesn't sound like a recipe for success. | JoeAltmaier wrote: | You get in a room with Intel, you have to sign a waiver | that gives Intel total property over everything discussed | in that room. Even your own products, if you happen to | mention something about them. No sensible company will | let their Engineers in an Intel conference room, if they | have any sense. | ethbr0 wrote: | Granted! But it seems less of a case in the SaaS B2B | horror stories that come up frequently. | | I'm assuming Salesforce (e.g.) isn't going to suddenly | pivot into Lyft-for-dogs, or whatever the product is. | pixl97 wrote: | Because vendor companies have figured out you wine and | dine the C level and pretend that engineers didn't exist. | | I'm pretty sure my company wouldn't put me on the front | lines during sales for reasons like this | | Customer "How are you at X and Y" | | Me "Oh, our X is really good, on the other hand our Y is | utter shite" | | Sales rep next to me: _evaporates_ | ethbr0 wrote: | Isn't that a win for everyone except the sales rep | though? | | If the deal closes, Z% of the company ends up being tied | up in trying to kludge Y into doing what was sold, | spiking engineer burnout and lowering morale, and | furthering a negative relationship with sales. | | Plus you've now pissed off your new customer, by lying to | them. | rendall wrote: | Alas. Then the company doesn't get the contract, while | the next company who lied, with a bright white smile, | does. | corytheboyd wrote: | I've been on calls almost like this. What you get are | solutions/sales engineers accompanied by sales. They're | all generally helpful, including the engineer to engineer | conversations. I've even been in a position where a | representative of a vendor worked directly with us for | months, yet the same issues kept coming up ultimately | leading to the project being scrapped. It's a weird world | where everyone is trying to sell something to everyone, I | really don't like it | jrochkind1 wrote: | Good article, I am definitely filing away to pull out in some | future team discussions. | | This paragraph is confusing me, either it's missing a 'not' or | something, or I'm just confused. Is anyone following? | | > 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. | | 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 | 'instead of's in there and i'm not sure they are all meant how | they are said. | | I think developing actual customer-facing features is the goal, | but here it sounds like the thing you would like to avoid... and | I'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 (?). | jrott wrote: | Yeah developing actual customer facing features is the goal. | That paragraph needs to be edited | [deleted] | Silhouette wrote: | 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. | | I _want_ 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 _want_ to focus on the unique, | value-adding parts of whatever my business is doing. I _want_ to | let someone else handle the mechanical stuff and the formalities, | and I have no problem with paying a fair price for that. | | 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/or money that you | can better invest elsewhere. So many services we've used have | changed or discontinued functionality and forced us to relearn or | reintegrate just to avoid going backwards, so many services we'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'd like from them and the missing 25% of functionality | hurts more and more, so many services we've used _just don 't | work_ 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. | | 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. | | But today, as someone just starting to set up another business, I | am looking for services that handle _everything_ in a particular | area where for practical reasons we can 't do it in-house. I want | to specify what we need, and have it done and the results | delivered. I don't want to care about anything in between. I | don'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. | | Maybe this means I actually do agree with the original principle | after all, and I've just learned from experience that an extreme | interpretation of it is the way to go. | CapitalistCartr wrote: | Building anything is step 5 of a good process, not step one. | Whether you buy or build is far secondary. | | First, check the motivations. Emotional or logical. If the | driving motive(s) is ego, that's already a big, red flag. | Consider running like a bull in reverse. | | Second,intel. Gather information about the situation; educate | yourself. Find the apples on the road. | | 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't matter. All that matters is each stakeholder | signs & dates it. | | Fourth, plan. Use your knowlege gained in step two to formulate a | plan for getting from the current situation to the "vision". | | Fifth, execute said plan. Find more road apples. | | Sixth, debrief. Analyze the outcome. Get a drink with the ones | who did the work. | | 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. | rq1 wrote: | Sorry but no. | | It's cost dependent and you should carefully study both options. | | It's part of the engineering: study fixed and variable costs. | | Outsourcing is cost effective when the market is mature enough. | | You should maybe not rebuild cloudflare's core services to | operate a website. | | Depending on your scale, you certainly should build your own ML | stack for instance. | burnte wrote: | Meh. In 2007 I wrote a webapp for a friend to help him manage his | business. It's in PHP and other than a few fixes here and there, | it's running just fine in 2020. | say_it_as_it_is wrote: | And then the day comes when you've been laid off and your lack of | product development expertise keeps you from a world of | opportunity. | mlthoughts2018 wrote: | I think all four points in the article are deeply wrong. | | 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. | | 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. | | 4. Vendor lock-in is a critical problem. If you choose GCP vs | AWS, you are defining _culture_ and you are defining | experimentation and exploration that you _cannot_ do. You're | essentially cleaving away many future possibilities from _even | being testable_. 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 _they_ 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. | blakesterz wrote: | I think he's right, if you're at a small/medium sized place, all | the reasons he lists there are solid reasons to buy and not build | things for yourself. That being said, there's no reason to make | that an absolute rule, I think it's ok to build some things and | buy some things. Just think of all the things we've ended up with | because someplace built some thing and it ended up being some big | thing that we all know. Isn't that how Slack and Docker both got | started? | libria wrote: | > The desire to build custom versions of everything seems to come | from a few places: 1 [...] 2 [...] 3 [...] 4 | | There are personal reasons as well: | | 5. Innate curiosity and excitement about technology | | 6a. Get experience | | 6b. Resume talking point | | Many of us picked a career in IT because just like building | things out of Legos is fun, building a streamlined full CI/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's convenient to do it on | company time. | | I'm not justifying putting your interests ahead of your | company's, but understand that's what some of us do. I'd say #5 | and #6 are often stronger drivers for decisions than #1-4. | simonw wrote: | 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. | | 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. | | This can set up a weird incentive. If you are already close to | the limit of your plan, you'll find that engineers are | discouraged from logging new things. | | This can have a subtle effect on your culture. Engineers who | don'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. | | Tools that charge per-head have a similar problem: if your | analytics tool charges per head, your junior engineers won't have | access to this. This means you won't build a culture where | engineers use analytics to help make decisions. | | This is a very tricky dynamic. On the one hand it'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! | | 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. | | I don't have a solution to this. It's just something I've | encountered that makes the "build v.s. buy" decision a lot more | subtle than it can first appear. | gshulegaard wrote: | I love this comment because it articulates a dynamic that I | think is often overlooked much better than I could. I might | even go a step farther and suggest that anything that is core | to your business flywheel should be built and not bought (in | general). | | Mostly because you don't want pricing to act as a disincentive | to exercising the flywheel. | telesilla wrote: | We've often gone down the route of 'modify an open source | project' for this reason. For the price of a developer, we get | the product in perpetuity and don't have these exact | limitations you specified of headcount or worrying about usage. | For almost everything out there, you can find a version of it | that's been made available with source code. Granted, unless | you are essentially a software company this is probably | difficult to maintain, given the additional level of expertise | required. | | Another option we've found works is buy, to just get started, | and invest moving forward in our own project. Getting something | off the ground quickly tends to help us understand better the | requirements. | WrtCdEvrydy wrote: | Honestly, I'm fan of the open source self hosted (especially | if only some of the enterprise features are paid). We set it | up, configure it, evaluate it and buy the enterprise license | (it's usually a per-box license). | tixocloud wrote: | Very interesting perspective. Ran into the same issues where | Salesforce was charging us by the number of columns we had that | ended up forcing the team to overload a column with a JSON | object so we could get it to work without overpaying. | Integration and maintenance turned out it be a downright | nightmare. Would be interested to hear various pricing models | to understand the pros/cons for each especially in the | logging/analytics space. Does per storage, per event, per user | make sense in certain cases? | nitrogen wrote: | For things that are directly generating revenue, it makes | sense to have per-X pricing because it aligns your vendors' | interests with your own. In that case, you want to | incentivize the vendor to maximize your usage, because that | usage is making you money. | [deleted] | [deleted] | mchusma wrote: | The answer here is not so simple as "always buy". It depends | heavily on context. | | I think there are some things that do make little sense for | anyone to build unless it's super core. These tend to be low | level, cheap developer tools that do a couple of things well. | | Trying to "buy and then integrate" larger pieces of software is | often more work. Lots of people "buy" because they don't | understand the problem. It's a mental opting out. This leads to | disjointed experiences internally and externally. | | But it all depends on your situation. | whoisjuan wrote: | I own a Screenshot API service (shameless plug: | https://getscreenshot.rasterwise.com/) and this exactly the | argument that I make for small utilitarian services like mine. | You shouldn't build them because buying them is several orders of | magnitude cheaper. | | I have a small paragraph from a blog post where I explain this | with some math that is probably crappy but captures the idea: | | _" When you spend time in areas that are not the core of your | product, you're actually being financially inefficient. Taking | screenshots is likely not a core task of your business so it | doesn't makes much sense to waste development resources in this | area. | | Here is a brief example of how inefficient it gets: | | A mid-level developer in a small market earns $90K USD per year, | working 40 hours per week. His/her effective hourly rate is $47 | USD per hour. | | 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's likely going to be a | large amount of time spent in optimizing, securing, provisioning, | testing, etc. | | 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. | | Other un-accounted areas of development time are: documentation, | training and maintenance. | | 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. | | 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't include the cost of | the infrastructure you're paying to run it."_ | | 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's a drain in engineering resources | when you try to maintain it in the long run. | [deleted] | ianmcgowan wrote: | As an aside, love your Lincoln, Hamilton, Jackson pricing plan, | super creative! | whoisjuan wrote: | Thanks! I wanted to do something creative with the pricing. | :) | ummonk wrote: | I think the screenshot service is a perfect example of a | service suited for buy don't build - it's something complex to | implement but with a really simple API to integrate with. | mewpmewp2 wrote: | That's cool. How much money do you make with that service? | whoisjuan wrote: | About $500 USD/month. Haven't put too much effort to promote | it though. | monadic3 wrote: | This doesn'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. | zmmmmm wrote: | It'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 _everything_ most of that would not exist. | | So there's a paradox I see which is akin to the credit system | where only people who don't need credit are offered it: you can | only "afford" to buy instead of build when you _have the | engineering competence to build_ - that 's when you can | intelligently choose not to. | | On the other hand, if you lack the internal competence to build | and for that reason choose to buy? That's when all the bad things | happen. You're going to get screwed by your vendor - they are | going to know you aren't technically capable of supporting | yourself, they will give you stupid timelines, blown out costs, | unreasonable constraints ("it has to have a 16 core, 256GB RAM | server or we won't support it") etc etc. You _will_ end up with | the worst case of vendor lockin and a system everybody hates. | | 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. | figers wrote: | 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't control the changes asked | for... | bird_monster wrote: | 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's an incredibly | exhausting process of getting in front of and/or retroactively | nullifying any planning the company does based on his | suggestions, because most of the time they're quite harmful to | our startup's tech. I've gone to our CEO about it and he agreed | that we have to curtail this behavior whenever we see it. It's | just an extra layer of "stuff" I have to think about. | | No, we don't need k8s, Kafka, a home rolled CDN, custom | authentication, etc. | bobbydreamer wrote: | This blog has only one article | rachelbythebay wrote: | It's not buy vs. build. It's _rent_ vs. build. | | Unless you are actually purchasing whatever it is you're using... | and I'm guessing they aren't doing that. | doonesbury wrote: | Interesting read. Coincidentally this is a current conversation | at our office (10K+ FTEs): use/extend open-source or develop | institutional proficiency at aspects of distributed computing? | | 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't bothered with the icky-details. | | We have the Jekyll & Hyde behavior mentioned in OP's write-up and | from commenters: on stuff considered core to the company and | clients for a sufficiently complex system, we're not going to | rely on 3rd party trouble ticketing systems and support. It'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're not here to write Azure or Kafka. We'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 & I saw or heard people in Dept X are | working on caching solutions so ... what'd be the point of you | doing it? | | Now, here'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/O path? No? Frankly, | what then is the purpose of a CS guy/gal with a MS in distributed | computing otherwise? | | My own perspective on this: | | - The first 1/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 & | gossip mongering. | | - The second 1/3rd of this is what people talk about because we | can'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'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? | | - Insufficient grounding in customer needs so one can better | determine what clients really need, and what's lacking in the | current offerings. Failure here will send you on goose chases to | no where. | | Gedanken experiment: you and I start a new software company | broadly in distributed ledgers, caches. We are able to get 25% of | MS' 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's some reason to believe they can deal | with a distributed system's worth of risk. | | To end this with humor, here'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'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'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's a hell of a lot more fun. | lawwantsin17 wrote: | More nonsense for non-tech founders posing as nonsense for tech | founders. All of these points leave out developer happiness and | buying just does equal good knowledge. It equals Googling around | a black box. | jvanderbot wrote: | Build the secret sauce, buy the packets. | philjohn wrote: | Also worth noting that "buy" in this context can also mean using | a piece of open-source software, not just buying something | commercial. | [deleted] | zapataband1 wrote: | There are some good points in there, but it's worth noting | build/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't | mind learning. | zapataband1 wrote: | good real-life example i just ran into: i host my own website, | and now I want to run a newsletter/email campaign. I don't | desire doing this work and it's cheeeaapp/free from certain | services that guarantee high delivery. | temporallobe wrote: | 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/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. | lexicality wrote: | One of the few things I appreciate from my abusive first boss was | making me acutely aware of the value of my own time. | | 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. | | Admittedly he was pathologic about this to the point of having us | create a timer that counted in pounds sterling that he'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) | FpUser wrote: | I think you had great boss (assuming he did not start timer | each time you stopped typing on keyboard). Those endless | meetings become unproductive pretty fast. I suspect that in big | part they become a self sustained cancer used to justify time | and salaries of unproductive company members. | | As for the subject itself: frankly I do not see any advantage | of hosting on say Azure over hosting myself. Either requires a | good deal of maintenance. And no you can not really rely on | Azure doing it for you. | | Uptime for me is probably just as good on my servers as each | one I have in my office also has ready to use up to date shadow | copy located elsewhere. Azure is way more expensive of course. | | The amount of hardware/processing power I have on my own server | would cost me a fortune to have on Azure. Scalability does not | matter much either because: | | _I am not Google and do not have to serve the rest of the | world_. | | On top of that my servers are usually high performance native | C++ applications that can handle thousands of requests per | second sustainably and without breaking a sweat. | | Vertical scalability with modern CPUs and multilevel storage is | absolutely insane. | lexicality wrote: | > frankly I do not see any advantage of hosting on say Azure | over hosting myself. | | In my opinion, cloud hosting only makes sense if your systems | are architectured around being hosted on the cloud. | | If you can build your application in such a way that it runs | in the free tier of serverless, then it's going to be | considerably more cost effective than renting a dedicated | server - but if you can't, then it absolutely won't be. | FpUser wrote: | >"If you can build your application in such a way that it | runs in the free tier of serverless" | | Serverless - that would be vendor/architectural trap. | Besides free tier does not come anywhere close to be able | to serve my applications. They serve real medium/big size | businesses. | lexicality wrote: | I'm sorry, I'm confused as to what your point is | FpUser wrote: | You mentioned serverless and architecting for it. I | consider it vendor and technological lock in with no | benefits. You might have a different opinion but to each | their own. | | You also mentioned free tier. To me it is irrelevant as | the amount of resources it gives is useless for me. | human wrote: | I had a similar client early in my career. Working for him was | a love/hate relantionship. He tripled my hourly rate telling me | my time was highly valuable but then had very high standards | and aggressive timelines. | coward8675309 wrote: | 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. | | As long as you'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've achieved the sweet spot in | terms of deployment portability. | | Running your own (Kubernetes cluster|database instance|pubsub | system) on a cloud provider is crazy given that you now have at | lease $150K+/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/hardware/network infrastructure. | | Unless advanced devops fu is an important part of your company's | mission or valuation, don't do it unless its saving you a lot of | money over the alternatives. | jtsiskin wrote: | I thought one of the main advantages of "running your own | (Kubernetes cluster|database instance|pubsub system)" was for | exactly that reason - so that "you can replicate across cloud | providers or in your own datacenter or on your own server in | the closet". | ummonk wrote: | The problem happens when Ops software tends to be GUI-based and | overly complex, and you just want some programmatic / command | line tool you can properly integrate into your software / | processes. | | It's often simpler to take open source software and adapt it to | your needs than to buy commercial software. | blindm wrote: | 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/service. | | Others are natural consumers: they develop tastes and grow to be | rabid shoppers. It's good to sit in the middle of these two | opposites, but often better to decide which extreme you want. | | I know I've made the decision too late in life, when I wasted a | vast portion of it trying to sell some product/service/idea when | really I just wanted the latest Porsche! | dasil003 wrote: | I'm sure a lot of people would love to go all-in on the buy | side. Where do you get the money to buy something if you don't | sell anything though? | blindm wrote: | > Where do you get the money | | In this case we assume there is a cashflow of some sort. How | the cashflow comes into being is a public matter for most, | but sometimes a private matter. It is assumed that a certain | amount of disposable income can be used to acquire tastes and | become a 'shopaholic' of sorts. | wenbin wrote: | Totally agree. | | Some engineers love to say "I can build this over a weekend". But | the main cost is almost always on the maintenance side. | | 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. | | 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 / alerting, error handling... There are | always exceptions, edge cases, special situations... | | 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... | | I like building a software/web business today than 10 years ago | :) One-person (or tiny team) web businesses will be very common | (I'm running one [1]), and running an API business is not bad | because it actually saves customers time & 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). | | [1] https://www.listennotes.com/blog/the-boring-technology- | behin... | | [2] https://www.listennotes.com/blog/how-i-accidentally- | built-a-... | satyrnein wrote: | I think "maintenance" somewhat mischaracterizes it. In my | experience, it's often that an engineer can build the typical | use case over a weekend, but will have to continue pouring in | more dev time while it's in production to handle a huge number | of edge cases that weren't properly handled originally. That | work is only "maintenance" because you already claimed the work | was completed, and finance has it marked as having been put | into service, so you can't capitalize further costs against it. | wenbin wrote: | Yea, in software development, it's always work in progress. | There's not a clear finish line. | | The word "maintenance" can't perfectly capture the meaning of | all the continuous development, small incremental | improvements, bug fixes, operational tasks... | effnorwood wrote: | But muh open source. Build don't buy. | woleium wrote: | 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. | drej wrote: | I used to have a boss who took this logic to an extreme and | basically preached "always buy, never build" | | 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. | | 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/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. | | 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. | [deleted] | dilyevsky wrote: | Buy if you want to save money, build if you need it to work. | thinkharderdev wrote: | These sorts of discussion always seem somewhat confused to me | because "buying" vs "building" is not a binary choice. It is more | often a choice between: | | 1. Buy some platform/framework which you will then need to hire a | small army of costly consultants to integrate and customize for | your particular business need. Or | | 2. "Build" your own solution by orchestrating a bunch of open | source technologies to solve your problem. | | Moreover, it is not quite clear up front whether 1 or 2 will be | costlier in terms of development effort and overhead. | recursivedoubts wrote: | _excellent_ point | dvtrn wrote: | It would seem to me there are still two choices to make, | meaning it's still a binary choice-merely with more caveats and | words involved to describe the options? | thinkharderdev wrote: | Yeah, that was phrased somewhat awkwardly. The binary choice | I was rejecting was between | | 1. "Buying" a solution that solves your problem exactly and | doesn't require engineering resources to implement and | maintain | | 2. "Building" a solution where you have to solve every | problem from scratch where you don't have any particular | expertise. | localhost8000 wrote: | I understand your general point of there being a continuum of | paying for building blocks to be integrated. But, | | > is not a binary choice | | Then, offering two options. :) | thinkharderdev wrote: | Haha, yes that it is a bit awkward | bdcravens wrote: | Sometimes though we are dishonest about #1, and we want a | deeper level of integration or polish than is necessary. | barnaclejive wrote: | This is 100% correct | Raidion wrote: | I think it's a matter of unknown future needs that's the | problem. If you want to do feature flags, you can basically | build a service that stores key value pairs segemented however | you please, throw it behind redis cache, and call it a day. | This is faster and probably cheaper than buying a SaaS! | | However, if you want a bunch of neat features, custom rollouts, | and all that stuff, you're simply not going to be able to get | the same value (unless you have HUGE scale) building it, and | should just buy it. | | Most organizations aren't comfortable saying "this is all we'll | ever need" and are worried about both building, buying, and | then migrating, which can be significantly more expensive than | either of those options in a vacuum. | Aeolun wrote: | In my experience, integrating a thing like feature flags is a | major pain if you do not have control over the | implementation. It ends up being kludges and suboptimal | choices everywhere. | crocktucker wrote: | s/binary/simple/ ... and you're on to something. | jiveturkey wrote: | cost is often not clear up front, but neither is benefit! | | this is where experience matters. | api wrote: | This is _usually_ true except for two cases: | | 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. | | 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. | dmantis wrote: | The very important point of today's world - data protection - is | not covered at all. | | For customers, it'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. | | Please, respect your customers and don't share their activity | when it's not necessary and cost just a few hundreds bucks per | month. | | Treating humans as "units" instead as people with rights is a big | problem of IT businesses. | x87678r wrote: | This is where free & 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 wrote: | This is Capitalist logic, and more specifically - an argument for | the concentration of capital in the computing/IT sector. | | We, software developers and users - people and small | organizations - should adopt the opposite slogan: | | __Built, Don 't Buy. __ | | 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: | | 1. Strive for better-fitting software - easier to use, deploy, | build and maintain; and | | 2. Cooperate and collaborate with related organizations and | communities/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't do it | on their own. | | 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. | mirekrusin wrote: | Nonsense without a context. | | Sometimes "building" means writing 6 shell scripts (each <10 LoC) | and "buying" means getting CKA/CKAD certificates for all people | involved and spending half a year on training. | hootbootscoot wrote: | Mmmm probably depends upon what _it_ 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 & storage) Your core will need to constantly be | extended, honed, refined, redefined, poked at, prodded etc... | veesahni wrote: | For Enchant [0], we followed the "buy don't build" philosophy a | lot in the early years. However, the biggest challenge has been | reliability. | | For example, a service provider will have a 5H outage without any | clear indication about what'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's all resolved, we either don't get a post-mortem or | a hand-wavy one. | | 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 "oopsie!" | | So over time, we'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. | | 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. | | 0: https://www.enchant.com - shared inboxes, knowledge bases, | live chat | fuzzy2 wrote: | I'm a little confused. When I have to build software (for a | client), it's usually to support some business process or make it | automated or whatever. | | What am I supposed to buy, except some PDF/Excel/whatever library | every now and then? | | But maybe I'm just not the target audience for this article. | satyrnein wrote: | Yeah, doing work to automate some idiosyncratic process, either | for clients or internal users, may be different. You do have to | be careful you're not slowly implementing a CMS, CRM, email | marketing tool, etc, feature by feature, though. | z3t4 wrote: | I think there is a balance in the "Yak Shaving" business... There | is a swaying "the best code is the code you did not write". | leowoo91 wrote: | I have to disagree.. Not everyone has enough time to learn | "ready" systems either, they can get pretty overwhelming. When I | decide to build instead of buy, it's mostly because I don't | believe in the design of the product that is favored by thousand | people with reason being "it just sounds cool". | lexicality wrote: | This works great until you hire a second person who now has to | figure out how your system works from the documentation you | wrote, rather than the documentation and blogposts on the | internet written by the thousands of people who thought the | other thing was cool. | human wrote: | 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. | didip wrote: | I agree. | | 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. | | Even worse if your company attempts to build Prometheus/Grafana | from scratch. Just why? What a huge waste of money. | | If it contributes to your core business then ok, I can see why | you may want to build custom solutions. | rantwasp wrote: | i think there is a huge difference between using prometheus and | paying for datadog. the article argues for not building | prometheus which makes sense in 99.95% of cases. | | btw, the build vs buy should be a topic of discussion whenever | people want to build something. at an absolute minimum they | need to understand (and use) what's already out there before | they embark on the journey of building themselves | YetAnotherNick wrote: | > so much energy installing Prometheus + Grafana stack instead | of just using DataDog. | | Because it could be done in few commands the second time. And | learning is only possible when wasting time on this kind of | things, rather than trying hard to custom fit your usecase | using some buyable tool. | | That being said, I kind of partially agree with you and the | author though. Don't maintain service just to feel that you are | in control, but with the exception that if you are doing it for | the learning purpose. | flumpcakes wrote: | On premise Prometheus/Grafana could be lower than 5% TCO | compared to DataDog, at least at places I have worked, and I am | including employee time. This isn't particulary a discussion | about cap ex. vs. op ex. either. | lhopki01 wrote: | Interesting you should bring this up as we are currently in the | process of moving from Datadog to Prometheus/Grafana. What | we've found is all the time you save in not setting up | Prometheus we lose in support tickets to Datadog to get them to | explain undocumented functionality and hidden "magic" they put | in place. With Prometheus/Grafana the answers are always out | there because of the sheer number of people out there. We've | even resorted to sending known metrics on known intervals just | to understand what Datadog does differently for monitors vs | graphs. Also the majority of the time for a monitoring system | is not spent on setting it up but rather on generating the | dashboards and alerts. | | Also with all buys systems there is a hidden costs in managing | the legion of user accounts to access these new services. It's | rarely as easy as just setting up SAML or single sign on. | | The final thing that people never talk about is cost. Yes there | is the cost of an engineer to set it up but often that costs is | cheaper than the bought service. This is especially true of pay | per api call type services. | recursivedoubts wrote: | Every build v. buy decision should ask: "Is this a place where we | want to bet on our ability to derive competitive advantage." | | If the answer is no, lean towards buy. If the answer is yes, lean | towards build. | | For ops, netflix would say "yes" whereas most companies would say | no. | taylodl wrote: | _Systems of Differentiation_ 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 't want | to rely on 3rd parties - either vendors or contractors. | | _Systems of Engagement_ & _Systems of Record_ should employ a | buy-first strategy. These are typically more operations-focused | systems and as such you 're usually better off buying them, but | not always (see below). It's possible that some of these systems | may also be _Systems of Differentiation_. | | 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. | bdcravens wrote: | The phrase AWS came up with for this, "Undifferentiated Heavy | Lifting", is quite apt. | taylodl wrote: | I should have pointed out this is the strategy that should be | employed by an established company. If your company is just | starting out then buy everything if possible - your competitive | edge is the fact you're small and nimble. You can respond to | market changes faster than the established companies can. Over | time you'll recognize what are to become your _Systems of | Differentiation_ and then and only then should you consider | building that yourself. When you 're starting out you typically | don't have the time or capital to wait and build the software | you may need. For such companies doing business and generating | revenue _now_ is more important than having a perfect | application portfolio. And yes, this is why systems are never | as perfect and pristine as developers would hope. | je42 wrote: | You can only buy stuff if you know that stuff is aligned with | what you need. | | Further, you need to consider that the stuff you buy also needs | to aligned with your needs over time. | | However, you also need to consider this when building stuff. | | 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. | | Also, note that building in-house doesn't mean engineering "from | scratch". Usually it means use lower level components over higher | level components/services. | magicalhippo wrote: | It's all trade-offs. At work a customer could only send some data | via mail, our integration could only accept via SFTP. | | 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. | | Until a few months ago when it suddenly stopped working because | for some reason Azure doesn't like the key exchange algorithms | Bitvise SSH server provides. Or at least, that's as far as I've | been able to determine. Zero logging on the Azure side so no clue | what's wrong. | | 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... | bdcravens wrote: | The hardest part of learning to not look through your developer | eyes. Often the 80% solution is "good enough" for your customers | or your stake holders, and they'd never appreciate the extra 20% | a fully custom solution provides. | papito wrote: | 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. ___________________________________________________________________ (page generated 2020-12-12 23:01 UTC)