title: What are advantages and disadvantages of dynamic type in Ruby?
body: <p>Let's say I have a class called Tool:</p>
  
  <pre><code>class Tool
      def initialize( name, weight )
          @name = name
          @weight = weight
      end
  
      attr_reader :name, :weight
      attr_writer :name, :weight
  
      def to_s
          name + " " + weight
      end
  end
  </code></pre>
  
  <p>But this <code>Tool</code> can be a person if I want to:</p>
  
  <pre><code>hammer = Tool.new( "Hammer", 14.5 )
  pp = Tool.new( "first", "last" )
  </code></pre>
  
  <p>It's flexible because I can create one type and use for multiple purposes. However, if user accidentally makes a typo, it will definitely lead to wrong data type, how can we track the issue?<br>
  What are the advantages and disadvantages of this idea?  </p>