Presentation is loading. Please wait.

Presentation is loading. Please wait.

Agile Software Development II

Similar presentations


Presentation on theme: "Agile Software Development II"— Presentation transcript:

1 Agile Software Development II
One philosophy, many incarnations Lere Williams

2 Overview What’s agile again? Agile management methods
Organizing code for agility Last lecture we talked a bit about the history of software development processes, focusing on the waterfall model (the previous dominant development process). I suggested that with software, particularly software that delivers a service (a very common paradigm in modern software), change is inevitable. In the face of change, agility -- namely the ability to move quickly and adapt to change -- is a great concept around which to center your development philosophy. This lecture, we’ll talk about the breadth of the agile philosophy, but also, specific coding practices that we’ve found help to increase agility.

3 The agile model [Can someone summarize for me the basic ideas behind an agile development process?] Embrace change by moving fast. Perform all the same steps, but use aggressive scope management to shorten the timeframe to delivering working software. [Why is this a better model in common software development contexts?] Easier to plan over shorter time periods, more concrete tasks, therefore easier to ensure progress. Short, release-driven iterations forces us to architect code such that it can change often, along with the world. Customer feedback. Change in underlying technologies. Change to market/product environment. Human/social/organizational advantages? Perhaps, as we’ll see.

4 What are the different incarnations of this model?
Many common coding practices TDD/BDD Code review Continuous integration Continuous deployment Plethora of management and collaboration strategies Scrum, Kanban, Extreme Programming, etc. The readings for this lecture illustrate how broad agile philosophy is: Notice that the agile manifesto says almost nothing about code, and only the most general things about management. Spotify remains dedicated to agility, even though all of its teams self-organize however they see fit.

5 Common agile coding practices
TDD/BDD Use the tests to develop your thinking about interfaces, and as lightweight spec to guide the development of the actual code. Code review Improve your own skills, improve code quality, share knowledge. Continuous integration and delivery Ensure that new code is always up to standard. Keep the path to release clear; make releasing easy. Good tests give you confidence to make changes or refactor while maintaining development speed. Docs rot, tests do not.

6 We'll do it live!

7 Example: Scrum Roles: Product Owner, Dev Team, (Scrum master)
Sprint Planning Retrospective (to encourage continuous improvement) User stories from the backlog are prioritized and estimated The actual sprint Daily standup meetings to review progress, remove blockers Demo day

8 Recommended resources
Task management: Pivotal Tracker, Asana Version control: Github (workflow basics, CLI basics) Test frameworks: googletest (C++), nosetest (Python), rspec (Ruby), jasmine (Javascript) Continuous integration: TravisCI, CircleCI Deployment/Hosting: Heroku

9 Recap Agile process defines certain priorities, but leaves a lot of room for specific workflows Some coding practices are increasingly common in the quest for agility

10


Download ppt "Agile Software Development II"

Similar presentations


Ads by Google