Agile Methods
Posts 1-7 of 7
-
Jörg Simon Premium MemberThe company name is only visible to registered members.Hello!07 Nov 2005, 04:51 amStudends Desaster
First a waring: This is XP in the view of a/some students, not from Projects in the "real world", however, it might be interesting. ;)
At the Technical University of Graz exists a Curriculum called "Softwareengineering and Management". At this Curriculum we also had various courses in which we experimented with XP. The result was a desaster. Most of the time the hole courses where only chaos, many students faild finishing there tasks and couldn't finish the courses as a result of the XP experiments.
Generally XP is more and more considered bad on many students at the university.
On the other hand, some students have done quite well after a while getting used to XP. I noticed that these students where just one which I would consider good or the best at the classes. Even with these XP was first a chaos approach.
Then there was a course last semester, called "design and construction of large systems". In that course we learned design-patterns and C++-Template programming techniqes (fancy stuff like the generalized funktor and the hook-hookup pattern @_@) to build large systems. The practise for the course was too done in XP. This was a real desaster. Even the best failed the first task, so we got an easy second. Even then 80% couldn't take the test, because they where negative on the course bevore.
On the other hand there is the promise of XP that it emphasice learning between the developers. And that you should accomplish your tasks easier.
Neither happend at the university.
So I have some questions:
- I got the experience that only people who have done quite a number of "traditional" Softwareprojects or courses at the university could manage XP. So I think that you need the experience in designing a complete software bevore developing it to get XP, and much of it. Whats your experience of that?
- It may be that XP helps learning some stuff you need for a project with some background, but it seems to me that XP is not good for learning something new within a project (learning per doing doesn't seems to work). That's not that bad, but a problem at the university....
- I got the feeling that XP relies much on the language behind. In my mind C++ f.e. isn't the language for XP. XP needs languages easy for refactoring, like dynamically typed or Java?
- At the university many groups didn't followed the XP roules 100% since that is hard at first. However this resulted in a desaster. Many books on XP however say you should introduce XP one step by one. In our experience that doesn't work.
Last but most important question:
How much do you think that XP is something good for real experts but nothing to use just for the everage programmer?
I am very intrested for any statements (espacally since I am tutor on some of this courses next semester ;) ).
Cheers,
Jörg Simon
--
My packground on these things are 3 Courses at the university with XP and two webprojects I have done with a friend. 2 of the courses at the university where this desaster....
-
Dirk Lässig Premium Member Group moderatorThe company name is only visible to registered members.Hi Jörg,07 Nov 2005, 10:28 pmRe: Studends Desaster
here is my opinion:
XP may not be the right process to teach students, esp. if non of them has any experience. The only helpful XP practice that I can imagine is pair programming. But you can use the pair programming practice without using XP.
People with less skills need more assistance from a process than highly skilled people. Experts only need a given goal and will find the route to it by themselves. A team of very good programmers needs only a lightweight process. Less skilled people need more guidance by a process. The goal of an agile iterative approach is to adopt the process to fit to the people. XP is a very strict process - you must adopt all XP practices to be XP compliant. Maybe that's why it has failed to fit to your students.
Our experience is that people that learn a new programming language need few weeks of training and further weeks or even month of dedicated mentoring. To introduce agile processes to the team you could start with Scrum and put more process (taken from UP) on top of it. After some iteration you can maybe reduce the artefacts and adopt the process to be more lightweight.
Hope this makes sense,
Dirk
-
Post visible to registered members
-
David CabrerizoThe company name is only visible to registered members.Hi all,28 Jul 2006, 4:31 pmRe: Studends Desaster
One of the typical critics to the Agile methodologies is that are needed skilled and experienced developers. I guess its something not possible with students.
Regarding XP, my few experience recommends to put few young people to work together with lots of skilled people, so they start to learn and reach the level of the rest (and in this way they do it fast and well).
But well, lets continue experimenting ;-)
-
Martin Ankerl(not a XING member)- I got the experience that only people who have done quite a number of "traditional" Softwareprojects or courses at the university could manage XP. So I think that you need the experience in designing a complete software bevore developing it to get XP, and much of it. Whats your experience of that?28 Jul 2006, 5:51 pmRe: Studends Desaster
I think it is definitely possible and a good idea to teach XP to students, but it surely is not easy. XP has lots of techniques, so the difficult part is to split this into teachable junks. I would do it this way:
If the students do yet know how to write code in a programming language they should learn about loops, abstraction, objects, etc. first. If possible I would choose a language with as few syntax clutter as possible, Ruby is an excellent choice. For Java and C++ you need good IDE's so if you have to teach them how to use e.g. Eclipse too, they will be hopelessly overwhelmed.
Now get them up to speed with writing acceptance tests. Give the students a problem descriptions, and they should write the acceptance tests that should cover the functionality. They won't get a functional program, but that is not the point anyway. You can analyze their solutions with them and discuss their tests. Acceptance tests are an excellent basis to discuss code style, interface design, and lots of other things, so this will probably take quite a while.
Once you are satisfied with how they write their acceptance tests, you can teach them how to implement the functionality. The most important part is to tell them that they should try to find the simplest code possible that does what the tests request to do. I would guide them through some programming and refactoring sessions, then let give them one or two acceptance tests and let them work. Repeat this until satisfied with their test driven development.
- I got the feeling that XP relies much on the language behind. In my mind C++ f.e. isn't the language for XP. XP needs languages easy for refactoring, like dynamically typed or Java?
As said above, Java, C# or C++ are extremly bad when you want to teach them how to write decent programs. At the university where I have studied we used Pascal even though it was quite outdated, but it was simple to learn so it was a good choice when you want to teach programming concepts. Once they know the concepts it is easy to learn other languages.
- At the university many groups didn't followed the XP roules 100% since that is hard at first. However this resulted in a desaster. Many books on XP however say you should introduce XP one step by one. In our experience that doesn't work.
I think the difficult part is to decide which part to introduce first. for example it is probably bad when you first teach them how to do up-front design of programs and then teach them testdriven development where they do exactly the opposite.
How much do you think that XP is something good for real experts but nothing to use just for the everage programmer?
In my opinion XP is extremly good for average and bad progammers, because you do not need to be bright when you develop test driven. What you need is a lot of discipline and you have to be aware that your goal is to write the simplest code possible that gets you a green bar. That's definitely simpler than trying to forsee the future and make an intelligent up-front design.
Good luck with your teaching!
Martin Ankerl
-
Andreas Schliep Premium Member Group moderatorThe company name is only visible to registered members.Hi,28 Feb 2007, 09:04 amRe^2: Studends Desaster
The key issue in any project is that you just can't have an intelligent up-front design when you have to deal with changing requirements. However, it is crucial to have good design skills in order to provide a simple yet extensible and flexible design in an agile project.
Recommended Links:
http://www.agilemodeling.com
http://www.agilearchitect.org/
I don't know if there is any other way to learn XP than to do it. I recommend a little programming contest I've participated in at the XP Days 2004 in Hamburg. The Indian Poker Tournament can be played within a few hours. You can demonstrate planning, pair programming, test driven development, refactoring and other XP practices while the participants try to win the tournament with their poker bots.
Link:
http://www.laughingpanda.org/mediawiki/index.php/IndianPoker
Regards
Andreas
-
Jens Coldewey Premium MemberThe company name is only visible to registered members.There is a lot of research with XP and students in the USA. Contact James Caristi, Laurie Williams or Joe Bergin for their experience and Peter Sommerlad for his experience in Switzerland. To my knowledge they introduce XP over several semesters teaching programming skills, design patterns and refactoring during the course with pretty good success. Their trainers have industrial experience with XP and teach the students closely (but this knowledge is more based on reception talks with them, ask Google for more reliable information).15 Apr 2009, 10:31 amRe: Studends Desaster
XP as it stands is a methodology that relies on high design and architecture skills and high self-discipline - all of them are yet to learn for many students. So without a pedagocial concept to teach these, you're probably doomed.
As for C++ and template programming: You probably won't hand a Formula-1 racing car of the 70ies over to a learning driver and expect them to drive at maximum speed through the center of city. Both C++ and STL are very challenging, doing OO and refactoring with C++ is hard even for experts - and probably mission impossible for students.
Did you really teach them XP with all the practices (incl. TDD and refactoring!) and did you hand over a process description and left them on their own?
Jens
