What was the "software crisis" of the 1960s, and how did it lead to the creation of software engineering? What problems did this new discipline aim to solve?

The software crisis referred to the challenges that faced people in the 1960s in maintaining and building efficient and useful software. As systems became more complex, issues like poor quality code, cost overruns, and project delays began to appear due to numerous bugs and operational failures: a result of employing old and inefficient methods in fulfilling the complex demands of new software. In response to the crisis, software engineering emerged to address the challenges, officially first highlighted at the NATO software engineering conference. It aimed to introduce structured ways of building software and ensure quality.

What are Agile methods and the Waterfall model in software development, and how are they different?

Agile methods involve an iterative approach of breaking a project down into small pieces called sprints. Each sprint takes planning, development, testing, and review. On the other hand, Waterfall is a linear approach where development occurs in strictly-defined phases. Each phase must be completed before the next one begins, making going back difficult.

Why does Netflix intentionally shut down its servers randomly, and how does this help their software?

Netflix intentionally shuts its servers down randomly as part of a practice known as "chaos engineering." This approach involves deliberately introducing failures to their systems to test the robustness of their software. They do that to identify weaknesses before they lead to actual outages or performance issues in production, making tracking their software and updating it easier and less stressful.

What is open-source software, and why do big companies like Google, Microsoft, and Amazon contribute to it?

Open-source software is software that is available for the public to view, modify, and contribute. Big companies contribute to open-source software mainly to cooperate with each other and to attract talented developers. Even if it seems counter-intuitive for commercial companies to share their products for free with the public, it's beneficial because it creates a baseline between different competitors to operate on individually. Sharing their software also ensures that it is always inspected for free by many experts for bugs and vulnerabilities.

Why can maintaining software sometimes be more costly than building it initially, and how does technical debt contribute to these higher maintenance costs?

Because shortcuts made during the development process will snowball into becoming a mystery to deal with later. As software ages, it often becomes associated with new systems and environments that weren't put into consideration during the building period. Technical debts (or design debts) resulting from poor code quality accumulate as a result, creating many obstacles to implementing new features or fixing bugs.


References:

GeeksforGeeks. (2024, May 23). Software Crisis Software Engineering. GeeksforGeeks.

Wikipedia contributors. (2024, September 15). Software engineering. Wikipedia.

Wikipedia contributors. (2024a, August 7). Software crisis. Wikipedia.

Wikipedia contributors. (2024c, September 30). Agile software development. Wikipedia.

Wikipedia contributors. (2024c, September 20). Chaos engineering. Wikipedia.

Whiting, D. (2022, September 13). Why Do Enterprises Use and Contribute to Open Source Software - Linux Foundation.

SonarSource. (2024, April 3). technical debt developer’s guide. Sonar.