As has been mentioned earlier, we have a Seaside tutorial available for download. I’ve gotten some good feedback from various people (some of it quite enthusiastic), including Stephan Eggermont from the Netherlands. Stephan recently emailed about his effort to help a neighbor’s 19-year-old son with a programming project assigned as part of his professional education (and has agreed to let me share it here).
It is a 6 month project where the students are supposed to practice software development/methodology. The first 5 months were typical waterfall: requirements gathering, planning, writing use cases, and creating other documents, leaving a month to build the system. As in all proper waterfall processes, they somewhere lost a few weeks, leaving only two weeks to implement the system. As you can imagine, the young man was not very happy about this situation and this is when he came to me.
I asked him what implementation technology they were supposed to be using. For better or worse, that decision was left to the students, and there were no pre-build environments available. He has done some previous work with ASP.NET and PHP, but is only fluent in Visual Basic. He had no prior exposure to Smalltalk at all.
I then asked how the projects would be evaluated. He explained that the ultimate evaluation would be by an internal customer from another department with no IT knowledge. Three groups of 1 or 2 students would to show their projects, and one solution will be chosen to be developed further over the summer holidays.
I took a look at the use cases and database design he had written, and explained to him that the fastest way to get an application up and running was probably to use Seaside and the Los Boquitas tutorial. Furthermore, he should switch from waterfall to an iterative approach, driving the planning with a priority of reducing risk and providing value early.
I told him to download the tutorial and try the exercises for a day, and then reevaluate his plans. At the end of the first day, he hadn’t finished all he’d wanted to but came to the conclusion that Seaside would provide the best chance of delivering the system in time. For the next day he planned (and I pushed!) to finish the tutorial to chapter 12.
As a complete Smalltalk beginner, most of his difficulties involved (1) using the Squeak IDE, (2) understanding how collections, blocks, and cascades work, and (3) the difference between class-side and instance-side methods.
The next day, he took at look at using Monticello, and started extending the Los Boquitas application. First, he added a report and an editor for users. A day later he extended and copied the user editor for two different user roles–teachers and students. At this point he started believing that he would be able to deliver the application in time, using the one day plan-develop-evaluate cycle.
With a week or so left on the six month schedule, his teacher announced that the scope of what they should deliver was to be reduced.
Continuing on the development, the young man added some additional domain objects, a report, and an editor, and over the weekend, took some time to clean up the methods. (Using tabs and a standard coding style makes a lot of difference in the readability of the code.)
Next, he started adapting the sidebar links to the current user role. On Monday of the final week, he enhanced the UI so that making connections between various domain objects was done using selects instead of text inputs.
At the end of a week of daily small improvements, he presented the application to his teacher. It took him about two hours to explain image-based persistence and that with GemStone no external database is necessary. The second presentation, to the in-house customer, was an easier sell. (He made one small addition between the first and second presentation: export a tab-delimited list of objects for import into Excel.)
As we expected, his was the only project reasonably close to feature complete. Another group showed a set of web forms in PHP, not yet coupled to the database, and the third group didn’t show anything at all.
The customer now has a week to decide which application has won. I have no doubts on which application will be selected, especially since I’ve instructed the student to keep on making daily improvements, put them on seasidehosting.st and send his teacher and the customer a daily update mail.
Overall, a very good report! Congratulations to the young man (who spent about 5 hours per day for two weeks on the project) and to Stephan for his mentoring.
So, what have you done lately to promote Smalltalk and Seaside? Feel free to share!