In this talk, we will learn about the evolution of software development over the last 50 years and how it has led us to the patterns we use today. Understanding the past allows us to appreciate the present, and we will look at the approaches through each decade since the 1970s. We will take a quick look at how languages have evolved from assembler to flat procedural languages like C to attempts to model real world subjects with objects. Why rising complexity in software has driven us to look at the way we test our systems. How provisioning has changed from a manual install with floppy disks to modern infrastructure as code and why demand and the requirements for elasticity have driven this need. We will also take a quick look at some predictions for the future and the direction that the industry is heading.
Takeaways: By the end of this talk, you will have a keen appreciation of the current patterns in modern software development and the history of their evolution including: Packages and package management, Modern security, Code level testing, Integration testing, Infrastructure as code, Running applications at scale, Designing for failure, Continuous deployment