Cover of The Pragmatic Programmer by Andrew Hunt, David Thomas - Business and Economics Book

From "The Pragmatic Programmer"

Author: Andrew Hunt, David Thomas
Publisher: Addison-Wesley Professional
Year: 1999
Category: Computers

🎧 Free Preview Complete

You've listened to your free 10-minute preview.
Sign up free to continue listening to the full summary.

🎧 Listen to Summary

Free 10-min Preview
0:00
Speed:
10:00 free remaining
Chapter 2: A Pragmatic Approach
Key Insight 6 from this chapter

Prototypes and Post-it Notes

Key Insight

Prototyping in software development, mirroring industrial practices, involves constructing preliminary models to analyze and expose risks, facilitating early and significantly reduced-cost corrections. Prototypes are highly focused, designed to answer specific questions regarding architecture, new functionality, data structures, third-party tools, performance, or user interface design. While often code-based, prototypes can also be non-code artifacts like Post-it notes for workflows, whiteboard sketches for UI, or mock-ups created with paint programs, demonstrating their versatility in materials and form. The primary value of prototyping resides not in the produced code or artifact, but in the critical lessons learned from the investigative process.

When developing prototypes, certain details can be intentionally omitted to optimize for speed and cost. This includes correctness, often achieved by using dummy data; completeness, with functionality limited to specific inputs; robustness, with minimal or absent error checking; and stylistic elements like comments or extensive documentation. Prototypes' focus on specific aspects allows for the use of high-level scripting languages like Python or Ruby to quickly implement and test ideas, or to 'glue' existing components together. For user interfaces, specialized tools prioritizing appearance and interaction over underlying code are beneficial. The chosen language or tool can be discarded, as the prototype itself is disposable.

Architectural prototyping, sometimes without any code, concentrates on how the system's major components interrelate. This involves evaluating the clarity of responsibilities, collaborations, minimized coupling, potential for duplication, interface definitions, and data access paths, often uncovering unexpected challenges. A crucial caveat for code-based prototyping is to establish clear expectations: everyone must understand that the code is disposable, incomplete, and not ready for production. Misinterpretation can lead to management insisting on deploying the prototype, which is analogous to attempting to drive a balsa wood car in rush-hour traffic. If such misinterpretation is probable, the 'tracer bullet' approach, which creates a lean but production-ready skeleton, might be a safer alternative. Properly used, prototypes are invaluable for identifying and correcting problems affordably and early in the development cycle.

📚 Continue Your Learning Journey — No Payment Required

Access the complete The Pragmatic Programmer summary with audio narration, key takeaways, and actionable insights from Andrew Hunt, David Thomas.