Giter Club home page Giter Club logo

incremental-development's Introduction

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. This can even be 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


Module Projects

Projects in Incremental Development are all about the workflows. Take plenty of time to familiarize yourself with Planning and Collaborating, practicing these steps is your main objective for the coming 3 weeks.

expand/collapse

In the first weeks it's likely that you'll spend as much time figuring out how to plan and work with Git/GitHub as you will spend writing code. 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.

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

Do

  • ... ask for help early and often
  • ... pay as much attention to your branches & repository as your code
  • ... be very careful about your CSS classes, selectors and id's
  • ... properly format your code
  • ... find the simplest solution to each task in your projects

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

expand/collapse

Incremental Development

  • Breaking large web-sites into small, manageable tasks
  • Sharing tasks between group members

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

expand/collapse

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

Incremental Development

Working Together

Git & GitHub

Collaborating on GitHub

Command Line Interface

Writing READMEs

DevTools and the DOM

HTML & CSS

User Stories


TOP


Week 1

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

expand/collapse

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!

Planning and Collaborating: This is important, take your time to understand it!

During Class

In class you will get to know your coaches, discuss the Planning and Collaborating process, then get a start on this week's group project.

Before Break

  1. Introductions from each coach
  2. Q/A time about the secret lives of developers
  3. A walk-through and discussion of Planning and Collaborating

After Break

  1. As a full class, take a look through the finished loruki-website code and discuss how it might be broken into small tasks
  2. Break into small groups and get set up for this week's group project. You should aim to have created your group's repository by the end of class.

After Class

group project

This week's project is to study the loruki-website tutorial from Traversy Media. A working website is not enough! You are expected to create a group repository named loruki-website, as described in Planning and Collaborating. Your group is not expected to submit exactly the same code as Mr. Traversy. You are free to add features, remove features, or write your features differently than he did. His tutorial code is just a starting point.

This is a large project to finish in one week, it's ok if you don't finish all the code! What's most important is that you get used to the Planning and Collaborating workflows.

In the tutorial, Mr. Traversy deployes his website using Netlify. For your group project you can use GitHub Pages instead.

Here's a good way to approach the group project:

  1. Before watching the tutorial video (aim to have this finished on Tuesday):
    • Backlog: Study the finished website as a group to come up with your backlog and priorities. You won't need to look at the actual code for this step, backlogs are all about what the user sees!
    • Wireframe: Study the finished website as a group, comparing it to the backlog you wrote. How would you simplify the website into a wireframe?
    • Development Strategy: Study the finished code as a group. What code did Mr. Traversy write for each step? how would you break that code into different tasks?
    • Project Board: Convert your Development Strategy into issues and a project board in your group repo.
  2. While studying the tutorial individually, each group member can assign themselves tasks from the project board to practice the HTML & CSS they are learning in the tutorial.
  3. After everyone has finished studying the tutorial you can already organize a group call to discuss what you learned and write your Retrospective. Your group does not need to have finished the project before doing the Retrospective.

Issue Checklist

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

  • labels:group, project, week-1
  • milestone: incremental-development
- [ ] [repo](https://github.com/_/_) (with a complete README)
- [ ] [live demo](https://_.github.io/_) (GitHub Pages, not Netlify)
- [/planning](https://github.com/_/_/tree/master/planning)
  - [ ] communication plan
  - [ ] constraints
  - [ ] backlog
  - [ ] wireframe
  - [ ] development strategy
  - [ ] retrospective
- [ ] [project board](https://github.com/_/_/projects/1)

TOP


Week 2

This week you will start a 2-week project where your group needs to reverse-engineer a live website, without any starter code.

expand/collapse

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!

You and your group should come prepared to present your Retrospective. Each group will have ~5 minutes to share how the project went last week. Keep it short and clear!

Besides the Retrospectives, this Sunday will be all review and preparation for the week's project. Come ready with all sorts of questions!

During Class

Before Break

  1. Questions & review
  2. Retrospective presentations, ~5 minutes per group
  3. Coach-led discussion of challenges and Lessons Learned

After Break

  1. Read over step 6, Development all together
  2. Study the hackyourfuture.be website as a full class
    • how would you break this into small steps?
    • which pieces are most important?
  3. Break into small groups and prepare your repository for the group project

After Class

group project

Your group will have 2 weeks to reverse-engineer as much of hackyourfuture.be as possible. If your team has some different ideas for layout or design, go for it. The HYF site is just a starting point. Beginning with an empty repository your group will need to define a backlog with priorities, create a project board full of tasks, and get coding!

Pay special attention to:

Careful! When you inspect the hackyourfuture.be the DOM, HTML and CSS will be hard to read. The class names will be meaningless, there will be many extra nested elements, and the sources will be split into many strange files. Ignore this! You aren't trying to recreate the exact code (which is actually written in React), you're trying to reverse-engineer the website - creating something that looks, and feels like hackyourfuture.be but is not.

One of the challenges with this project will be inspecting hackyourfuture.be to find the fonts, colors, assets and layout without losing your way in the DevTools :)

Issue Checklist

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

  • labels:group, project, week-2, week-3
  • milestone: incremental-development
- [ ] [repo](https://github.com/_/_) (with a complete README)
- [ ] [live demo](https://_.github.io/_)
- [/planning](https://github.com/_/_/tree/master/planning)
  - [ ] communication plan
  - [ ] constraints
  - [ ] backlog
  - [ ] wireframe
  - [ ] development strategy
  - [ ] retrospective
- [ ] [project board](https://github.com/_/_/projects/1)

TOP


Week 3

No new material, one more week to practice planning and collaborating before learning about UX/UI Design.

expand/collapse

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 your group's work last week, and to share tips for a better next week.

During Class

Before Break

  1. Questions & review
  2. ~5 minute status report from each group
  3. Discussion of challenges and Lessons Learned

After Break

Git workshop! Come ready with your questions and your git conflicts from the week.

After Class

group project

Finish building as much of hackyourfuture.be as possible before Friday. On Friday or Saturday your group should gather to discuss how the project went and to fill out your Retrospective.

You can move your group issue into "Ready for Review" after you have finished your Retrospective. Just like the first week's project, you will be assessed on your planning and collaborating not on a finished project.


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


Tiago, Unmesh, Tamer, Stéphane


Stéphane, Tiago, Tamer

TOP

incremental-development's People

Contributors

bermarte avatar colevanderswands avatar ilienstar avatar rago89 avatar svikashk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

incremental-development's Issues

Saban: Incremental Development-W1

Project Progress - Incremental Development-W1

Assignment individual Project

  • 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 using this starter repository. Your repository should be named acme-web-design and should be cleanly developed with one branch per step. It's up to you to write the development strategy!

  • follow the tutorial studying the code and understanding the project.

  • look over your finished code and break it down into steps, write your development strategy.

  • study the tutorial a second time, following your strategy to build your repository one branch at a time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.