Software Craftsmanship vs Software Engineering
Summary
TLDRIn this video, Dave Farley explores the debate between viewing software development as a craft or an engineering discipline. He reflects on his own career, where he initially saw himself as a craftsperson, creating software through honed skills. However, as he worked on complex projects, he began to appreciate the scientific rationalism and problem-solving approach characteristic of engineering. Farley critiques the idea that software development is merely a craft, arguing for the importance of engineering principles to ensure quality and safety in software. He discusses the historical context, including the software crisis and the evolution of software engineering, and emphasizes the need for constraints and iterative design to truly create high-quality software.
Takeaways
- 🔧 Early in his career, Dave Farley felt his work didn't align with the traditional definition of engineering.
- 👷♂️ Some organizations prefer to view software development as a craft, emphasizing the artisanal skills of the developers.
- 🚀 Dave's perspective shifted during a challenging project, leading him to consider software development as a form of applied scientific rationalism, akin to engineering.
- 🤔 He questions the rejection of the engineering label in software development, suggesting it might have been hasty.
- 👩🚀 Margaret Hamilton, a pioneer in software engineering, coined the term to emphasize the critical nature of software in space missions, like Apollo.
- 🌐 The first software engineering conference by NATO aimed to define and promote software engineering as a discipline to address the 'software crisis' of complexity.
- 🛠️ Despite the growth and commercial pressures, some view engineering in software as synonymous with heavy bureaucracy and missteps.
- ✂️ The agile movement and the software as craft philosophy emerged as reactions to rigid engineering approaches.
- 📜 Dave critiques the narrow view of software as a craft, arguing that it overlooks the need for a structured, engineering-like approach to problem-solving.
- 🔄 He advocates for an engineering mindset that values iterative design, learning, and the ability to make incremental improvements to software.
- 🔄 The script concludes by suggesting that software engineering should be about making high-quality software that is easy to change and improve, rather than being constrained by a pure craft perspective.
Q & A
What early job titles did the speaker have, and how did they feel about their work?
-The speaker held job titles like Junior Engineer and Software Engineer at the start of their career, but at the time, they didn’t feel like what they were doing was true engineering.
How did the speaker’s perspective on engineering evolve over time?
-The speaker initially worked in places that rejected the term 'engineering' and instead saw themselves as craftspeople. Later, after working on challenging projects, the speaker began to think of software development as a practical form of scientific rationalism, which aligned more with the idea of engineering.
Who coined the term 'software engineering' and in what context?
-Margaret Hamilton coined the term 'software engineering' while leading a team at MIT developing flight control systems for the Apollo missions, emphasizing the critical importance of their software for the astronauts’ lives.
What was the 'software crisis' mentioned in the script?
-The 'software crisis' occurred as computers became more complex, leading to difficulties in managing software systems. The crisis drove discussions about how to establish software engineering on a firmer, more effective foundation.
Why does the speaker believe the idea of software engineering became discredited?
-Software engineering became discredited because it was often confused with heavy, bureaucratic approaches that failed to deliver good software, particularly during the 1980s and 1990s.
What does the speaker suggest is a key problem with the idea of 'craft' in software development?
-The speaker believes that while craft is valuable, it can be subjective and lacks the structured guidance needed to differentiate between good and bad solutions. Engineering, with its constraints and iterative processes, offers clearer paths to effective results.
How does the speaker define 'well-crafted' or 'high-quality' software?
-The speaker defines high-quality software as modular, cohesive, well-separated in concerns, abstracted where necessary, and loosely coupled, all of which facilitate easier and safer changes over time.
Why does the speaker think the production aspect of traditional engineering doesn’t apply to software?
-Unlike physical products where production is a challenge, software is entirely about design. Once the design is complete, software can be replicated at zero cost, meaning traditional production issues are irrelevant.
What analogy does the speaker use to explain the engineering process in software?
-The speaker compares software engineering to design engineering (like that in car or spaceship design), where iterative experimentation, simulation, and controlled steps are used to learn and refine solutions.
How does the speaker conclude the debate between being a craftsperson versus an engineer in software development?
-The speaker concludes that both craft and engineering have value, but engineering provides the necessary structure and constraints to guide effective solutions. They advocate for embracing the engineering mindset for better outcomes.
Outlines
Dieser Bereich ist nur für Premium-Benutzer verfügbar. Bitte führen Sie ein Upgrade durch, um auf diesen Abschnitt zuzugreifen.
Upgrade durchführenMindmap
Dieser Bereich ist nur für Premium-Benutzer verfügbar. Bitte führen Sie ein Upgrade durch, um auf diesen Abschnitt zuzugreifen.
Upgrade durchführenKeywords
Dieser Bereich ist nur für Premium-Benutzer verfügbar. Bitte führen Sie ein Upgrade durch, um auf diesen Abschnitt zuzugreifen.
Upgrade durchführenHighlights
Dieser Bereich ist nur für Premium-Benutzer verfügbar. Bitte führen Sie ein Upgrade durch, um auf diesen Abschnitt zuzugreifen.
Upgrade durchführenTranscripts
Dieser Bereich ist nur für Premium-Benutzer verfügbar. Bitte führen Sie ein Upgrade durch, um auf diesen Abschnitt zuzugreifen.
Upgrade durchführenWeitere ähnliche Videos ansehen
5.0 / 5 (0 votes)