1 of 25

CS10 Summer 2016: �The Beauty and Joy �of Computing

Git / Agile Development

Instructor: Ian Birnam

1

Security experts have cloned all seven TSA master keys

“The TSA, offers a set of screener-friendly locks. These locks use one of seven master keys that only the TSA can use — until 2014. Last week, security researchers released the final 3D printed key.”

Article

7/28/2016

CS10 Su16 - Lecture 22

2 of 25

Administrivia

    • Explore Post due TOMORROW!
    • Midterm Regrades due TOMORROW!
    • Explore Post Comments due Monday!
    • If you haven’t viewed your graded midterm, please do so, and if you have trouble, email Lara!!!
    • Start on Final Project!!

2

7/28/2016

CS10 Su16 - Lecture 22

3 of 25

Lecture Outline

    • What is Git?
    • How to Use Git
    • What is Agile Development?
    • Basics of Agile

3

7/28/2016

CS10 Su16 - Lecture 22

4 of 25

WHAT IS GIT?

4

7/28/2016

CS10 Su16 - Lecture 22

5 of 25

What is Git?

Git is a popular form of source control

  • Source control is a way to record how a project changes and grows over time
  • Track and save project at various phases of development
  • What you wish you had for Snap! :D

5

7/28/2016

CS10 Su16 - Lecture 22

6 of 25

Disclosure on Git

Git is an incredibly powerful tool, and can get complex

  • Have the power to re-write history!

Thankfully, the basics can get you through 90% of the use cases you’ll need in your day-to-day

We’ll cover enough to make you dangerous

6

7/28/2016

CS10 Su16 - Lecture 22

7 of 25

HOW TO USE GIT

7

7/28/2016

CS10 Su16 - Lecture 22

8 of 25

Terminology - repo(sitory)

repo(sitory) - where the project (code) lives

  • origin - the codename for the main repository

Not this simple, next slides detail these arrows:

8

7/28/2016

CS10 Su16 - Lecture 22

9 of 25

Terminology - branch

branch - a working copy of the code in the repository (can be multiple)

Repository

branches

9

7/28/2016

CS10 Su16 - Lecture 22

10 of 25

Terminology - branch - master/remote/local

  • master - permanent branch where the code lives
    • Most up to date version of “ready” code
  • remote - the copy of the code on GitHub (i.e. Remote Branch)
  • local - copy of the code you download from GitHub and can edit on your own computer (i.e. Local Branch)
    • can later be merged into master

master

Local (ian’s branch)

remote

remote

remote

Local (alex’s branch)

Local (lara’s branch)

10

7/28/2016

CS10 Su16 - Lecture 22

11 of 25

Commands

  • clone - download a copy of the code from GitHub
  • push - to upload your changes (code and/or images) on to master
  • pull - to download the most recent version of master
  • add and commit - to add an official copy and descriptive message about your work to your local branch

11

7/28/2016

CS10 Su16 - Lecture 22

12 of 25

Flow of Commands

12

7/28/2016

CS10 Su16 - Lecture 22

13 of 25

GIT DEMO

Tools Used:

13

7/28/2016

CS10 Su16 - Lecture 22

14 of 25

WHAT IS AGILE DEVELOPMENT?

14

7/28/2016

CS10 Su16 - Lecture 22

15 of 25

What’s Agile - Preface

  • Going over big ideas
  • Not an all-inclusive Agile talk
  • Your experience may vary

15

7/28/2016

CS10 Su16 - Lecture 22

16 of 25

What’s NOT Agile?

“The waterfall model is a sequential design process, used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.”

  • Wikipedia

16

7/28/2016

CS10 Su16 - Lecture 22

17 of 25

What’s NOT Agile? - Waterfall

  • Teams of various size
  • Each phase happens sequentially
  • Little to no parallelization
  • For each phase, everything must be accounted for up front

17

7/28/2016

CS10 Su16 - Lecture 22

18 of 25

What’s NOT Agile? - Waterfall

  • Waterfall Development was used in the olden times
    • Though many companies still use it today!
  • Has gone in favor of Agile methodologies at numerous companies
  • Waterfall has numerous setbacks
    • Sloooooooooooow
    • Hard to account for everything upfront
    • Lack of communication between teams
    • Software development is hard to timebox
  • Don’t Go Chasing Waterfalls

18

7/28/2016

CS10 Su16 - Lecture 22

19 of 25

What’s Agile?

“Agile software development is a group of software development methods in which solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.

– Wikipedia

19

7/28/2016

CS10 Su16 - Lecture 22

20 of 25

What’s Agile?

  • Small Teams
  • Keep a running list of tasks (Backlog)
  • Plan in small chunks of time (Sprints)
  • Quick, daily meetings (Stand-Ups)
  • Figure out a timeline, but be able to adapt.
  • Iterate, Iterate, Iterate

20

7/28/2016

CS10 Su16 - Lecture 22

21 of 25

What’s Agile? - Standups

  • Daily meeting with your team to discuss that day’s game plan.
  • Timeboxed to 15-20 minutes (Ideally…)
  • Say what you did yesterday, what you’re going to do today, and if you’re blocked on anything.
  • Longer discussion items get moved to the Parking Lot, held at the end of standup.

21

7/28/2016

CS10 Su16 - Lecture 22

22 of 25

What’s Agile? - Sprints

  • Small chunk of time where the team’s focus is on a subset of tasks from the Backlog.
  • Generally 2 weeks long.
    • Sometimes 3, or even 1.
  • Planning on first day of sprint: assignment/estimations
  • Retrospective on the last: what went well, what could be improved?

22

7/28/2016

CS10 Su16 - Lecture 22

23 of 25

What’s Agile? - Sprints

23

Credit: http://www.dgc.co.uk/

7/28/2016

CS10 Su16 - Lecture 22

24 of 25

Summary

  • Git is an incredibly useful tool in software development for tracking the history of the project
    • and allows for easy testing!
  • Git is powerful and (can be) complex, but the basics will get you 90% of the way there
  • Waterfall VS. Agile methodologies
    • Waterfall is sequential
    • Agile is iterative and adaptive
    • Standups, Backlogs, Sprints, Oh my!

24

7/28/2016

CS10 Su16 - Lecture 22

25 of 25

Post-Summary

How do we manage the website?

HTML/CSS/JS/Ruby/Tons of APIs...

and GIT!!!!

25

7/28/2016

CS10 Su16 - Lecture 22