Due Jan 15, Noon
Read Part I of the test “Modern Software Engineering”
Purpose
This assignment asks you to reflect on how the reading reshapes the idea of engineering in software, especially in contrast to craft-based thinking. Rather than summarizing the text, you should focus on how the author’s arguments change or sharpen your own perspective on software development and engineering practice.
Prompt
After completing the reading, write a reflective essay that addresses how your understanding of software engineering has evolved. In your response, connect the author’s ideas to your own experiences (as a student, programmer, or technology user) and explore how engineering differs from craft in the context of software.
Your essay should meaningfully engage with at least four of the following themes:
- Engineering vs. Craft
- What does the author mean by the “limits of craft”?
- Why might craft-based thinking feel appealing, yet be insufficient for large-scale software systems?
- Precision and Scalability
- Why does human-scale perception and manual testing fail in software systems?
- How do automation and testing change what “quality” means in software?
- Design Engineering vs. Production Engineering
- Why does the author argue that production is not the main challenge in software?
- How does this shift the responsibility of software engineers?
- Separation of Concerns and Modularity
- How do modularity, abstraction, and compartmentalization help manage complexity?
- Why are these ideas essential for engineering at scale?
- Empiricism and Learning from Failure
- What role do experimentation, testing, and failure play in engineering?
- How is this different from trying to “get it right the first time”?
- Creativity in Engineering
- How does creativity coexist with rigor, testing, and discipline?
- Why is creativity still essential even in highly engineered systems?
- Personal Perspective Shift
- How did this reading challenge or confirm your previous assumptions about programming or engineering?
- Has it changed how you think about writing code, testing, or designing systems?
Requirements
- Length: 750–1000 words
- Tone: Reflective and analytical (not a summary)
- Evidence: Reference specific ideas or examples from the reading (quotes optional, paraphrasing encouraged)
- Voice: First person is encouraged
Evaluation Criteria
Your essay will be evaluated on:
- Depth of reflection and insight
- Clear engagement with the reading’s core ideas
- Thoughtful connections between concepts (e.g., craft vs. engineering, precision vs. human limits)
- Coherence and clarity of writing
- Evidence of perspective growth or intellectual movement
Guiding Question (Optional)
If engineering is “the application of an empirical, scientific approach to solving practical problems,” what does that imply about how you should approach writing software?
