The term Software 2.0 was coined by Andrej Karpathy, a computer scientist and former sr. director of AI at Tesla, to describe machine learning (ML) models that assist in solving a variety of classification and recognition problems without the traditional human input of writing a single line of code. A new kind of software that “can be written in much more abstract, human unfriendly language, such as the weights of a neural network.”
Software 2.0 is based on deep learning, where the developer will merely gather data to feed ML systems. The concept of interpretability does not matter for most domains (apart from some safety-sensitive ones) and the concept also seems to be more research-oriented in terms of R&D.
Software 1.0 vs Software 2.0: Resources writing the code to dictate software behaviour vs the code being discovered by calculations.
Advantages of Software 2.0
This shift from traditional programming to connectionist ML makes software development a lot easier day-to-day. Some of the factors driving Software 2.0 are:
- Computationally alike: A neural network combines the two processes of matrix multiplication and thresholding at zero (RELU), and is far more complicated and diverse than the instruction set of traditional software. It is relatively possible to create a variety of performance guarantees because one just needs to provide Software 1.0 implementation for a handful of the fundamental processing primitives (like matrix multiply).
- Embedding to chips: Since a neural network’s set of instructions is relatively short, it is easy to construct these networks on hardware that is closer to silicon, such as neuromorphic chips, customized ASICs, etc.
- Constant run-time: A traditional neural network forward pass requires exactly the same number of floating-point operations (FLOPS) for each and every iteration. No variation is feasible based on the various execution routes which codes might choose through a sizable C++ code base. Dynamic compute graphs are possible, although the execution flow is typically restricted. This virtually ensures that users will never get caught in an unforeseen infinite loop.
- Modules can patch into an optimized whole: A software is typically broken up into various modules that connect via open APIs, endpoints, or public functions. However, users can quickly backpropagate through the entire system if there are two distinct Software 2.0 modules that were trained to interact separately. This is a default behaviour with Software 2.0.
- Process agility: It will be quite difficult to adapt the system to meet the new requirements if one has a C language code and has to make it twice as quick (even at the expense of performance). With Software 2.0, users can choose the network, remove half of the channels, retrain, and the result will work exactly twice as fast.
- Teams with varied skills: Strong cross-functional teams that can handle the dangers of AI and ML will be necessary for organisations. The teams must bring in a wide range of expertise, starting with domain knowledge, design, privacy, ethics, and compliance. Organizations also need to take into account the specific group of people with varied social and cultural backgrounds. In this case, one group may agree with the concept while the other considers it wholly objectionable.
- Explainability of ML model: Sometimes it is difficult to explain why the software behaves in a particular way. Explainability is crucial in many fields, such as medicine and law, where at times the application of Software 2.0 becomes a challenge
- From Programmers’ perspective, Software-2.0 inherits additional challenges from ML libraries
- Dependence on data: As a result of learning rules from training data, ML algorithms create ML models that contain the learnt rules. The training data determines how accurate ML models’ judgments will be.
- Dependence on pre-trained model: Software 2.0 uses trained ML models in production environments to make choices (e.g., identify an email as spam or not spam).
- Evolving rapidly: Both new and improved ML algorithms are being developed by researchers. As a result, ML libraries that use these techniques undergo fast modification and routinely release new versions.
- Requirement for optimized hardware: To effectively train ML models, ML libraries typically need hardware that has been optimised, such as GPU and TPU. Due to these distinctive characteristics, the use of ML libraries requires special considerations from researchers.
- Moderating content: Every day, sensitive image, video, text, and audio content is removed from user-generated content streams using AI models. Advertisers are able to identify content that is off-brand or of low quality, as well as detect and regulate inappropriate language and profanity in text posts and unsuitable text in photos.
- Facial and speech recognition: Face comparison, face matching, face searching, and face-based identity verification are all common use cases. Secure entry to workplaces, schools, and highly sensitive areas such as Airports. Additionally, neural networks can be used for speech recognition.
- Predictive maintenance: Computer vision technology is being used by manufacturers, airlines, and agricultural companies to save maintenance and inspection expenses and lengthen the lifespan of capital assets. Software 2.0 has the potential to significantly improve asset efficiency, asset planning, asset monitoring, and maintenance planning.
Future of Software 2.0 and its impact on workforce
Emerging ML technology helps in reducing many of the challenges and complexities that hold up or delay the creation and use of AI models and are predicted to expedite the development of software 2.0. Software 2.0 will become increasingly crucial in any field where repeated evaluation is practical, affordable, and difficult to explicitly design.
- According to a MIT/BCG study, 84% of respondents believe AI is essential to gaining or maintaining a competitive advantage, and 3 out of 4 respondents think ML offers a chance to start new enterprises and that AI will be the foundation for new entrants into their sector.
- As per a report by Fortune business insights, the global software-as-a-service (SaaS) market stood at USD 113.82 billion in 2020. The market is expected to grow from USD 130.69 billion in 2021 to USD 716.52 billion in 2028 at a CAGR of 27.5% between the period. This increased demand for the SaaS market will also act as a driver for Software 2.0.
The emergence of Software 2.0 will alter not only how software is built but also who works on it. Software 2.0 will require collaboration between domain experts and data scientists. This means additional skills at the hands of developers. In-fact, as per a survey by Evans Data Corp (a US-based market research firm), nearly 30% percent software developers believe that their development efforts will be replaced by artificial intelligence in the foreseeable future.
This is expected to give rise to the 2.0 programmers, who will have proficiency in AI projects including math, algebra, calculus, statistics, big data, data mining, data science, ML, cognitive computing, text analytics, natural language processing, R, Hadoop, Spark, and many others.
In Andrej Karpathy’s words the future will see, “2.0 programmers will manually curate, maintain, massage, clean and label datasets,” while 1.0 programmers will “maintain the surrounding tools, analytics, visualizations, labelling interfaces, infrastructure, and the training code.”
Sources:
https://www.linkedin.com/pulse/get-ready-software-20-era-anand-rao/
https://www.clarifai.com/blog/all-you-need-to-know-about-software-2.0
https://karimfanous.substack.com/p/software-20-vs-software-10
https://pub.towardsai.net/the-rise-of-software-2-0-you-dont-want-to-be-left-behind-cbaa75f6d19
https://www.devopsdigest.com/where-are-we-in-the-evolution-to-software-20
https://www.stxnext.com/blog/will-artificial-intelligence-replace-developers/
https://www.weforum.org/agenda/2022/07/top-10-trends-in-tech/
https://dl.acm.org/doi/fullHtml/10.1145/3453478
https://www.fortunebusinessinsights.com/software-as-a-service-saas-market-102222
https://elu.nl/how-to-stay-relevant-as-a-software-developer-in-the-age-of-ai/