If, as I believe, the conceptual structures we
construct today are too complicated to be specified accurately in
advance, and too complex to be built faultlessly, then we must take a
radically different approach.
Let us turn to nature and study complexity in living things, instead of
just the dead works of man. Here we find constructs whose complexities
thrill us with awe. The brain alone is intricate beyond mapping,
powerful beyond imitation, rich in diversity, self-protecting, and
self-renewing. The secret is that it is grown, not built.
— F.P. Brooks, No Silver Bullet: Essence and
Accidents of Software Engineering, 1986
-
Agile software development
-
Agile software
development — Focus on
the introduction and the following sections: “History”,
“Overview”
& “Philosophy”.:
- Based on the principles of the agile manifesto, what key
features distinguish agile development practices from traditional
practices?
- What does it mean to:
- be “adaptive” rather than “predictive”?
- favor code to documentation?
-
Review the following, well-known agile methods and be
familiar with the listed
concepts/questions:
- eXtreme Programing
(XP) —
focus on the introduction only here:
- Practices: pair programming, unit
testing
- What is so “extreme” about XP?
- Scrum —
focus on the “Workflow”
and “burn-down chart” sections:
- The meanings of these Scrum terms:
sprint, daily
scrum, review/retrospective,
backlog and burn-down
chart
- The interpretation of the two lines on a
burn-down chart.
- KanBan —
focus on the introduction only here:
- How does this lean manufacturing process relate
to software
development?
-
Project Management Tools
-
Git Handbook
- What does a version control system do?
- Compare and contrast distributed vs. centralized
version control.
- Understand the following terms: clone, commit,
push, pull.
-
GitHub
- If don’t already have a GitHub ID, create one for
yourself now. You’ll use this GitHub account to
submit code for this class, so please submit your ID
using this form:
CS 262 - GitHub
IDs
- Read this GitHub guide: Hello World
- Familiarize yourself with these concepts: repo(sitory),
branch, pull request.
- Read this GitHub flow guide: Understanding the
GitHub Flow
- Familiarize yourself with
branch→commit→pull-request→review→
merge process.
-
Markdown —
Familiarize yourself with GitHub Markdown notation.
-
Technology Stack — There is no mobile application
development in this unit’s lab. However, it’s worth
reviewing these features of ReactNative implementations:
- Layout with Flexbox
— Formatting in future labs and homeworks will be based on
Flexbox, so review this material with particular focus
on these
concepts:
- Direction, alignment and justification.
- Absolute vs. relative layout.
- Color Reference —
This explains JavaScript colors.