Blog Details

Peruse and consume with equanimity


Software Development - The New Existential Threat

Torome 11th Aug 2023 18:52:17 Technology  0


robot



Programming has always been about a series of instructions in a particular syntax to inform a computer to perform a task irrespective of the programming language. A preponderance of generative AIs will not change that paradigm any time soon, or will they?

Artificial intelligence (AI) is one of the most exciting and rapidly evolving fields of computer science today. It aims to create machines and systems that can perform tasks that normally require human intelligence, such as learning, reasoning, decision-making, and creativity. AI has been making remarkable progress in various domains, such as natural language processing, computer vision, speech recognition, and machine learning. And evidence of these can be seen in both large and small corporations respectively utilizing this nascent technology to improve growth and productivity. Earnings and return on investment seem to go hand in hand with the implementation of AI-oriented projects - just look at the myriad of new software firms propping up every day with various variations of text, image, and video implementation utilizing AI.

What is obscured in this conversation is the perspective of the developers. After all, if any implementation is to take place, they will be the ones to orchestrate these moves. If you are excited AI will be writing your code while you are sunbathing on a beach in Seychelles, stop dreaming it isn't going to happen. If you are worried AI will take your job, worried not because it won't. It will though have an impactful influence on how you perform your job in this new era of Generative AI. Looking into the future from our current perspective, there is no denying that classical computer science as we have come to know it, will inevitably change with the advent and proliferation of Generative AI maybe 15 - 20 years hence. At this juncture, still very rudimentary to be given such a massive task and responsibility. Like all technological advances, generative AI will enable developers to focus their time more effectively.

A Categorized Segmented Overview Of What We Think:


The perennial question within the software industry now seems to be whether AI is a threat to software developers, or if it can replace them in the next 10 years. The answer is no. In fact, AI can be seen as a powerful ally and a valuable tool for software developers, as it can help them improve their productivity, quality, and innovation. In the undermentioned, we explore some of the ways that AI can assist software developers in the software development process, and why software developers are still essential for creating, maintaining, and improving AI systems.


AI-managed code compilers

A code compiler is a software program that converts the source code written by software developers into machine code that can be executed by computers. Code compilers are essential for software development, as they enable the software to run on different platforms and devices. However, code compilers can also be time-consuming and error-prone, as they need to optimize the code generation and execution for numerous factors, such as speed, memory usage, security, and compatibility.

AI can help software developers by managing the code compilation process faster and more efficiently, using machine learning techniques to optimize code generation and execution. For example, Facebook has developed an AI-managed code compiler called Glow, which can automatically optimize the code for deep learning applications on different hardware platforms. Similarly, Intel has developed an AI-managed code compiler called oneAPI, which can automatically optimize the code for heterogeneous computing architectures.

robot




AI-based programming assistants

A programming assistant is a software program that helps software developers write code in various programming languages. Programming assistants can provide features such as code completion, syntax highlighting, error detection, documentation, debugging, and refactoring. Programming assistants can improve the productivity and quality of software developers by reducing the amount of manual work and mistakes involved in coding.

AI can help software developers by providing more advanced and intelligent programming assistants, using natural language processing and machine learning techniques to understand the intent and context of the code, suggest relevant code snippets, fix syntax errors, and provide documentation. For example, Microsoft has developed an AI-based programming assistant called IntelliCode, which can provide context-aware code completion suggestions based on millions of open-source projects. Similarly, GitHub also owned by Microsoft has developed an AI-based programming assistant called Copilot, which can generate entire lines or functions of code based on natural language comments or existing code.

robot



AI-powered testing tools

A testing tool is a software program that helps software developers test the functionality, performance, security, and usability of their software. Testing tools can automate the testing process by generating test cases, executing test scripts, detecting bugs, and providing feedback. Testing tools can improve the quality and reliability of software by ensuring that the software meets the specifications and requirements of the end users. AI can help software developers by providing more powerful and efficient testing tools, using machine learning techniques to generate test cases based on user behavior or feedback data, detecting bugs based on anomaly detection or fault localization algorithms, and providing feedback based on natural language generation or sentiment analysis techniques. For example, Google has developed an AI-powered testing tool called Testimony, which can automatically generate test cases based on user reviews. Similarly, IBM has developed an AI-powered testing tool called Rational Test Workbench, which can automatically detect bugs based on machine learning models.

robot




AI-enabled design systems

A design system is a set of standards and guidelines that helps software developers create user interfaces for their software. A design system can include components such as colors, fonts, icons, layouts, and animations. A design system can improve the usability and aesthetics of software by ensuring consistency, clarity, and accessibility across different platforms and devices.

AI can help software developers by providing more creative and adaptive design systems, using natural language processing and machine learning techniques to understand user requirements, generate design prototypes, and evaluate user feedback. For example, Adobe has developed an AI-enabled design system called Sensei, which can automatically generate design prototypes based on natural language descriptions. Similarly, Salesforce has developed an AI-enabled design system called Einstein, which can automatically adapt the design based on user behavior or preferences.

robot




AI-driven analytics and reporting

An analytics and reporting tool is a software program that helps software developers monitor and improve the performance, security, and usability of their software. An analytics and reporting tool can collect and analyze data from various sources, such as user feedback, usage statistics, error logs, and performance metrics. An analytics and reporting tool can provide insights and recommendations for software developers to optimize their software based on the data.

AI can help software developers by providing more accurate and actionable analytics and reporting tools, using machine learning techniques to analyze data, identify issues, and provide insights. For example, "Amazon" has developed an AI-driven analytics and reporting tool called CodeGuru, which can automatically identify performance issues and provide code optimization suggestions. Similarly, Splunk has developed an AI-driven analytics and reporting tool called IT Service Intelligence, which can automatically detect security threats and provide incident response solutions.

robot




Why software developers are still essential

As mentioned in the preceding, AI can help software developers in many ways, but it cannot replace them. Software developers are still essential for creating, maintaining, and improving computer systems. Software developers need to have domain knowledge, creativity, problem-solving skills, and ethical awareness that AI cannot replicate. They also need to collaborate with other stakeholders, such as users, clients, managers, and designers, to ensure that the software meets the needs and expectations of the end-users.

As of now, AI is not a competitor but a collaborator for software developers. AI can help software developers save time and effort on repetitive and tedious tasks while allowing them to focus on more complex and creative aspects of software development. It can also help software developers learn new skills and technologies, as well as discover new opportunities and challenges in the field. It can make software development more fun and rewarding for software developers.


Conclusion

AI is a fascinating and rapidly evolving field of computer science that aims to create machines and systems that can perform tasks that normally require human intelligence. However, AI as of now is not a threat to software developers, nor can it usurp them in the next 10 years. In fact, AI can be seen as a powerful ally and a valuable tool for software developers, as it can help them improve their productivity, quality, and innovation. In this piece, we have explored some of the ways that AI can assist software developers in the software development process.

We have also explained why software developers are still essential for creating, maintaining, and improving computer systems. There is though, a looming existential question - for how long can this supposed synergy or constructive collaboration last?


The After Thought

The conventional idea of "writing a program" may be heading for extinction. That statement may sound blatant and too hyperbole but hear us out. For all but very specialized applications, most software as we know it today, will be replaced by AI systems that are trained rather than programmed. In situations where one needs a simple program, those programs will themselves, be generated by an AI rather than coded by hand - after all, not everything will require a model of billions of parameters running on a cluster of very bespoke CPUs.

The bulk of software development is rooted in classical Computer System Science - programming, algorithms, systems, data structure, and programming languages. And in this endeavour, the ultimate goal is to reduce an idea to a program written by a human (source code) in a language like Java, C++, C#, Python, JavaScript, or similar. The basic idea is to express the source code in a human-readable and human-comprehendible program. Who is to say LLMs with trillions of parameters and more advanced CPU clusters won't be able to do this in the very near future - We won't bet against it.

This prediction might on the surface sounds farfetched but if you think of the earliest pioneers of computer science, emerging from electrical engineering, stridently believed that all future computer scientists would need to command a deep understanding of semiconductors, binary arithmetic, and microprocessor design to understand software. Fast forward to today and is a sure bet that most people who are writing software have very little or no clue of how a CPU actually works, let alone the physics underlying transistor design. One can easily connect the dots and conclude that computer scientists of the future will be far removed from the classical definition of "software" that they would be hard-pressed to reverse a "linked" or implement a "Quicksort". This type of education will be so antiquated it will be likened to teaching engineering students the basics of using a slide rule. The latter was killed stone death by electronic calculators.




Watch The Video