Software development has a surprisingly rich history. The next section is a brief timeline showcasing the evolution of software development methods through the ages.
Before software development
became a craft with a history and doctrine, the concept of software first needed to be created! The inception of software development is often traced back to Charles Babbage the mid-1800s. His analytical engine was the world’s first computer hardware. Software was delivered to the analytical engine through punch cards which denoted computations the machine would execute.
Countess Ada Lovelace is often credited with writing the first software algorithm. Lovelace was a mathematician and colleague to Charles Babbage. Between 1842 and 1843, Lovelace produced with an elaborate set of notes on the analytical engine. These notes contain what many consider to be the first computer program. She also developed a vision of computers to go beyond mere calculating or number-crunching.
In 1936 Alan Turing invented the Turing Machine. A device which has two primary components: a strip of tape divided into cells and a head which points to the tape cells. The device can read or write to the tape cells and move the head to the next or previous cell. Turing later published a paper: “On Computable Numbers, with an application to the, which became the foundation of computer science. In the paper Turing presented that a Turing machine could solve any problem that could be described by simple instructions encoded on a paper tape. One Turing Machine could calculate square roots, whilst another might solve Sudoku puzzles.
Today and the future
Software development today primarily builds off the workflows established in the 90s open source world. Third party repository hosting services like Bitbucket have become central hubs for teams to use distributed asynchronous communication patterns around. Agile management methods are applied on top of these technologies to help coordinate and manage integration and release.
Agile Software Development
In 2001 a group of software developers frustrated with the existing cumbersome management system, gathered and published the the agile manifesto. The ‘Agile’ method is a largely popular modern software development paradigm. Agile arose out of frustration for the ‘monumental’ methodologies of the past. Methodologies like Waterfall and TQM were born in the slower moving, less forgiving industries of physical goods manufacturing.
Software is a much more forgiving and fluid end product than manufacturing. Agile takes advantages of these properties and provides a complementary management methodology. Agile has been the driving force for development of the previously discussed features like CI/CD, Feature flags, and Microservices.
Adoption of Agile development practices has given rise to new disciplines of software development. DevOps is a modern field of software development which focuses on support and automation for supplementary software development tasks. ecommerce website
DevOps teams are primarily tasked to support and improve software developer efficiency. DevOps teams build tools to automate and maintain mundane software development chores like infrastructure maintenance.
Agile has been fantastic at optimising the development process. It has been so successful that Agile ideas and culture are continuing to expand to other areas of business like design and product development.