Community
A few years ago, I'd visited the South Indian temple town of Tirupati with my family. On the way, whenever the train stopped at a station, the engine was switched off. But the air-conditioning still worked because it was powered by huge battery packs installed in the AC coach. Coincidentally, the manufacturer of these battery packs is located close to Tirupati. I know this company from the time it purchased my employer's ERP in the early 2000s. Through the years, I've stayed in touch with the ex-CEO of the unit, Rajesh Bapu.
I met Rajesh during my latest trip and introduced him to my family as the guy who "built the electronic circuit that manages the battery packs on AC coaches of Indian Railways trains".
He corrected me, saying, "I assembled the circuit using available integrated circuits without building every part of it."
12μF Capacitor (Source: Amazon.com)
Yes, indeed. Since times immemorial, automobiles, printed circuit boards and many other products are assembled from standard components, which can be sourced from catalogs.
But not software.
I joined the software industry two decades ago. From then to today, I've been hearing of technologies like SOA, CBSA and microservices that purportedly allow programmers to build systems by assembling prebuilt functionality.
But that vision has still not turned into reality.
Once upon a time, developers had to build software systems from scratch perhaps because there was no prebuilt functionality.
Then, it's quite likely that developers built reusable components by using technologies like SOA. But, despite the existence of methodologies like CBSA, development teams still had to build software from scratch because they didn't know about the existence of reusable components.
Then came innovations like open source repositories and open API marketplaces.
For the uninitiated, an open source repository (e.g GitHub) contains prebuilt source code for components that can be used by programmers to develop their own systems; and an open API marketplace (e.g. Algorithmia) expose readymade functionality that can be accessed by developers from their systems via application programming interfaces.
In theory, if you want to develop a new system, you should be able to review the catalog on these platforms, pick and choose the component or API you need, and integrate the prebuilt functionality into your new system.
In practice, this has worked reasonably well in building software pilots / proofs of concepts / MVPs.
However, when it comes to fully fledged enterprise systems, these platforms haven't made a big dent in the traditional way of building software systems from scratch.
IMO, this is because there are still several hurdles in the way of changing the time-worn development methodology. I'll illustrate them by continuing to use the PCB analogy:
As a result of these challenges, it has been hard to develop enterprise-grade software systems by assembling prebuilt functionality.
That's not to say it can't be done.
But cracking the Holy Grail of software engineering will require structural changes in the way software is packaged and sold. The purchase process for software should mimic that of electronic components whereby customers can:
If you're wondering "what's in this" for a software product vendor, you're not alone.
Actually, this model is more closely aligned with IT services. More on that in a follow-on post.
This content is provided by an external author without editing by Finextra. It expresses the views and opinions of the author.
David Smith Information Analyst at ManpowerGroup
20 November
Seth Perlman Global Head of Product at i2c Inc.
18 November
Dmytro Spilka Director and Founder at Solvid, Coinprompter
15 November
Kyrylo Reitor Chief Marketing Officer at International Fintech Business
Welcome to Finextra. We use cookies to help us to deliver our services. You may change your preferences at our Cookie Centre.
Please read our Privacy Policy.