12 ms·
Software has no marginal cost. You can make something that's used by untold millions of people. Even if many people pirate enough people won't for you to recoup
by gizmo 3y ago
Software has no marginal cost. You can make something that's used by untold millions of people. Even if many people pirate enough people won't for you to recoup your development cost and then some.
Software is easier to produce, sell, and distribute than any physical product. You don't have to worry about warehouses filled with unsold inventory. You don't have to worry about quality control and returns. It still blows my mind how much easier it is to run a business that deals with bytes instead of atoms. The OP talks about software having no copy protection, but Amazon sells DVD players and cordless drills for $30. Imagine for a second how hard it is to compete with that. Competing with Google or Microsoft or some startup is a walk in the park in comparison.
In software the hard part is making an excellent product. And let's face it, that's where most people fail. It has nothing to do with monetization.
- inglor_cz 3y agoMaking an excellent product is hard, but what is really hard, is maintaining it for years and decades afterwards. Maintenance, addition of new functionality, bugfixing, porting to other platforms etc. takes easily 10x-50x time than the initial release, and eats the vast majority of the developers' time and energy. This is where "not being paid for your work" translates into abandoned projects.
- pmontra 3y agoThe traditional way to fund maintenance was to release a new and better version of the product. Example, all the releases of the various office suites from the days of MS-DOS up to Windows up to the cloud. If sales decline, sell to a competitor (good timing required) or close and switch to something else. A company that paid salaries for 5-10 years is still nothing to be ashamed of. In the case of Apple, keep selling new hardware. I can't remember if they ever sold their software in the first years of Macs or if it was bundled with the hardware.
- AlexandrB 3y ago> I can't remember if they ever sold their software in the first years of Macs or if it was bundled with the hardware. In the early OSX era they used to sell their office suite separately. Eventually it got bundled with hardware for free. They still sell some software, like Final Cut Pro.
- MichaelZuo 3y agoPlenty of people are using copies of Word, Powerpoint, and Excel 2003 just fine, which received literally zero 'maintenance' for at least a decade or more depending on personal preferences. For most software that can be sold in a box, without an attached cloud service, this approach works. EDIT: Also some fraction would be using them on computers that literally haven't been upgraded or connected to the internet for a decade or more.
- masukomi 3y agoif you think those aren't receiving maintenance you're not paying attention or are ignorant as to how hard it is to keep a complex app compiling as operating systems move forward. Not receiving new features is VERY different from not receiving maintenance. It is wholly implausible to believe that there has been zero energy spent on keeping those codebases working in the past 10 years.
- MichaelZuo 3y agoI'm not sure what to say to this... you can just buy an old copy of Office 2003 on eBay, an old Windows XP computer, and boot it up and try it out? You don't have to believe me, I imagine practically every reader on HN has the means to verify this for themselves.
- j1elo 3y agoThat kind of rethoric doesn't fly too far... Your original point was > Plenty of people are using Word, Powerpoint, and Excel 2003 just fine Are you claiming that a reasonable majority (for the sake of discussion) of this plenty of people are using Office 2003 on Windows XP machines?? I'd doubt it. More like there's plenty of people using old software in modern versions of Windows. The maintenance work, of course, exists and has been done indirectly, by Microsoft, in the development iterations of Windows itself.
- MichaelZuo 3y agoIf you also include Windows 2000, Vista, and 7 computers that weren't updated in the last decade, I think that would be a sizeable fraction of all Office 2003 users in 2023. Whether or not they make up the numerical majority of all extant users is simply irrelevant to the point of 'Plenty of people'. It's easily many, many, thousands.
- XCSme 3y agoCompletely agree. Nowadays, software is different from the CD era, where you bought a game/software and that was it. Nowadays, people expect the software to be maintained, kept up to date and always compatible with the latest changes (new OS versions, compatibility with other software, etc.). Maintenance is the high cost of software, not building it. This is why I sell my products with a perpetual license but with paid yearly updates. I can not work for free indefinitely as all the "lifetime" licenses promise.
- AlexandrB 3y agoI think there are a few interesting threads to pick at here. First, some of these problems are created by software developers themselves. In particular, shoving in an online component where one doesn't need to exist basically guarantees that you will have recurring costs and the need for constant maintenance. Second, Microsoft is much more careful about maintaining backwards compatibility than Apple. I can generally fire up 10+ year old software on Windows 10, no problem. The same is sometimes true on OSX/iOS, but often not. The increasing popularity of Apple products and the lower priority they place on backwards compatibility has definitely made developers' lives harder. Having said all that, I don't think everybody expects constant updates. I think power users, especially, are used to running what works for them for long periods of time. You probably can't build the next Google on this, but a lifestyle business? Certainly. Just look at Pinboard and it's lack of enhancements or UI overhauls - and that's an online service.
- grishka 3y agoAn excellent product doesn't need maintenance if it doesn't rely on any online services. Once it's done, it's done. It does everything it needs and nothing it doesn't need. Engineering projects usually have a finished state. Software engineering is no different, no matter how much the industry wants you to believe otherwise.
- steveBK123 3y agoCompletely incorrect. Underlying hardware/OS/firmwares/JVM/etc change. Dependencies break. Security updates. Etc. Engineering projects usually hand off maintenance to their owner. Your house/car need maintenance. Your cities roads/bridges/tunnels need maintenance. The difference with software is that maintenance is done by the producers as they own the code.
- grishka 3y ago> Underlying hardware/OS/firmwares/JVM/etc change. OSes also can be "excellent products". They don't need yearly updates, there's nothing inherent to them that would prevent them from being made perfect, finished and never updated again. The only case when an otherwise perfect OS would truly need to update is when new hardware capabilities require OS-level changes to support. Sometimes it may be beneficial to expose these new hardware capabilities as APIs for apps to consume. But again, adding new APIs shouldn't break the existing ones. For example, on phones, this would include things like notched screens, fingerprint readers or multiple rear-facing cameras. > Dependencies break. Don't update dependencies. Pick one version that serves you well and stick with it forever. I'm serious. > Security updates. It seems like we've already realized that writing code that deals with complex data structures received from untrusted parties in memory-unsafe languages like C is a terrible idea. If you exclude memory safety vulnerabilities, the attack surface shrinks drastically. You'd run out of security vulnerabilities pretty fast if you'd have any to begin with. > Your house/car need maintenance. Your cities roads/bridges/tunnels need maintenance. Houses, cars, and road infrastructure are made out of atoms and exposed to elements and stress of our imperfect real world. They wear out. Code doesn't. In 100 years, the bits would be the same they are today (as long as you use a reliable enough storage medium).
- 7e 3y agoNot at all. Software has low marginal cost, but that has high fixed costs that need a monetizable market to sustain. Good software takes effort and great people. Those are expensive. If you can't monetize you can't put people on your software and it will suck (like most OSS software, for example). Physical manufacturing is hard, but at least it brings in dollars. OSS, privacy and wankers reverse engineering your software shrinks your market substantially.
- buggy6257 3y agoI'm not sure I get your argument. Basically everything you're talking about applies to physical manufacturing too. You have high fixed costs (equipment, location, assembly line workers, what have you), and you also have marginal cost (software basically has zero marginal cost). Good physical goods also take effort, and great people to design them. > Physical manufacturing is hard, but it at least brings in dollars You say this as if it's some indelible fact that if you make a physical product, it WILL be bought and you WILL make a profit no matter what, but I think it's safe to say this is objectively false, as many failed physical business would attest to. > OSS, privacy and wankers reverse engineering your software shrinks your market substantially. As opposed to in the physical world, where nobody ever cribs your ideas and sells them at a discount compared to you... AKA "Amazon's business model"? (not to mention overseas knockoffs of products Given all these things being equal then, software has all the same benefits that your parent comment mentioned, while staying at best EQUAL with physical manufacturing, save for maybe higher salaries to the people making your product (arguable in some cases, but on average probably true) but this difference pales in comparison to not having to own a warehouse and manage last-mile shipping costs etc.
- ipaddr 3y agoA physical product has limitations. Creating 1,000 car mirrors requires capital, storage, self space to sell. Once the mirrors are created no changes can occur. Any changes requires a new batch. Software has expectations that it can and should be changed after purchase through updates/patches/upgrades/saas products. That creates an ongoing cost a physical product doesn't have. There are tradeoffs and different expectations which make both difficult. I would rather go the software root because I have the advantage of free developer time but someone else might find making 10,000 widgets from China much easier and cheaper. We think software is easier because we devalue what we add and what we really cost
- davidw 3y agoSoftware is mostly a non-rivalrous good: https://en.wikipedia.org/wiki/Rivalry_(economics) https://en.wikipedia.org/wiki/Rivalry_(economics) although it becomes a little bit more that way when it's hosted, rather than distributed via downloads or something, depending on the load it puts on a server. It is excludable, but more so with SaaS type things: https://en.wikipedia.org/wiki/Excludability https://en.wikipedia.org/wiki/Excludability
- pjc50 3y agoThe problem with software's non-physical nature is that it has runaway market dominance issues. Software, especially software that interacts with other software, tends to be either open-source maintained by a "community" or a thinly veiled world domination plan.
- prepend 3y agoThat’s a feature, not a bug, I think. Low barrier to entry is really important for new software. So it’s this struggle with some orgs trying to increase lock-in (Microsoft, Oracle, etc) and a constant stream of new products taking off, dominating the world, and getting knocked off themselves.
- vishnugupta 3y agoI mean, sure, this is what all the business books, MBAs have been saying since 60s. However, since then we have come to learn a lot about software. The most important of which is that software, just like physical products, needs maintenance. The world is constantly changing and evolving, and software has to keep up otherwise it'll become obsolete within couple of years. At the very least it must be patched up with newly discovered security threats. Just look at all the money/effort spent to make features backward compatible, or army of engineers employed by companies just to maintain existing software.
- ryandrake 3y ago> At the very least it must be patched up with newly discovered security threats. I'd say at the very most it needs security updates. Too much software changes just to change. UI redesigns for the sake of redesign, cramming features that nobody wants so a product owner can get promoted, adding telemetry and analytics to chase metrics that no user cares about, adding annoying notifications and popups to juice "engagement". I pine for the days of desktop software, where I can wake up in the morning and not be worried that some developer 1,000 miles away from me changed my product out from under me because developers gotta develop. Another benefit of software that doesn't change every week is you can charge one time for it rather than these awful subscription pricing that most software are switching to. They justify subscriptions because "we have to keep paying developers to develop." Not a problem that the user has, so why should the user have to pay for it? Old, unchanged software is not obsolete. It's mature. Bugfixes only, please.
- paulddraper 3y agoThe reason that desktop world existed is because computing was very localized. Now people use it in very interconnected ways.
- SoftTalker 3y agoOn the other hand, the reality experienced by software companies is that adding features is profitable. Joel Spolsky talks about this in one of his old blog posts[1]: "I can tell you that nothing we have ever done at Fog Creek has increased our revenue more than releasing a new version with more features." It makes sense though, if software companies could make just as much money doing less work, they certainly would. [1] https://www.joelonsoftware.com/2006/12/09/simplicity/ https://www.joelonsoftware.com/2006/12/09/simplicity/
- j45 3y agoSoftware can be easier than physical products if kept simple, because the complexity arrives on it's own anyways. Each line of code is a burden of future maintenance.
- icepat 3y ago> You don't have to worry about quality control I'm not sure exactly what you mean by this, as a large part of software development is QA testing, and validation. Which is a form of quality control.
- dboreham 3y agoParent means quality control in the context of the supply chain. Still wrong imho, since you need to at least maintain a zip file in someone's CDN, and those folks have to maintain their CDN QoS.
- labcomputer 3y agoWhen you manufacture the physical widget, manufacturing tolerances mean that not every widget is the same. There are variations in the as-produced widgets. You need a QA/QC process to identify units which are too far out of tolerance and either remove them from the pipeline or remediate them. You also need to track trends in the measured tolerances to proactively fix your production equipment. In the software world, that’s trivially easy. Your CI pipe publishes an artifact and then every user gets a bit-perfect copy of that artifact. Your entire QC is just: Users compare the artifact’s checksum to the expected checksum. It essentially always matches because we use things like TCP to copy the data. The type of QA you’re talking about is also required for physical widgets.
- cscheid 3y ago> Software has no marginal cost. Maybe you've never experienced the difference between writing software for 1000 people and writing software for 1M people, or (I imagine) 1B. The marginal per-person cost of software is not on shipping. It's on "what kind of weird shit will I now have to do because 1M is a lot of chances for my software to break weirdly, and people have paid for it" > You don't have to worry about quality control and returns. You don't have to worry about quality control and returns if you don't care about quality control or returns.
- chromoblob 3y agoAs N of people → ∞, chances for software to break → finite maximum. And for good enough software you should consider that maximum already regardless of the number of users.
- cscheid 3y ago> And for good enough software you should consider that maximum already for any number of users. I don't believe such software exists. (And, to be clear, I'm writing from direct, day-job experience.) EDIT: I take it back. SQLite, cURL. Maybe. EDIT2: I can't reply to the SEL4 response, so here goes. I'm a huge fan of verification tools, but consider the Spectre class of bugs. Verification is always done wrt a mathematical model that you've defined after inspecting the world and writing down the properties you want to track. But the world changes, and the chance that the world changes increases with the number of users of your software. That's the nature of the beast.
- chromoblob 3y agoseL4 is a formally verified OS kernel. https://sel4.systems/About/ https://sel4.systems/About/
- chromoblob 3y agoSpectre is a bug in the processor, not in the software. I agree that when you're stuck with unfinalized buggy processors, adding mitigations in software is reasonable. But the processor could be finalized too. When I had a reply I couldn't reply to, I opened the reply separately in a new tab, and there I could reply to it, try this.
- shon 3y agoSoftware margins are good, especially compared to physical things. However, the marginal cost is far from zero. It scales with # and variety of users. Today, all software comes with complex dependencies. Take for example any mobile app. Apps require constant upgrades to keep up with the hardware and software changes on the platforms. You can’t just build an iPhone app and leave it alone to be enjoyed by people. I’ve tried, within a year or two there will be changes that require developer work, if you don’t keep it maintained, it will start to crash and function poorly, Apple, for example, tracks everything and will start with de-boosting search results for your app and end with removing it from the platform entirely. Google is the same. I’ve tried, I built a Top 25 RPG and got busy with other things. It went from Top 25 to deplatformed in less 5 years because unmaintained software just doesn’t work in most cases today. Software is more complex now. All software is a conglomeration of lots of other software: frameworks, platform tools, libraries, APIs, etc. Another example: Flash Another example: All the AI software being written on top of the OpenAI API will be broken in a year or two as they roll new versions of the API and deprecate the old. Software doesn’t just work anymore. The platform that executes it is constantly changing.
- david422 3y ago> You can’t just build an iPhone app and leave it alone to be enjoyed by people. I’ve tried, within a year or two there will be changes that require developer work, if you don’t keep it maintained, it will start to crash and function poorly My favorite is when a new Apple update breaks your app, so you identify where the issue is and make a small update, but now Apple rejects your update because of some other arbitrary guidelines it's changed, so you then have to start down that rabbit hole.
- JohnFen 3y ago> Software doesn’t just work anymore. The platform that executes it is constantly changing. It depends on the software. But where this is true, it's not because of some innate nature of software, it's because of business decisions software companies have made.
- shon 3y ago
- sharemywin 3y agoThis completely ignores the cost of support. - How does this feature work? - How does the software do this? - you said it does this and it doesn't why? - can make the software do this? Each one of these questions cost money to answer and needs someone to hand hold the user. especially if they are a non-technical business user.
- chinchilla2020 3y agoYes. Software is a low-capital business and many people in tech don't want to believe it. A few offices, macbooks, and data center space is very cheap compared to building a manufacturing plant. On the other side, what tech people understand that the general public does not... is that software has a healthy dose of maintenance and operational costs when it scales. Not a massive cost, but higher than zero - which is what most MBAs think the maintenance cost is.
- gnulinux 3y agoIt's almost like we live in different world, I could not disagree more. * Software is extremely expensive. Software engineers are expensive, and for a good software project you need a tech lead, a manager and probably a few developers. These are all people you need to pay tons of money for. * Software is constantly changing, something that worked 2 years ago can be broken beyond repair today. You need a team that can keep up with this. * Software needs maintenance. You can't just build an app an call it a day, you need to employ a team to maintain it continuously. You can build a massive, gargantuan bridge and maintain it maybe every few years/half a decade to keep it safe for 30+ years, you cannot do that in software. * Unlike what outsider think, software -- even "boring" CRUD/web software -- is still very much a research project. If you ask a civil engineer how to build a bridge, they'll tell you about all the techniques that were developed over the many many decades. What a developer focuses on while writing code is mostly ideas developed in the last few years. Although you think you're building a simple app with 3 devs, what you're missing is you have your own tiny research lab studying how to develop this simple app the cheapest way possible while making it maintainable. * Software by its very nature is hard to make money off of. Its complexity is opaque to most people, they're not willing to pay. You'll always have people pirating it, eating away from your bottom line. Moreover, each new software means changing workflow, so even if you have the best product on the market, decent amount of people won't switch from the industry standard. * Modern software engineering methodology focuses on, among other things, time to ship, feature richness and maintainability. It does not focus on correctness -- partially because our theories on software correctness are lacking (even if you decide to use novel/extreme approaches such as Dependently Typed Programming, formal proofs etc it's unclear/unknown if you'll reach a significantly better correctness metric). This makes your product inherently frustrating to the customer. No matter how much money you spend, you'll always have a product that's a little bit buggy. This means the product is very sensitive to the amount of money you throw at it. If you throw Apple level of money, it'll be less buggy, if you have a barebones team it'll be more buggy.
- jkepler 3y ago> * Software needs maintenance. You can't just build an app an call it a day, you need to employ a team to maintain it continuously. You can build a massive, gargantuan bridge and maintain it maybe every few years/half a decade to keep it safe for 30+ years, you cannot do that in software. > * Unlike what outsider think, software -- even "boring" CRUD/web software -- is still very much a research project. If you ask a civil engineer how to build a bridge, they'll tell you about all the techniques that were developed over the many many decades. As a nonpracticing civil engineer, you're underestimating the ongoing maintence that goes into any large bridge. Also, though the techniques may be more established, every bridge must still be designed to fit the specific characteristics of its local geology and geography. But come to think of it, fundamental computer science algorithms are pretty well established, like bridge-building techniques. Software engineering is simply fitting the code to each unique problem, as bridge design fits a bridge to each unique place.
- scarface_74 3y ago> still blows my mind how much easier it is to run a business that deals with bytes instead of atoms That must be why most software startups succeed.
- maest 3y agoYou must have misread. GP said "easier" not "easy". Hard tech startups are notoriously harder to get off the ground than software companies.
- hinkley 3y agoThis logic has always bothered me a little and I’ve never understood why, until recently. The fact of marginal cost results in a lot of software being written that otherwise never would have been. After all, the difficulty of solving a problem for myself often doesn’t offset the trouble of making a reusable solution. It’s only through having other people use it or pay for it that it becomes worthwhile. Randall Munroe’s chart is incomplete because it thinks too locally.
- supportengineer 3y agoIn software you can make an excellent product and still fail, sadly.
- bob1029 3y ago> In software the hard part is making an excellent product I'd argue in all domains, the hard part is making an excellent product. There are virtually zero real-world constraints you can leverage as excuses in the domain of software, other than the original idea was bad or you have really bad people around the idea. Most of the software ideas I have encountered in my career are fantastic. It's not hard to describe what a high quality product experience is like if you are a domain expert and have suffered the gauntlet for 30+ years. The part that always seems to go straight to hell is the implementation of the idea. I suspect most software projects go bad because there are too many layers of separation between participants. In physical products, substantially more direct interaction is required to get things done. With software products, you can isolate everyone into different multiverses as long as they are pushing PRs to the same GitHub repo (and sometimes not even the repo is shared...). Over time, these silos ultimately ruin any sense of ownership and quality in the product. It is quite tragic - while on one hand software is the most accessible form of human enterprise ever, it is also the easiest to do wrong. Having no constraints seems like win-win at first, but it is absolutely a double-edged sword. In my view, the best software company CTOs are the ones who intentionally add as many artificial constraints as they can to the technology and process. Do more with less. Force lateral thinking. Make the product people go back to the customer and say things like "we actually can't do that because of a technology policy" instead of pretending like an unlimited infinity of things is always possible.
- gmerc 3y agoIn an industry full of unchecked monopolists, piracy takes the role of providing the a reasonable price ceiling at which people switch away from bad but monopolized products
- amelius 3y ago> Software is easier to produce, sell, and distribute than any physical product. This is exactly why people should pay for software: consumption of physical goods destroys the planet. Money spent on software can't be spent on destroying the environment. Ban ads*, make people pay for content and software and save the planet. Win-win-win. * most of them anyways