docs: def start(self):
          """ Begins the job by kicking off all tasks with no dependencies. """
  
          logger.info('Job {0} starting job run'.format(self.name))
          if not self.state.allow_start:
              raise DagobahError('job cannot be started in its current state; ' +
                                 'it is probably already running')
  
          self.initialize_snapshot()
  
          # don't increment if the job was run manually
          if self.cron_iter and datetime.utcnow() > self.next_run:
              self.next_run = self.cron_iter.get_next(datetime)
  
          self.run_log = {'job_id': self.job_id,
                          'name': self.name,
                          'parent_id': self.parent.dagobah_id,
                          'log_id': self.backend.get_new_log_id(),
                          'start_time': datetime.utcnow(),
                          'tasks': {}}
          self._set_status('running')
  
          logger.debug('Job {0} resetting all tasks prior to start'.format(self.name))
          for task in self.tasks.itervalues():
              task.reset()
  
          logger.debug('Job {0} seeding run logs'.format(self.name))
          for task_name in self.ind_nodes(self.snapshot):
              self._put_task_in_run_log(task_name)
              self.tasks[task_name].start()
  
          self._commit_run_log()