Once you identify idiomatic patterns in code, the next step is to harvest and use them. Understanding the relationship between design and code can facilitate the discovery of reusable code. In Part-1 learn The relationship between code and design. In Part-2 learn two techniques for harvesting idiomatic patterns: capturing patterns as APIs and using metaprogramming techniques