Sunday, September 17, 2023

Software , Automation and Jobs

 

Software development Industry and Development of Software

Gartner predicts that in 2023, software will grow by 12.3% and  reach $ 891.39 bn and IT Services will grow by 9.1% and reach $ 1.36v tn. In 20124, the prediction is that the growth will be 12.3% and 9.1% respectively. Software market would be at $ 1 trn and the IT services market would be at $ 1.5 trn. The IT services segment will continue its growth trajectory through 2024, largely driven by the infrastructure-as-a-service market, which is projected to reach over 30% growth this year. For the first time, price is a key driver of increased spend for cloud services segments, rather than just increased usage.

 

According to Nasscom, In FY2023, India’s technology industry revenue including hardware is estimated to cross $245 Bn (8.4% y-o-y growth), an addition of $19 Bn over last year. Exports, at $194 Bn, are expected to grow at 9.4% in reported currency terms, and 11.4% in constant currency terms. Domestic technology sector is expected to reach $51 Bn, growing at 4.9% y-o-y. In rupee terms, domestic tech revenues is expecting a 13% y-o-y growth on the back of continued investments by enterprise and the government. The industry continues to be a net hirer, adding nearly 3 lakh employees, taking the total employee base to ~5.4 Mn (5.7% y-o-y growth), strengthening its position as the 'Digital Talent Nation' for the world. From India IT exports were at $ 150 bn in FY20, $ 151 bn in FY 21 and $ 176 bn in FY 22.

Software industry has given a big boost to the Indian economy. The fast development of industry has helped India to Breakout of Hindu rate of growth.  It has accelerated the exports from India. India as a Global brand started shining after the fast growth of the industry.

When I joined the industry as a management consultant  1985, the industry size was only USD 100 million. In the software company all the new joinees had to undergo 10 weeks of software development training. Training was rigorous and it was focussed on job readiness. I also  underwent this training despite I was in the Management consultancy function.

 

In 1985, only two companies had 60% market share in the Indian Market. Tata Burroughs Limited and  Tata Consultancy Services (TCS). TCS was the Pioneer in development of the industry and many from TCS went to start up software companies and grew them to large size. Since the company went public very late, it was not very famous like listed companies from India. Only after TCS got listed, the company started growing faster. In the Initial years, TCS was competing on  low cost strategy and Infosys was competing on premium pricing strategy. If TCS was listed in 1995, today, the company would have become the Top software company in the world.

TCS realised that the services provided by TCS were no less than competitors. It Started pricing IT services appropriately which increased the margins as well as more client wins.

In the initial years of the industry, the revenue was mainly from sending software coders abroad. The local operations were subsidized by revenue from International operations. In India, the companies were in the learning curve. The Education Institutes were not ready to provide trained people to work in the software industry. The candidates were recruited from Leading Institutes. The industry players took lot of initiatives to train manpower and ensured that the right manpower was available. This has helped to bridge the Talent pool. Now, there are lot of training institutes and further, Companies have tied up with Education Institutes to train manpower and included the relevant subjects in the curriculum.

In 1991, we participated in an  All India Young Manager’s competition on strategies for  accelerating the exports from India. We made our presentation on IT Services Exports with the  assumption that the industry would grow by 25%CAGR for another 20 years and how this would help in accelerating the exports from India. Despite assumptions  were explained well and in very clear terms, none of the judges were willing to believe that the software industry would grow at a fast pace. They argued against our assumptions and not confident of the Industry achieving the target.

Later, We were very happy that our predictions came true. The concept of automatic software development was just picking up at that time. Software engineering concept was taking off. About 5 to 10% of software coding could be automated at that time.

 

Now with the  advent of AI,  software coding can be automated to a very large extent. I heard one of the Heads of the software company saying that 90 percent of software development could be automated going forward. But there are others saying that new jobs would be created and not much to worry. According to Tech Republic While AI and ML will certainly change the way software is developed in the future, they are unlikely to replace human developers entirely.

Software automation tools are software programs or platforms designed to automate various tasks and processes in the software development and IT operations lifecycle. These tools help organizations improve efficiency, reduce errors, and accelerate the delivery of software products and services. There are various types of software automation tools, each serving a specific purpose. Here are some common categories of software automation tools:

Continuous Integration and Continuous Deployment (CI/CD) Tools:

Jenkins

Travis CI

CircleCI

GitLab CI/CD

GitHub Actions

Configuration Management Tools:

Ansible

Puppet

Chef

SaltStack

Containerization and Orchestration Tools:

Docker

Kubernetes

OpenShift

Infrastructure as Code (IaC) Tools:

Terraform

AWS CloudFormation

Azure Resource Manager (ARM) Templates

Test Automation Tools:

Selenium

Appium (for mobile app testing)

JUnit (for Java)

pytest (for Python)

TestNG (for Java)

Monitoring and Logging Tools:

Prometheus

Grafana

ELK Stack (Elasticsearch, Logstash, Kibana)

Nagios

New Relic

Security Testing Tools:

OWASP ZAP (for web application security)

Nessus (for vulnerability scanning)

Burp Suite (for web application security testing)

Metasploit (for penetration testing)

Performance Testing Tools:

Apache JMeter

LoadRunner

Gatling

Locust

Version Control Systems:

Git (e.g., GitHub, GitLab, Bitbucket)

Subversion (SVN)

Build Automation Tools:

Apache Maven

Gradle

Ant

Workflow Automation Tools:

Apache Airflow

Zapier

Microsoft Power Automate

DevOps Collaboration and Communication Tools:

Slack

Microsoft Teams

Mattermost

Atlassian Confluence and Jira

Code Review and Quality Assurance Tools:

SonarQube

Crucible

ESLint (for JavaScript)

Pylint (for Python)

Release Management Tools:

GoCD

Spinnaker

Database Deployment and Versioning Tools:

Liquibase

Flyway

These tools can be used individually or integrated into comprehensive DevOps toolchains to automate and streamline the software development and deployment processes. The choice of tools depends on the specific needs and technologies used by an organization or project.

 

One of the strategies  to follow in accelerating the development of Software is Low code and no code. Low code and no code are two approaches to software development that aim to make it easier for people with varying levels of technical expertise to create software applications.

 

Low Code: Low code platforms provide a visual interface and pre-built components or templates to simplify the application development process. These platforms are designed for developers but require less manual coding than traditional development. Developers can use drag-and-drop interfaces to create user interfaces, workflows, and logic, often supplemented with some coding when necessary. Low code platforms are useful for accelerating the development of applications while still providing flexibility for more advanced coding when needed.

 

No Code: No code platforms take simplification a step further by targeting users with little to no coding experience. These platforms often offer a completely visual approach to building applications, relying on pre-built components, templates, and a simple interface. Users can create applications by connecting elements through intuitive interfaces, reducing the need for traditional coding skills. No code platforms are typically used for automating business processes, creating simple apps, and prototyping.

Both low code and no code platforms aim to democratize software development, making it more accessible to a broader range of people, including business analysts, designers, and subject matter experts. These approaches can help organizations speed up application development, reduce the backlog of IT requests, and empower non-developers to take a more active role in creating digital solutions.

 

The impact of automation and AI on software development jobs is a topic of ongoing debate and research, and there isn't a definitive percentage that can accurately predict how many jobs will be replaced.

Automation and AI in Software Development: Automation and AI have already started to transform various aspects of software development. This includes automated testing, code generation, bug detection, and even the creation of basic software components. AI algorithms can also assist in code reviews, optimize algorithms, and enhance software security.

Enhancing Efficiency: Rather than entirely replacing software development jobs, automation and AI are more likely to enhance the efficiency of software development processes. Developers can use these tools to automate repetitive tasks and focus on more creative and complex aspects of their work.

New Roles and Opportunities: While some routine programming tasks may become automated, there will be a growing demand for professionals who can design, implement, and maintain AI and automation systems. Roles such as AI developers, machine learning engineers, and data scientists are already in high demand.

Sector Variation: The impact of automation and AI on software development jobs may vary by sector. Some areas of software development, like web development, may see more routine tasks automated, while other areas, such as machine learning and AI itself, are likely to see significant growth.

Software is one of the sectors which creates lot of service and high paying jobs in the Economy. In this context, it would be appropriate to consider how to reduce the impact of AI on  reduction of Software Development Jobs.

Preventing the loss of software development jobs due to AI involves a combination of strategies that focus on upskilling, adapting to changing technology, and finding ways to work alongside AI systems. Here are some steps that can help mitigate the impact:

Continuous Learning and Skill Enhancement: Software developers should focus on continuous learning and skill enhancement. Staying up-to-date with the latest programming languages, tools, and frameworks can make you more valuable in the job market.

Specialization: Consider specializing in areas that are less likely to be automated. For example, roles that require creative problem-solving, architecture design, and complex decision-making are harder for AI to replicate.

AI Collaboration: Learn how to work with AI tools and platforms. Familiarize yourself with machine learning and data science concepts, as they can complement your software development skills.

Adapt to New Roles: Be open to shifting roles within the software development field. AI can handle routine tasks, so software developers may take on more strategic and creative responsibilities.

Soft Skills: Develop soft skills such as communication, teamwork, and leadership. These skills are often difficult for AI to replicate and can make you more valuable in collaborative settings.

Ethical AI Development: Become knowledgeable about ethical AI development practices. Being able to ensure that AI systems are built and used responsibly is a valuable skill.

Freelancing and Consulting: Consider freelancing or consulting, as this can provide more job security in a rapidly changing job market. Many companies seek specialized talent on a project basis.

Entrepreneurship: Explore entrepreneurial opportunities by creating your own software products or services. This can give you more control over your career and income.

AI is a tool that can enhance productivity and efficiency in software development, but it is unlikely to completely replace the need for skilled human developers. By adapting, upskilling, and focusing on areas where human expertise is essential, you can reduce the risk of job loss in the software development field due to AI advancements.

In conclusion, We will witness rapid developments in IT sector in the years to come which will change the complexion of the industry. The IT companies should be agile to adapt themselves to the emerging trends and change the business models appropriately. The employees in the industry should continuously reskill, upskill and rightskill to remain relevant.