Experiences from Agile Web Development course, spring 2008

Antti Tarvainen, June 1, 2008

Abstract

We organized a thirteen-day Agile Web Development course at Department of Software Systems at Tampere University of Technology in April 2008. The goal of the course was to teach students agile development and web programming in a fast-paced project with real customers.

The daily sessions started at 9:00 each morning and lasted till 16:00, with a one-hour lunch break at the middle of the day. First three days were preparation for the project assignment. On the remaining ten days, lectures and exercises were intertwined with project work.

Ten students enrolled to the course. Students were divided into five teams of two, with each team working on a separate project. By the end of the course, all teams delivered working software to their customers - albeit without deployment to production use. The customers in general were happy with the results.

We did not achieve all of the educational goals of the course. In particular, test-driven development was planned to be used in project work, but in the end was not. The technical difficulties in learning a new programming language and a new framework were higher than expected.

Feedback from students was very positive.

Feedback average 4.4 where 5 = very good and 1 = very bad

We propose that the same course be given next year with a few changes. Most notably, to ease wrestling with technical issues during the project work and to allow more focus on agile programming practices, the course preparation period should be lengthened from three days to five, bringing the total length of the course to fifteen days. We also propose creation of another course, “Agile product ownership”, 1 cp.

Introduction

This report describes the Agile Web Development (AWD) course at Department of Software Systems at Tampere University of Technology in April 2008.

The course was organized for the first time this year. The purpose of this report is to document the experiences from the course and to help decide what to do with the course next year. Since the course was novel in many ways, teachers of other courses may find this report useful as well.

In the rest of this report, we describe (a) the educational goals of the course, (b) how the course was structured to achieve those goals, (c) lecturer’s observations, (d) the feedback from students and customers, and finally (e) conclusions and changes we propose for the next year.

Educational Goals

We had two educational goals.

  1. To teach students agile development practices.
  2. To teach students web programming with a modern web framework.

Agile development practices

Agile software development is a fuzzy term that encompasses a lot of different methodologies. The common substance between different agile methodologies is their set of values: beliefs about what is important in software development. Agile development differ from traditional software development by the stress it puts on these values. The most widely cited description of agile values is Agile Manifesto.

In our view, values are the most important part of agile development. However, appreciation of the values only comes with experience. Therefore the focus on this course was not on teaching values, but practices, .

Agile practices are methods to achieve agile values. There is a large number of them, out of which we chose a few. The priority of the course was to teach:

On a lower priority, we planned to include:

Web programming with a modern web framework

Students were assumed to have the theoretical knowledge of web programming equal to course OHJ-5100 Web Programming. (Most students took the courses in conjunction. See Appendix for more information.)

The goal of the Agile Web Development course was to give students practical web programming skills that could be applied beyond the technology used at the course.

Structure

The course lasted 13 days, starting on Wednesday, April 9, 2008, and ending on Friday, April 25, 2008. The entire course was held in one computer lab. Sessions started each day at 9:00 and lasted till 16:00. There was a lunch break from 12:00 to 13:00, and shorter breaks two times a day. This totaled to roughly 13*6 = 78 hours of work. No homework was given. Passing the course required continuous or nearly continuous attendance to sessions, and finishing the project work satisfactorily.

The setting of the course emulated real-life software work in a fast-paced project. The first three days were preparation. The other two weeks were project work, divided into two one-week Scrum sprints. Project work was intertwined with lectures and exercises. The topics of the lectures were various aspects of Ruby on Rails, web development and agile development.

Ten students enrolled to the course. Five of them were Finnish students from TUT, the other five, foreign exchange students. Most of the students had software development as their major subject. The range of skills was wide, but even the worst students had good enough skills for attending, and eventually completing the course.

For a more detailed description of the course structure, see the course diary.

Experiences from the course

The following describes our experiences from the course. For lecturer’s day-to-day experiences, see the course diary.

Things that worked well

Things that didn’t go according to the plan

Other observations

Feedback

Student feedback

Student feedback was collected on the last day of the course. The feedback was collected anonymously on a feedback form. Two students couldn’t attend the session when this was done, so only eight students gave feedback. The following subsections show the results.

Course in general

General satisfaction with the course was asked with the question “How did you like the course?” The answers averaged 4.4 where grade 5 is “very good” and grade 1 “very bad”.

Feedback average 4.4 where 5 = very good and 1 = very bad

Comments by students (editorialized):

Learning by topic

“How much did you learn about these topics?” 5 = very much, 1 = very little.

Perceived learning per topic

Comments by students (editorialized):

Analysis:

Usefulness of assignment activities

“How useful were these assignment activities for your learning?” 5 = very useful, 1 = very useless.

Assignment activity usefulness

Comments by students (editorialized):

Analysis:

Sessions

“How did you like each of these sessions? (Leave the line empty if you cannot remember.)” 5 = very good, 1 = very bad.

In the chart below, the names of the different sessions are shown in a shortened form. For the original names with explanations, see the feedback form.

Session feedback

Comments by students (editorialized):

Analysis:

Changes for the next year

“We try to improve the course for the next year. In your opinion, how do these alternative course formats sound compared to this yearʼs format?” 5 = much better, 1 = much worse. “Like this year” was pre-filled with value 3.

In the chart below, the names of the different options are shown in a shortened form. For the original names with explanations, see the feedback form.

Changes for the next year

Comments by students (editorialized):

Analysis:

The best things about the course

Comments by students (editorialized):

The worst things about the course

Comments by students (editorialized):

Other comments

Comments by students (editorialized):

Customer feedback

Feedback from the five customers was collected via email after the assignments were finished.

Customers were generally happy with the finished assignments. Their biggest grievance was that the projects were not deployed for use. (Some teams provided their customer with installation instructions, others just handed over the source code.)

We asked asked the customers for their feedback about the organization of the course. Four customers answered the question, giving an average grade of 3.75 out of 5.

Regarding the organization of the course, two customers wished for a longer course, so that they could have more and better meetings with the students. One customer wished for better instructions for the preparation of the project. One customer wished for more feedback about his work as a customer.

Conclusions

The course was a partial success. Three goals were set for the course: to teach agile values, agile practices and web programming. Out of these only the last one was realized with satisfactorily. However, the student feedback from the course was very positive.

We believe that the course - implemented even as it was this year - would be a valuable addition to the department’s course palette. The course can be made still much better. Therefore, we propose that the course be given next year, but with a few changes.

Planned changes for the next year

We plan to make the following changes for the next year’s course.

The overall theme in these changes is to move the responsibility of agile process planning from the students to the lecturer.

Proposal for another course: Agile product ownership, 1 cp.

The project customers wished for more guidance in preparing, monitoring and steering the project. This is a reasonable request, and we therefore propose a creation of another course. The students of this course would work as customers on the Agile Web Development course. The name of the course would be “Agile product ownership” and its size one credit point.

The course would consist of lectures, a workshop, and the project work. The lectures and the workshop would prepare customers for the Agile Web Development project. During the project work, the customers would get useful feedback on how to improve their work.

Another reason why this course is needed comes from our experience in the software industry. The weakest link of a software project is often the customer. Many a project would benefit from having a customer who knows how to monitor progress and how he can (and cannot) help the project. By organizing this course the department would give further recognition to the importance of training software project customers. The department would also gain experience that would help prepare larger such courses in the future.

Appendix

The original course at University of Bremen

The course was modeled after an Agile Web Entwicklung course held at the University of Bremen by prof. Carsten Bormann.

The Bremen course is a much more intensive period, consisting of 12 days of 12 hour work, including one weekend. There were two reasons why the intensity of the Bremen course was not emulated in the Tampere course.

Credit points and relation to OHJ-5100 Web programming course

The Agile Web Development course was offered in two ways: (a) as an independent course and (b) in conjunction with OHJ-5100 Web Programming course. The independent course was worth 3 credit points. Passing the independent course required attendance to teaching and finishing the assignment successfully.

In conjunction with OHJ-5100, the course replaced the normal J2EE assignment, two lectures and three weekly exercises of OHJ-5100. The total course credit was 6 credit points: 4 credit points from OHJ-5100 and 2 credit points from 2 credit points from AWD. Passing the two courses required attendance to AWD teaching, successfully finishing the AWD assignment, finishing at least four OHJ-5100 weekly exercises and passing the OHJ-5100 exam.

Of the ten students enrolled to the course, nine took the course in conjunction with OHJ-5100.