Experimental UI Design Course

Day 29 of 30

Day 29: Final Project Execution

Study (5 min): Review your project plan, set up workspace
Practice (40 min): Build your final experimental project
Create: Complete, polished experimental design piece

Start with the Weird

Don't ease into experimentation - dive deep immediately. Build the most experimental feature first. If your concept involves glitching typography, start there. If it's about generative layouts, begin with the algorithm. Establish the experimental core before adding conventional elements. This ensures your project maintains its edge even if you run out of time.

Iterate Rapidly

Experimental design thrives on quick iterations. Don't perfect the first approach - try three. Compare variations side-by-side. Save versions liberally. Document dead ends - they might become breakthroughs. Use git branches for radical experiments. The best solution often emerges from combining multiple attempts.

Execution Methodology:

// Rapid experimental development
class ExperimentalDevelopment {
  constructor(projectConfig) {
    this.config = projectConfig;
    this.experiments = [];
    this.currentBranch = 'main';
    this.startTime = Date.now();
  }
  
  rapidPrototype() {
    // Set timebox for each experiment
    const timeBox = 15 * 60 * 1000; // 15 minutes
    
    const experiment = {
      id: Date.now(),
      branch: `experiment-${this.experiments.length}`,
      startTime: Date.now(),
      concept: this.generateVariation()
    };
    
    // Auto-commit after timebox
    setTimeout(() => {
      this.evaluateExperiment(experiment);
    }, timeBox);
    
    return experiment;
  }
  
  generateVariation() {
    // Systematic variation of core concept
    const variations = [
      'extreme', 'inverted', 'minimal', 
      'maximal', 'broken', 'fluid'
    ];
    
    return variations[this.experiments.length % variations.length];
  }
  
  evaluateExperiment(experiment) {
    // Quick gut-check evaluation
    const criteria = {
      innovative: null,
      functional: null, 
      emotional: null,
      coherent: null
    };
    
    // Rate each on feel, not perfection
    Object.keys(criteria).forEach(criterion => {
      criteria[criterion] = this.quickRate(experiment, criterion);
    });
    
    experiment.score = Object.values(criteria)
      .reduce((a, b) => a + b) / 4;
    
    this.experiments.push(experiment);
    this.decidePath();
  }
  
  decidePath() {
    // Pick best direction and commit
    const winner = this.experiments
      .sort((a, b) => b.score - a.score)[0];
    
    console.log(`Pursuing ${winner.concept} direction`);
    this.mergeBranch(winner.branch);
  }
}

Polish Through Destruction

Experimental design doesn't need traditional polish. Instead of smoothing rough edges, amplify them. Make glitches glitchier. Push brutalism further. Exaggerate what makes your project unique. Polish should enhance the experimental nature, not sanitize it. Refined chaos is more powerful than accidental mess.

Test on Humans

Get your project in front of people quickly. Watch their reactions, not just their feedback. Do they lean in or pull back? Are they confused in a good way or bad way? Document these moments. The best experimental design creates visceral responses. If everyone likes it, you might not be pushing hard enough.

Key Takeaways