Teaching eXtreme Programming in university?

Well, Andy Marks thinks it’s a good idea. (I know, old post, but it’s the first i’ve seen of it!)

I agree with many of the points he mentioned. (In fact, I think Andy Marks was a lecturer on my campus. Because I seem to remember one of my guest lecturers last year introduced himself as Andy Marks from ThoughtWorks. He also stated that he was a former lecturer on that campus for that Java subject [CSE3420]… Just checked subject website, website states original version was by Andy Marks!)

Ok, so my guest lecturer, Andy Marks talked about Ant and JUnit, Design Patterns for Java among other useful things. I’ll admit it, I only remember the demonstrations of Ant and JUnit more than the other advice Andy gave us in that presentation. Maybe I should go back to that presentation and read it again. (I’m sure I definately learnt a lot more at University than I can actually remember, but that’s usually the case for most people. But once you hear those things mentioned again, your brain just clicks and says, “I’ve heard of that before” and it goes to try to find out more about it.)

Actually, as it was nearing exams at that stage, I think most of my fellow students were perhaps more concerned about their upcoming exams than anything else.

Now, I still don’t really know much about XP (but i’m learning, through reading some online materials and attending MXPEG (Melbourne eXtreme Programming Enthusiasts Group) meetings. But some of the things I’ve learnt through all that, I wish I knew some of it when I was actually working on my assignments, or more in particular my final year (Industrial Experience) project.

On reflection I think it would have been great to use XP on that project, then come out and be able to say I’ve had experience developing using XP methodologies. One thing that I did do during that project was pair programming. Maybe only on a loose basis, but did do it without really knowing what it was. (Actually, I kept a handout on my table about Extreme Programming that was handed out at a lecture the year before and I thought it was quite interesting, so kept it on my desk! But that’s another story for another day!)

As there were only 2 programmers in the group (myself and another individual), there were times when we would both sit at the same computer and just code, one at a time, talking (yes, talking about code) and looking over at the code the other was typing. I felt that was actually quite productive and we solved many of our bigger problems that way.

Ever heard of the phrase “two heads are better than one” used? Well, I think that applies to pair programming, but i’d change it to “two brains are better than one”!

Although my project and many others succeeded, there is no doubt in my mind if all projects had XP methodologies applied to them they would have done even better in perhaps a smaller timespan. I’m sure other groups like mine spent a lot of time trying to piece together a good understanding of requirements. Those groups that didn’t probably did so at their own peril. I heard of many projects that failed and the students were asked to repeat the project again, or they ran overtime (and organised to do extra work later on).

Actually, some of the reasons why some projects ran over time because of a misunderstanding of user requirements, or additional requirements had come up that weren’t discussed initially.

I think TDD would have definately worked well in those projects.

Refactoring would also have come in handy. We did do some form of refactoring to keep our classes and methods as specific and to the point as possible, but it was all a manual process through cut and paste.

And we actually had refactoring built into the IDE that we were using (JBuilder). I distinctly remember using one of the refactoring tools (without knowing what it was at the time) to do a “Find References”.

It would definately be interesting if everything was reversed and we made use of TDD/Refactoring/Pair Programming and other XP methodologies properly in the project and see the differences. Heck, it could have meant I could spend more time creating better button icons! (We had an area where the user could view a log of all user interactions with a remote server, I wasn’t sure what to do with the icon, so I found a picture of a wooden log and placed it in there! The client didn’t mind it, so I left it there!)

I do wonder what some of my assignments would have been like if rather than being given the assignments specifications we had to make an appointment with our tutor (too many students to talk to if it was with the lecturer) to gather our own assignment specs.

Would definately prepare students for the outside world, that’s for sure!

Comments are closed.