 <p>The short answer: Objects. Object oriented programming allows you to encapsulate data so that it doesn't pollute the global namespace. As your projects grow larger, it becomes unmaintainable to have all your data in the global namespace. Objects allow you to group data and methods into meaningful units, which can then be re-used and maintained more easily.</p> <p>So for instance with the example you provided we could make deck and hand objects. This then allows us to create multiple deck and hands easily because these objects encapsulate and manage their data.</p> <p>As a rough outline of how you might organize your classes / methods:</p> <pre><code>class Deck def shuffle end def draw_hand end end class Hand end class Card end </code></pre>