In their recent blog posting “Crossing the Software Education Chasm” for the Communications of the ACM Armando Fox and David Patterson from UC Berkeley address the tradeoff between university education of software engineers and actual expectations of employers. They suggest that a solution to reduce this gap consists of teaching students agile development of SaaS apps using tools like rails.
Software engineering and software architecture education at universities is often considered inappropriate by companies, because students do not learn how to deal with the whole software development lifecycle. Rather they only get to know parts but not the whole. Fox and Anderson claim that agile development with SaaS apps could be an an appropriate approach for classrooms because these tools help students to experience a whole software development lifecycle. Apps are supposedly the right means:
to motivate students, it is helpful to use a platform that allows them to create compelling apps.
The software course at the UC Berkeley currently has currently more than 100 seniors and juniors with the first part available to 50,000 online students.
Fox and Anderson are drawing the following conclusions from their experiences so far:
Using Agile to develop SaaS apps via highly productive tools like Rails and deploying them using cloud computing cultivates good software practices and pleases many stakeholders:
Students like it because they get the pride of accomplishment in shipping code that works and is used by people other than their instructors, plus they get experience that can help land internships or jobs.
Faculty like it because students actually use what they hear in lecture, even after graduation, and they experience how big CS ideas genuinely improve productivity. Virtual machines reduces hassles for faculty plus the cloud allows for more interesting programming assignments—which the testing and code evaluation tools of Rails can help grade—thereby allowing us to offer a MOOC with 50,000 students.
The readers agree with the approach. For example, marie4 explains:
I'm also getting a very positive feedback, (well - from most of the students and even some alumni who joined the course). The students enjoy the challenges of learning new but very relevant ideas while practicing the materials hands on. I would like to thanks the authors for their open attitude, for all sharing and even supplying technical help. The course's supplied virtual machine (bookware) saves a lot of valuable time spent in practicing and learning instead of setup and configurations. I believe a big challenge for this effort is keeping it updated, since many of the course tools and practices are still forming as we talk.
Klaus-Erik Schauser adds:
Congratulations on the the success of the class, book, paper, and video !!! It is AMAZING that you were able to teach that many students. I am proud of you. We wish that all computer science students had taken such a course. At AppFolio we have been using Rails, TDD, Pivotal Tracker, Selenium, etc. for the past 5 years and our team loves it. We now probably have one of the largest commercial Rails application. We are onto our third product (latest is www.securedocs.com) and still do releases every 2 weeks, which our customers LOVE !! Being agile is even part of our company values.
As the posting suggests, agile small app development is an promising approach for software engineering education at universities.