Skip to content

sheybusta/incremental-development

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Incremental Development

<< Precourse | Home | UX/UI Design >>


"Nearly all Agile teams favor an incremental development strategy; in an Agile context, this means that each successive version of the product is usable, and each builds upon the previous version by adding user-visible functionality."

Incremental Development is a strategy for developing software. In this strategy you start with the simplest code you can possibly write to get things started. Often this is just empty files with the right names, in the right folders! Then in small steps you add more code so that each little step works, builds on top of the last step, and is a little closer to the end goal.

This strategy is sooooo important to learn because programming is hard. All developers (even your coaches!) make mistakes all the time. The best way to manage mistakes is to work in small, understandable steps and making sure that each step works before moving on.

Incremental Development is more about discipline than talent. Every minute you spend practicing this now will save you hours of debugging and make collaboration a breeze!

Contents


Planning and Collaborating

The main focus of this module is planning and collaborating on software projects. You've already seen all the pieces you need in the Precourse! To collaborate on a group project you will need:

  • A planning document (markdown)
  • A repository
  • Issues
  • labels, milestones and assignees
  • A Project Board
  • Pull Requests + code review

Wait, what?! HTML and CSS aren't even on that list!

Understanding why they are not on the list will give you a head start towards becoming a great developer. The difference between an ok developer and a great developer doesn't have to do with the languages, frameworks or technologies they use. It has to do with their discipline in planning, communication, and collaboration.

Your projects in this module may only use HTML and CSS, but the workflows you learn will be used all the way through the final project. It will go a little something like this:

expand/collapse

1. Understand the Project

Before diving into the code take some time with your team to understand what you will be building. It's easy to get in trouble later on if your team mates understands the project in different ways. You should be less concerned about finding the right answer, and more concerned about finding a shared answer.

In this module having a shared understanding of the project will mean creating a wireframe to describe how your website will appear to users.

2. Prepare your repo for collaboration

Now that you all understand what you will build, it's time to set up the group's project repository. Choose a repo owner, they will:

  1. Add everyone in your team as a contributor
  2. Add a LICENSE
  3. Create a README.md with a short description of the project you will build
  4. Create an empty development-strategy.md file

3. Write a Development Strategy

Get together with your team and discuss the wireframe, how will you break your website into steps and tasks? When you are done with this planning session your group repository should have a complete Development Strategy with large steps and smaller tasks.

You can take a look through the ./development-strategy folder of this repository to see some examples.

4. Prepare your repo for development

Now you have a plan, it's time to organize all of your tasks into issues on your repository:

  1. Create one milestone for each step in your strategy
  2. Create a label for each type of task in your strategy. in this module that will mean an html and a css label
  3. Create one issue for each task, classified with labels and milestones
  4. Set up a project board with 5 columns:
    1. Todo
    2. Blocked
    3. In Progress
    4. Ready for Review
    5. Done
  5. Move your issues to the Todo column.

Everything is set up! now all that's left is to ...

5. Claim, Branch, Review, Merge

Everything is planned and the repository is ready, it's time to start coding. You and your team mates will each work on one issue at a time, tracking your progress using the project board. You will be responsible for writing your code on a new branch, and your team mates will be responsible for reviewing and merging your code to main/master.

Your workflow will look something like this flowchart:

click to see the flowchart

claim, branch, review, merge



TOP


Module Projects

Projects in Incremental Development will all have a development-strategy.md and be developed collaboratively.

expand/collapse

In the first weeks it's likely that you'll spend as much time figuring out how to publish and turn in your projects as you will spend building them. This is totally normal and OK! Working like a developer takes time and practice to get good at, and at this point in your learning it's even more important than mastering HTML & CSS!

So on days when you find yourself spending a couple hours struggling with branches, trying to push your homework or create an issue, remind yourself that it's all time well spent. Mastering these skills now will free your time later to focus on studying the more interesting and challenging skills in this course.

Developing a working web site is not enough! You will be expected to submit a development strategy and complete repository, cleanly developed with one branch per step. The goal of these projects is to practice planning and building clean projects in a structured way. The goal of these projects is not to build the fanciest most beautiful website, to use all the latest CSS tricks, or to use cool libraries.

Your repository will also need a README file explaining your project to new users. You will be assessed not only on your working website, but also on the quality of your code, the correctness of your branches, and the completeness of your README.

Here's a short list of do's and don'ts that can help you stay on track:

Do

  • ... pay as much attention to your branches & repository as your code
  • ... completely finish one step of the project before moving on to the next
  • ... be very careful about your CSS classes, selectors and id's
  • ... properly format your code
  • ... find the simplest solution to each step of the project

Don't

  • ... think that your site can be pretty enough to make up for messy code
  • ... make any steps of your project do less or more than is described in the strategy
  • ... move on to the next step before the previous one is finished

TOP


Learning Objectives

Skills and concepts you will learn in this module

more info

Incremental Development

  • Breaking large web-sites into small, manageable steps
  • Reading and writing development-strategy.md files

Git

  • Pulling & pushing specific branches
  • Atomic commits with meaningful messages
  • Branching and merging

GitHub

  • Using Pull Requests for code review
  • Using Project Boards to track projects
  • Using Issues to organize and discuss tasks

Command Line Interface

  • Navigating directories: cd, ls, pwd
  • Creating & removing files and directories

Visual Studio Code

  • Using plugins for efficient development
  • Using linters & code formatters (plugins)
  • Using the integrated terminal

DOM: Basic Life-cycle

  1. Source Code: HTML & CSS files you edit in VSC
  2. Document Object Model: What you see in the DevTools inspector
  3. Rendered Page: What you see in the main browser window

Browser DevTools

  • Finding the source for a website
  • Inspecting a specific DOM Element
  • Replicating styles and layout

HTML & CSS

  • Use clear and consistent code formatting
  • Meaningful names for classes & id's
  • Correct usage of CSS selectors
  • Responsive, mobile first development
  • Accessible Rich Internet Applications (ARIA)

TOP


Suggested Study

hackyourfuture.github.io/study

References, Tutorials and exercises to help you through this module

more info

https://htmlpreview.github.io/ - see a live demo of any branch

Incremental Development

Git & GitHub

Command Line Interface

Writing READMEs

DevTools and the DOM

HTML & CSS

Collaborating on GitHub


TOP


Week 1

This week will be a crash-course on how to plan, organize, and develop a software project. You will work individually to reverse-engineer a website, with finished code as a starting point.

more info

Before Class

Do you have any questions from last week? Add the question label to an issue in your class repo so your coaches know what to review!

During Class

In class you will practice the entire Planning and Collaboration workflow by building a new markdown ice-breaker repository with your group.

Before Break

Guided by a coach, each study group will complete steps 1-4 of the Planning and Collaboration workflow:

  1. Understand the Project
  2. Prepare your repo for collaboration
  3. Write a Development Strategy
    1. You can use the ice-breaker-strategy.md as a starting point
  4. Prepare your repo for development

After Break

Guided by a coach, each study group will practice step 5 of Planning and Collaboration. You will each take turns sharing your screen and practicing the Claim, Branch, Review, Merge workflow.

  • Did you get conflicts? which conflicts and how did you fix them?
  • What was confusing or frustrating about Code Review?

It's more important that you take the time to understand why this workflow is important than that you close all of your issues. Take all the time you need to ask questions of your coach and discuss what you are doing. Your group can always organize a study session to finish the repo during the week.

After Class

individual project

This week's project is to study the acme-web-design tutorial from Traversy Media.

Writing the same code as Mr. Traversy's code is not enough! You are expected to submit your code from his tutorial in a new repository on your GitHub account generated from this starter template. Your repository should be named acme-web-designn and should be cleanly developed with one branch per step. It's up to you to write the development strategy!

A good strategy to for completing this project is the three-step:

  1. follow the tutorial studying the code and understanding the finished project.
  2. study the finished code and break it down into steps, write your development strategy and prepare your repo.
    1. it's ok if your strategy is not the same as the tutorial's!
  3. build the project again following the Claim, Branch, Review, Merge workflow. you can refer back to the tutorial as much as you need
    1. this week you can merge your own issues without code review because it is an individual project

Issue Checklist

Copy-paste this checklist into a new project issue and move your issue to the project board, your issue should have:

  • individual label
  • project label
  • week-1 label
  • incremental-developement milestone
- [ ] [repo](https://github.com/_/_) (with a complete README)
- [ ] [live demo](https://_.github.io/_)
- [ ] [development strategy](https://github.com/_/_/tree/master/development-strategy.md)
- [ ] [project board w/ labeled & assigned issues](https://github.com/_/_/projects/1)
- [ ] [issues closed by PRs](https://github.com/_/_/issues)
- [ ] [one branch per step](https://github.com/_/_/network)
- [ ] [one closed PR per step](https://github.com/_/_/pulls)

TOP


Week 2

Work as a group to reverse-engineer a website, with finished code as a starting point.

more info

Before Class

Do you have any questions from last week? Add the question label to an issue in your class repo so your coaches know what to review!

This Sunday you will be practicing the Planning and Collaboration workflow on a simple HTML/CSS project. To prepare for class you can take a look through this directory:

  • ./development-strategies/all-about-trees

It contains the code you will be reverse-engineering in small groups and the strategy you will use as a starting point.

During Class

Before Break

Guided by a coach, each study group will complete steps 1-4 of the Planning and Collaboration workflow, this time on an HTML/CSS project:

  1. Understand the Project
    • Study the finished code & wireframe in the ./development-strategies/all-about-trees folder
    • Changes are welcome! This strategy and website are just a starting point
  2. Prepare your repo for collaboration
  3. Write a Development Strategy
    • You can use the Development Strategy from ./development-strategies/all-about-trees as a starting point
  4. Prepare your repo for development

After Break

Guided by a coach, each study group will practice step 5 of Planning and Collaboration to begin developing your HTML/CSS group project. You will each take turns sharing your screen and practicing the Claim, Branch, Review, Merge workflow.

This is exactly what you will be doing for the week's project! It's more important that your group is ready to work together this week than that you complete the All About Trees project, you can always finish it over the week for extra practice.

After Class

group project

This week's project is to study the app-theme tutorial from Traversy Media.

Writing the same code as Mr. Traversy's code is not enough! You are expected to submit your code from his tutorial in a new repository on your GitHub account generated from this starter template. Your repository should be named app-theme and should be cleanly developed with one branch per step. It's up to you to write the development strategy!

You will need to use Font Awesome 4.7 in your project

A good strategy to for completing this project is the four-step:

  1. individually: follow the tutorial, studying the code and understanding the finished project.
  2. individually: study the finished code and break it down into steps, write your development strategy and prepare your repo.
    • it's ok if your strategy is not the same as the tutorial's!
  3. as a group: compare development strategies and combine the best parts of each to create a group strategy
    • prepare your group repository for development
  4. as a group: build the project again following the Claim, Branch, Review, Merge workflow. you can refer back to the tutorial as much as you need

Issue Checklist

Copy-paste this checklist into a new project issue and move your issue to the project board, your issue should have:

  • group label
  • project label
  • week-1 label
  • incremental-developement milestone
- [ ] [repo](https://github.com/_/_) (with a complete README)
- [ ] [live demo](https://_.github.io/_)
- [ ] [development strategy](https://github.com/_/_/tree/master/development-strategy.md)
- [ ] [project board w/ labeled & assigned issues](https://github.com/_/_/projects/1)
- [ ] [issues closed by PRs](https://github.com/_/_/issues)
- [ ] [one branch per step](https://github.com/_/_/network)
- [ ] [one closed PR per step](https://github.com/_/_/pulls)
- [ ] [multiple contributors](https://github.com/_/_/contributors)

TOP


Week 3

Work as a group to reverse-engineer a website, with no code provided. You're on your own!

more info

Before Class

Do you have any questions from last week? Add the question label to an issue in your class repo so your coaches know what to review!

Nothing new! Come ready to discuss what went well and what didn't in last week's project.

During Class

Before Break

Each group will take ~15 minutes presenting their project repository and discussing what went well and what was challenging.

After Break

After hearing about each group's experience, you and your coaches will decide the best way to spend the second half of class. It may be practicing in small groups, coding along with your coaches, or anything else!

After Class

group project

This week's group project is to build your own accessible & responsive clone of the DuckDuckGo home page (long version). We don't expect your DOM to be identical to DuckDuckGo's, or for all the buttons to have the same behavior, but visually your site should be identical to the real DuckDuckGo. If you would like to use a CSS framework, go for it! Just be sure everyone in your team agrees ;)

Unlike the last two weeks, this project does not have a video tutorial for you to follow. This week you will also expected to do your best at writing accessible HTML including correct Semantic HTML and ARIA. Pay special attention to points of user interaction like the search field and submit button.

You are expected to submit your code from his tutorial in a new repository generated from the w3-validation-starter repo. Your repository should be named duck-duck-clone and should be collaboratively developed following the same workflow you practiced in class this Sunday. It's up to you to write the development strategy!

A good strategy to for completing this project is the four-step:

  1. individually: study the DuckDuckGo website. Try to find all the fonts, colors and assets they used.
  2. individually: write a development strategy to reverse-engineer DuckDuckGo
  3. as a group: compare development strategies and combine the best parts of each to create a group strategy
    • prepare your group repository for development
  4. as a group: build the project again following the Claim, Branch, Review, Merge workflow. you can refer back to the tutorial as much as you need

Issue Checklist

Copy-paste this checklist into a new project issue and move your issue to the project board, your issue should have:

  • group label
  • project label
  • week-1 label
  • incremental-developement milestone
- [ ] [repo](https://github.com/_/_) (with a complete README)
- [ ] [live demo](https://_.github.io/_)
- [ ] [development strategy](https://github.com/_/_/tree/master/development-strategy.md)
- [ ] [project board w/ labeled & assigned issues](https://github.com/_/_/projects/1)
- [ ] [issues closed by PRs](https://github.com/_/_/issues)
- [ ] [one branch per step](https://github.com/_/_/network)
- [ ] [one closed PR per step](https://github.com/_/_/pulls)
- [ ] [multiple contributors](https://github.com/_/_/contributors)

TOP


Class Recordings

note for students: HYF modules are constantly being improved, recordings from past classes may not be the same as what you did on Sunday

  • Students: Here you can find recordings of this module from past classes. Enjoy!
  • Coaches: When sending your PR's with links please ...
    • Indicate which class you were teaching
    • Which week it was (if the module is more than 1 week)
    • Give your name
    • and a helpful description

Stéphane, Tiago, Louise, Dirk, Kevin

  • Week 1
  • Week 2
    • Part 1 - Resolving Git Conflicts
    • Part 2 - Development Strategies
    • Part 3 - Homework explanation
  • Week 3
    • Part 1 - 👍 Collaborating with Git & GitHub ...
    • Part 2 - ... continued & fast forward vs merge commits
    • Part 3 - Homework explanation

Stéphane, Tiago, Marie, Unmesh, Nawang, Tamer


TOP

About

Learn how to plan and organize your development process

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 93.8%
  • CSS 6.2%