These comments are only related to what Mike has done.  Nothing to do with my expertise!
def initialize: he added Time.now when creating the project.  Id generated from a separate (private) method. (@id= self.class.generate_id). Also uses self.class.add_project(self).