Doug Perkes wrote: > parameters, etc. In short, the code is a mess.
I'm going to recommend a strategy that leads to you splitting into ~6 Dougs. If your species lacks this capacity, you are going to have to chose your battles _very_ carefully here. > Also, I am new to extreme programming and agile > methods in general. I > have read a couple of books (an extreme programming > book a couple of > years ago and am about 2/3 of the way through with > _Agile Software > Development_ by Robert Martin). Read /Working Effectively with Legacy Code/ by Mike Feathers, and also read a TDD book, such as Jim Newkirk's. > I am having some difficulty approaching the project > for several reasons: > * Currently I am the only developer working on the > conversion project, > but have been working on management to get someone > for me to pair > with. The question "can I waste someone's time all day" has never worked for me. If you could pair briefly with either this code's author or someone who gives a darn about it, that would be better than full-time pairing. Generally, either get a team and a coach and go full-bore XP, or stick with what you know and migrate opportunistically. _Don't_ check off practices one by one, or do the ones that are easy or the ones you get permission to do. Pairing without a greenfield project can be damaging. Software development has two nested cycles. Writing code is the inner cycle, and releasing features is the outer cycle. You will stabilize your process very early if you introduce some of the aspects of TDD to your inner cycle, and if you release a new version, with fanfare, every Friday. > * The code will need to be almost entirely > re-written. The code shows a great investment in debugging, so don't throw that investment away. > * I am not comfortable with the data model (there > isn't an existing > object model). If I change the data model, I will > have to be able to > convert the existing data. If it ain't broke don't fix it. If you must fix it, consider _duplicating_ features. Run with two data models at the same time, and lots of Debug.Assert statements that ensure they always agree. This is a kind of test too. > * Management has never done an XP project before Unless they are enthusiastic, shut up about XP. Talk about "iterative development", "robustness", and "testing". > * I am new to the company and don't have all the > domain knowledge to > completely understand the system Making a pest of yourself might not be wise. However, here is your leverage to get a pair: Schedule time with the resource who knows a little about what you need. > * Whenever I try to get management in a room to > discuss the > functionality of the system, they always seem to > want to focus on > making sure the user interface is pretty instead of > creating testable > software. That's because they can see its pretty interface with all those flashing lights and twinkling things. If you had a greenfield XP project, it would produce a literate acceptance test output as a secondary user interface. Your mission is to simulate one. If you can comprehend FIT get it, otherwise just write a dumb program that reads your data and outputs HTML to a Web page. Make your managers respond to _this_ interface. Point to the bugs. Point to the low metrics. Ask which to improve. > * Management has put a lot of trust in me and I > really don't want to > screw this up. Have they given you both authority AND responsibility? > If you were in my shoes, how would you approach this > project? What > should my first steps be? How can I rein in > management to understand > the importance of helping me to create user stories > that are small, > testable, and estimable? I would start a brand new project from scratch, and write tests that force me to copy tiny snips of code from the old to the new. And I would ensure that I can still frequently release, such that each week the % of old code in each release goes down. Good luck! ===== Phlip http://industrialxp.org/community/bin/view/Main/TestFirstUserInterfaces __________________________________ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail To Post a message, send it to: [EMAIL PROTECTED] To Unsubscribe, send a blank message to: [EMAIL PROTECTED] ad-free courtesy of objectmentor.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/extremeprogramming/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
