User Test Testing Task
First Demo Task -- due Thursday
Team React Setup Task and Four-Panel Storyboard Task -- What each team needs to have done before the second class!
Learn React Task -- a personal activity to help everyone learn (or practice) building React apps the recommended way
Day One Task -- What each team needs to be ready to present on the firstclass!


TTh 11am - 12:20am


Tech M177


Chris Riesbeck


Important To get a permission number for this course for Spring 2019, you need to do two things. (1) fill in the prior experience survey , (2) email me a request for a permission number afterwards. Use the Subject 394 Permission Request
Note: You must be logged into your Gmail account to access the survey.
The Spring offering is now full, with room only for seniors and graduate students.
Interested in being a client for spring quarter? See what's involved.

This is a class about learning to develop HTML5 mobile and web app products using modern sustainable practices that deliver value as quickly as possible to users, clients, developers, and the development organization. These practices usually go under the name of "agile" or "lean agile."

This course is not recommended for first and second year undergraduates. It assumes significant prior programming experience, in multiple languages, and, even better, some industry experience.

This course is about much more than programming. It's about software development. It's about delivering high quality code early and often. It's about being efficient, using modern lean agile practices. It's about constant reflective analysis and improvement.

What you'll be doing a lot of in the next 10 weeks:

Required Meetings

This class involves a great deal of work with your team, your client and me. That means frequent face to face meetings. These are a requirement of the course. Do not take this course if you can't commit these meeting, especially Saturday client meetings in the Fall.

All meetings should lead directly to deliverables, designs for deliverables, or specific steps to take to improve your development process. If a meeting doesn't do this, it was a waste of time.


80% of your grade is your team grade, adjusted if necessary by your level of contribution. The team grade is based on how the team managed and improved over both the team and client projects, in terms of delivering value every week, and managing expectations through frequent and clear communication. Most teams do just fine on this part and get the full 80%, but it takes work. A client should never be disappointed or surprised with what they get, because a good team keeps the client accurately informed about what's doable and why.

Your individual share of the team scores is affected by the level of your contribution to the project as determined by CATME reviews. Four CATME reviews are done, at the middle and end of each project, but only the end of project numbers are used. Contribution higher or lower than 1.0 will modify your share of the team grade. Note that CATME deliberately caps contribution at 1.05, so as not to reward over-achievers taking control of a project. In practice, CATME has a very small effect on most people, except in cases where someone repeatedly and significantly fails to contribute.

The other 20% comes from your ability to demonstrate to me your individual ability to apply agile thinking creatively and appropriately to real world development issues. This year, as an experiment, the bulk of this grade will come from the weekly retrospective reports. Your retrospective grade is the sum of your top 4 scores. This will be added to your team score.

Programming Requirements

Substantial prior programming experience is required. I assume you already know or can quickly get up to speed with

The class discussions and assignments focus on development processes, not programming technology. Work is done in teams but all team members are responsible for all parts of the application.

Prior mobile development experience is not required. The ability to pick it up on your own is.

Development computer

You need to have either a Mac, PC, or Linux machine suitable for software development, with plenty of memory and gigabytes of disk space. Laptops are best because they can be brought to the meetings to do demos and development.


The text for agile software development is The Agile Samurai by Jonathan Rasmusson. Don't be fooled by the casual style. This is a sound introduction to agile software development, by a developer for developers.


The following tools are either required, or have proved very very useful to previous teams in this course.

The current version of Ionic (Ionic 3) assumes you will be using Angular for your JavaScript code. This has a substantial learning curve. The team will need to invest time making sure every member understands all aspects those components of Angular used in your apps.

Mobile Hybrid Apps

There are three kinds of mobile apps: native, web, and hybrid.

The team project must be a hybrid app, using Ionic. This will prepare you for both hybrid and mobile web development.

The client project can be either hyrbid or mobile web, depending on what's needed and what the client wants.

We do not do native apps in this class, because

Because this is about rapid iterated development and testing, all apps are either hybrid or mobile web. Such apps

Hybrid apps provide access to the device, such as camera, contacts, and so on. To be prepared for the client project, which might need such features, the team project must be hybrid, even if your app idea may not require it.

Ionic has a live reload feature for development, and a viewer app that clients can use to test the app on their own devices, without going through an app store.

Push Notification Warning

Caution: Supporting push notifications requires deploying standalone apps. You can do that with hybrid apps, but you must have the same native development tools for the platforms you want to deploy to that you would for native development:

Creating standalone apps creates a much longer develop and deploy cycle time. The requirement for an Apple developer license and a Mac often means only one member is able to compile and deploy, leading to a bus factor = 1 problem.