Hacker Fellows Technical Program Overview

In the 2019 Hacker Fellows Bootcamp you’ll have an opportunity to experience a workflow similar to that of a real production development team while learning the principles of building maintainable software.

The curriculum will consist of four modules: Test-Driven Development, Refactoring Techniques, Object-Oriented Design and Database Design/Object-Relational Mapping.

During the first week of the class, which is actually a short 3-day week, the fellows will be divided into teams to work on a short but challenging project. At the beginning of the next week, you’ll form new teams, and each team will “inherit” another team’s project. This will simulate the real-world challenge of having to work with other people’s unfamiliar code. This regrouping and project handoff will happen at the start of each full week.

Throughout each week your job will be to apply the principles taught that week (e.g. object-oriented design principles) to make improvements to the codebase, with the object being to leave the codebase at the end of the week cleaner than you found it. At the end of each week you’ll be asked to do a presentation with your team about what you did and what you learned.

Weekly Agendas

Week 1 (May 29-31, Wednesday through Friday)
Monday: Ruby crash course, 3-day project kickoff
Tuesday: Ruby strings, symbols and data types
Wednesday: Ruby objects

Week 2: Test-Driven Development
Monday: Intro to testing with Ruby
Tuesday: Four-phase testing, assertions
Wednesday: Factories and fixtures
Thursday: Test-driven development principles, red-green-refactor
Friday: Common Test Smells and how to fix them

Week 3: Refactoring Techniques
Monday: How to perform refactorings safely
Tuesday: Extract method, extract class
Wednesday: Replace conditional with polymorphism
Thursday: Replace loop with pipeline
Friday: Extract variable, change function declaration

Week 4: Object-Oriented Design

Monday: Translating business requirements into object models
Tuesday: Inheritance and composition
Wednesday: Dependency injection
Thursday: Loose coupling
Friday: Refactoring procedural code into object-oriented code

Week 5: Database Design and Object-Relational Mapping
Monday: Basic SQL commands
Tuesday: Creating tables, foreign key constraints, unique constraints
Wednesday: Translating business requirements into data models
Thursday: Object-relational mapping
Friday: The Active Record pattern