Does Software Eat Software Development? Or Spread it like Dandelion Seeds?
If “software is eating the world” is it also eating software development? Chris Dixon thinks so. And if you attended IBM’s Impact conference in April and heard all about “composable businesses” then you are likely to agree, it looks like software is eating software development.
From Chris’ blog:
- Infrastructure. Deploying a commercial website ten years ago required significant upfront capital. [..]
- Services. Startups created simple APIs that abstract away complex back ends. Examples: Stripe (payments), Twilio (communications), Firebase (databases), Sift Science (fraud).
- Open Source. Open source dominates every level of the software stack, including operating systems (Linux), databases (MySql), web servers (Apache), and programming languages (Python, Ruby). These are not only free but generally also far higher quality than their commercial counterparts.
- Programming languages. Developers have steadily marched upwards from Assembly to C to Java to, today, scripting languages like Ruby and Python. Moore’s Law gave us excess computing resources. We spent it making developers more effective.
- Special-purpose tools for non-programmers. These tools let non-programmers create software in certain pre-defined categories, thereby lowering costs and reducing the demand for developers. Examples: Shopify (e-commerce), WordPress (blogging), and Weebly (small business websites).
- General-purpose tools for non-programmers. In the pre-Internet era, tools like Hypercard and Visual Basic allowed hundreds of millions of semi-technical people to become software developers. Since then, there hasn’t been much work in these areas, but from what I’ve seen that might change soon. By allowing more people to program, these tools act as a force multiplier for the software industry.
And yet, I’m not completely convinced. Well, I’m convinced that the right software abstractions are making commercial software deployment (of all kinds) easier. And complex services can be exposed as simple APIs (getting the abstraction right). Certainly open source is a big trend. And new programming languages. And lots of new tools for non-programmers, both specialized and generalized.
But we have examples to look at. Take circuit and chip design. When VLSI design came on the scene in the 90’s, an industry source told me that the impact on chip design was that 4 electrical engineers could now do what 100 electrical engineers would do without it. Do we do less chip-design today than we did back in the 90’s? Of course not! We produce dramatically more chip designs and companies can entertain producing custom silicon for all kinds of purposes. In a sense, we reduced the cost of chip design, and so much more space under the demand curve is now being fulfilled by electrical engineers and chip designers. In fact, there are quite a few such firms in Austin, TX, where we seem to have particularly strong veins of expertise in the following chip design areas:
- analog and mixed-signal designs
- low power designs
- stacked chip designs
- gaming chip designs (thanks IBM)
- mobile device chip design (see above, low power and mixed signal designs)
- custom designs
- ARM designs
- Automotive chip designs
And that’s just scratching the surface… in Austin.
Turning back to software…
- Infrastructure got easier. But now we’re being asked to do more complicated things (overall) that we wouldn’t have even contemplated 20 years ago- a level of clustering and integration among different software systems that was unthinkable in the past. And now – while doable – it’s hard. It’s complex. And it requires deep expertise to do it right (along with virtual private cloud and various other techniques of securing these complex environments).
- Services. Yes, complex services get abstracted away. Leave it to us humans to start weaving Stripe, Twilio, Firebase, and others together into yet more complex combinations. Or leave it to some big firm to buy these guys and mess them up. Causing us to have to reinvent the wheel. But more to the point, this is more about making these services available to more solutions, not replacing the code that would have been written in the current solutions. We’re a small firm but we’ve thought about implementing Stripe to accept payment for our support and services. With more traditional methods we wouldn’t even consider it.
- Open Source. As a user of open source, I’m not convinced that open source software is eating software development so much as perpetuating it.
- Programming languages. This was the weakest argument. The languages aren’t going from low-level to high level. Not really. There is more of a diaspora of languages – each one suited for specific purposes that make it “best fit” for that purpose… Until someone invents a better language for that purpose. Rather than eating software development, the languages are disseminating and planing the seeds of software development to make incursions into ever more nooks and crannies of IT.
- Tools for non-programmers. In some respects, BPM tools are among these. The basic issue here is that non-programmers don’t want to be programmers. Until an AI can discover the requirements on its own, don’t expect this to change. And at that point it might be easier to have the AI just do the job of the person from whom it would elicit requirements. My take: these tools just make the easy things easier, or a specific hard thing easier, increasing the total addressable space for programmers (software development) to tackle.
Short of the Singularity, I think software development is safe for a while yet. Yes, software eats software development, but it also feeds it and nurtures it and spreads it like dandelion seeds. Both tendencies and trends are real, it is just a question of which one you think outweighs the other…