Software development has been done manually for decades, but with how technology has evolved this could change in the future. The fundamental method for explicit programming has remained the same over the years: profoundly think about a problem, come up with an algorithm, then you give the machine the instructions to execute the plan. This has been essential to the mainframe of phones, computers and helping major companies, like Microsoft, evolve.
Software Development, over the last several decades, has shown a similar pattern to technology evolution. Between the 90’s and early 2000’s, the way software was created and deployed, it did not fundamentally progress despite the growth and transformation to IT that the internet brought. As a result, developers from the 1990’s can recognize the landscape of the tools and processes because it is generally the same, just upgraded. Microsoft for example, created Visual C++ 1.0 in 1993 and it has now rebranded to Visual Studio as a richer version.
Within this recent decade, development and deployment of software is changing immensely where most project software have some kind of Agile with a decent-test suite. With this, some projects will release new versions multiple times per month and some several times per day. “Moving forward from the old, waterfall style to Continuous Integration (CI), Continuous Deployment (CD) and embracing DevOps, new features are introduced faster, delivering competitive advantage and responding more quickly to user needs” (Greg Law). As a result, software is being produced at an all-time high, but with more software comes more complexity.
Test Driven Development (TDD) and CI mean more testing and with more testing comes more test failures. Most of the failures can be benign, but with the number of tests that need to be run, there is not always time to investigate them all. However, somewhere in those failures is one that matters and will affect the entirety of the production. These problems are essentially the sub-problem to a wider issue that the software being created is extremely complicated. The software engineering profession has advanced, especially over the past decade. Although, software developer teams need to find more ways to understand the software more into what it did rather than what they would it would do. This can be done more easily now with the number of new technologies and tools available where they understand the coding better to quickly identify testing and production.
New technologies exclusively impact our daily lives – if you need think about your full day, you have an interaction with at least two technologies each day. Together, they represent the many changes in how we think about software development and how it has advanced. Artificial Intelligence (AI) has outperformed traditional software across a wide array of tasks and may finally deliver the intelligent systems that have confounded computer scientists. Despite the deep learning hype, many observers miss the biggest reason to stay positive about the future: it will require coders to write very little actual code. With AI in place, developers will no longer need to design a unique algorithm for each problem and be able to generate datasets that reflect behavior while managing the training process. We are heading in the direction where most coders will be teaching computers to write their own program, rather than creating the code themselves.
I bet you’re wondering, what exactly does the future hold for software development? These 4 things are what we must look forward to and expect in the near future:
- Programming and data science will progressively congregate. Most software will now depend on data models to provide core thought abilities and clear logic to interact with users and understand results. The question of deciding between AI or traditional approach will increasingly be a thought. Some systems will end up requiring both.
- AI practitioners will make a difference. AI is a difficult task and AI developers will be one of the most valuable resources for software companies in the future. Demand for traditional codes will not decline but those wanting to remain in the forefront must begin to experiment with AI.
- The AI toolchain needs to be constructed. As stated by Matt Bornstein, Gil Arditi said “Machine learning is in the primordial soup phase. It’s similar to database in the early ‘80s or late ‘70s. You really had to be a world’s expert to get these things to work.” AI models are difficult to explain and the tools to address that issue will reveal potential AI developers.
- Become content with unpredictable behavior. As AI is still in the beginning stages of development, many need to understand the possible outcomes that it can withhold. AI acts as a living, breathing system and new tooling will make them behave more like explicit programs, mainly in safety-critical settings.
No technology or technique will make problems with software development go away but what is to come in the next generation of tools, will surely help.