Methodology
Posts about software development methodologies
I spent a rather interesting day at Microsoft , Reading at the Grey Matter Architect Forum. The focus of todays sessions was all about how other companies/partners are using VSTS and extending it. Heres some of my thoughts on the sessions today and on some of the things that sort of emerged along the way (at least, in my mind).
(1) MSF and VSTS: The session was by far too short. Alan Cameron Wills is a very engaging speaker and this talk came across very well. The first half was familiar territory since i have been looking at VSTS since TechEd 2004 and started using it recently. It was good to see that MSF is getting into the Factories space so that the process guidance can be tailored to fit with the factory approach. It would have been good to delve into more detail about what MS's plans are but we didnt have enough time. There were a couple of things that came up in the Q&A session at the end where Alan indicated that the CMMI template will have enhancements because MS is working with SEI to make things better. I gather that some extra stuff will also turn up in the Agile template. He did make a good point that we arent really expected to use the entire process template as is and that most companies will resort to customizing it in one form or another. As such, the out of the box templates are only a starting point, and they dont claim to be the final word on how you implement your process, so whatever enhancements MS provides would be cool but not something that should stop us from getting on with things now. Although the process templates are customizable, i gather (from other articles and books) that in the currentl scenario, this is not for the faint of heart. MSF is moving to a more 'composable' approach where instead of siloed "Agile" or "CMMI" templates, there will be a solid catalog of practices to choose from to make the process you want. There, of course, needs to be validation to check that we dont come up with some weird unworkable combination of practices.
I like the way VSTS chucks a ton of work items at you when you instantiate a team project. It gave me a lot of food for thought when starting a recent project. Its quite common to look down the list and think "Ooops!! forgot to sort that task out" so it helps keep you honest and on track. One thing I personally would like to see is "
Project Profiles". What i mean is this: if you take a large SOA project, when you instantiate it in CMMI and Agile (for instance, SCRUM) , what does the guidance look like? how does it differ amongst the two templates? what do the out of the box iterations look like? what do they say you should focus on first and what you should avoid? Similarly how about a B2B or a B2C project? what are the best practices there? when should we rely on the factories and when should we look elsewhere? This would be very helpful in figuring out which approach you want to take for your particular project. I guess that for very experienced architects the answers would be obvious, but this would be a solid fallback and a guide/checklist for those of us who arent exactly gurus in this.
(2) SCRUM and VSTS: Colin Bird from Conchango presented this. As quite a few people know, Conchango developed a SCRUM plugin for VSTS (collaborating with Ken Schwaber). Actually I didnt know it was free till today. Now i gotta go download it !! It was quite a dep talk on how to scale Agile with VSTS. Since I am not all that familar with Scrum (i mean i know what Sprints are etc but not very much more), i cant really comment on the content but it was quite interesting to hear what they have learned from large projects (some distributed and some co-located). These talks make me feel rather wistful sometimes. I wish I could be in a project where you can just have a quick/solid planning workshop and then go heads down in development while someone sorts out the impediments for you. If things arent fitting in the sprint, re-prioritise with the involvement of the client and move it to the next sprint. Wow!! I've heard this from many people including some of my friends who've worked with companies that are very heavily into Agile methodologies (names withheld). This has never happened to me. Its always been the case that my clients want the stuff done fixed price and they have commercial deadlines so they have to know when we are going live before we start!! Im sure im not alone in this!!
(3) Select Perspective: Rather all-encompassing toolset. I've heard a lot about it so it was good to see a demo. I did however disagree with the label "agile" applied to it by the speaker. I will agree that its adaptable and that we need to be more adaptable and flexible in the way we pick our processes and practices for the type of project at hand and it that sense the toolset with its collected "executable wisdom" helps us to be "agile", but this much of a modelling heavy environment surely cannot be a proper "agile" candidate can it? Isnt one of the main principles of agile to focus on working code rather than heavy documentation and models? If we spend so much time working out various architecture models then wheres the code? which stakeholder is going to pay for pictures? Now dont get me wrong. I'm all for setting out a blueprint before coding and detest the cowboys who plunge into code without a thought to the overall architecture.(okay, so if the whiteboard or the metaphor is enough and your stakeholders are happy with that, go for it!) My clients need to know how the system is broadly going to function and what the moving pieces look like at a high level and in my opinion any architect worth his or her salt who has worked in a particular domain for a while should be able to provide this info without having to first write a hundred unit tests and all the code for it. And im sure that the MDA camp would say "yeah, but spend time on the PIM and push the magic button and voila, its the PSM/code, so you havent wasted any time making that nice pretty UML model ". Something doesnt feel right to me. However, im not slagging off the toolset per-se. It looks quite solid and very formal risk averse environments would enjoy using things like that. I just dont think it should be labelled "agile".
(4) Essential Unified Process: Star Wars!! The Empire strikes back!! It looks like this is the return of the unified process albeit in a more "developer friendly" way. Take heart young Jedi, your process guardian is near!! IMO, the most outstanding thing (which unfortunately was only alluded to and not demonstrated) was the "intelligent agents", your persona/role buddies who can take on some of your workload in producing/reviewing artifacts etc, but otherwise nothing really stood out. Sure, its looks cool that you now have electronic storycards in VSTS and its nice to know that all the process vendors recognise that people are going to mix and match and are opening up their toolsets to allow this. IMO, this is a big plus and boost for Microsoft (but thats a post for another day). But for the folks who like the EssUP approach and who are investing in VSTS, this integration is sure to mean a great deal.
Now, how many feathers have i ruffled today?
Ah, the joys of the mighty incomparable Visual Source Safe. In combination with VS2003 Web Projects and IIS it can send any developer over the edge of Mount Doom. It wields more power and more malice than Sauron himself.
Sometime ago we had so many problems with VSS and web projects we were actively considering moving to Subversion (this is at my client site, in my own company we saw the light long ago and moved out of VSS to CVS and now SubVersion, but thats another story). Im keen on using TFS but thats in an evaluation phase now and since we are still working on a .NET 1.1 project (with Biztalk04) we had to make do with VSS. Just when we were about to setup the SVN repository some of the folk on the team felt comfortable that we had found a workaround with VSS web projects and so we dropped the move. Bad mistake. Now we are sort of nearing the end of the current phase of the project and were working on the build scripts. We are not yet into the CI world, its still in the automated build stage (or actually, the half automated build stage because of the aforementioned glorious product). The scripts reported some build failure in one application so we happily opened VS to check it. Boom.. first error. VSS doesnt like you opening solutions directly like that. It has to be done through the "Open From Source Control" mechanism. This messed up the solution for a bit but we eventually got a few projects open and corrected some of the issues. For instance I couldnt keep my solution files in their own folder because there was a MSI project in the set and it complained that the MSI project was in a different part of the structure from the solution, so i had to recreate the entire source tree for that section. Thank goodness for the GDN SourceSafeBindingRemover app. It let us make several passes at re-setting up the tree.
Set the build up again and yet another crash. This time, no matter how we tried to open the solution, IIS wouldnt let us. It just kept throwing vague errors about being unable to find the csproj file. We tried for 4 hours (including reinstalling IIS) but no luck. So finally we gave up and for that one project we put in a file copy task to get the code from a file system backup. It was rather sad and we didnt wanna do that, but there was no way to get beyond this error. The build scripts are back on track and we'll keep them that way till we can move to TFS or maybe back to SVN. Anything to get away from this monster.
One thing i hate most about VSS is the way its a sort of control freak. As long as you let it dictate the place you store your web app files (and keep them in wwwroot, away from the rest of your code base) and let VS create the solution folders in whatever way it knows best, its all fine. The moment you try to create a disciplined source tree and keep your web projects together with the rest of the code, thats the start of all suffering. I used SVN in a previous project and never heard a murmur from the system. It just worked!! In the old days, when i started out, (in 1996) we used VC 1.52c and VB4 and VSS was fine for all that (with small teams of course), but when web apps came out, they should have done some thorough revisions, especially when you have seriously good open source competition. Its amazing that after so many years, MS still hasnt managed to get VSS to work decently with web projects. And now, the only MS option is the costly TFS. Just google for VSS and web apps problems and you'll probably get a million results. I nearly laughed out loud when i saw one of the results was an old teched hands on lab for setting up a "builld lab" with VSS and VS2003!!
yeah, i know, someone is going to reply saying RTFM, theres a way to work with web projects, there are workarounds and all that. I've heard it all before. There is just no reliability with it. An automated build should at least let you sleep easier at night not keep you awake fretting about what new horrors the results of the build will reveal and what new workarounds you should find.
VSS RIP can never come too soon for me. !
I attended the Microsoft Architects Forum in London last month. (Since I was officially on hols I didnt get round to writing up my notes and blogging about it, but I will do so shortly). It was on Software Tools and Methods and was quite brilliant. I found the presentations by folks from Conchango and Tesco very informative, especially being a newbie to the Agile Methodology world. I think Im beginning to see the light. It was even more interesting to realize that Agile and XP are not the same and that XP is only one of the variants under the Agile umbrella. I like the longer iterations of Scrum, in theory, more. [When I actually start using it, I'll be able to post more raves and rants on the same].
James Simmonds of Conchango has some good stuff on his blog. I really like the one on Scrum Sprint Best Practices. Howard Van Rooijen has also put up his slide deck replete with notes and its very nicely done. Havent had time to read more of the other blogs but Im sure they would be good.
I also had good conversations with Aravindra Sehmi about the Enterprise Library and with Michael Platt about the Architect Certification that he had blogged on some time ago. Need to ping Aravindra and Clemens to find out whether Proseware will be released publicly like ShadowFax.