If you're the type that prints out the Agile Manifesto and slaps it on your cubicle to evangelise to anyone who walks by, then head on over to CodeBetter.com. Jeremy Miller has put together what he calls The Programming Manifesto and it's simply brilliant.
It's simple, hits the points that need to be talked about, and is backed by a lot of common sense and goodness that everyone should have embedded into their noggin' at birth. It's not complete (although I'm can't think off the top of my head what complete would look like here) and I'm sure it will evolve (hopefully not into something big and ugly) but this is a great set of ideas to start with. Like Jeremy said, you might agree or disagree with some (or all) of these but it's something to go from. Why not create your own or adopt what you see here. I see maybe this evolving into "The Developers Manifesto" and perhaps a different one called "The Architects Manifesto", but that might be overkill.
In any case, a good read for any developer trying to "get it". Check it out here.
In this crazy age of monthly (and sometimes weekly) CTP builds, I see that Jamie Cansdale released the RTM version of his highly successful (and arguably the best damn add-in for Visual Studio hands down) of his TestDriven.NET tool. The screenshots kick the monkeys butt and I'm excited over some of the integration he's pulled off (with Reflector and other tools) and how the product just keeps getting better.
I personally bought a copy and recommend any developer worth his or her TDD salt to do so. Writing and testing code has never been easier. He's also got a deal going with the guys over at TypeMock with integration (and there's some bundling of both products to save some simoleans). I only wish he would include NMock2 support as I'm kind of hooked on that lately and don't need the Cadillac that TypeMock is.
Funny thing, when I was spell checking this post in Live Writer, here's what it suggested for TestDriven.NET:
In any case, go check it out and you won't be disappointed.
Yes, today I turn the big "4-1". I guess it's bigger than turning the big "4-0" but it doesn't feel like it (although turning 40 didn't seem like it either). I'm not really sure what a 41 year old man looks like, but many people comment I don't look 40 (or 41 if you ask me that question today). Guess it's that baby face I still (kinda) keep or my girlish figure but if you cut me open and count the rings, there's 41 of them today.
As my Birthday present, the powers that be decided they would dump 10cm of snow in our backyard. It's a winter wonderland out there today while only yesterday (and I do mean yesterday in the literal sense) we were wearing light jackets and wandering around free and alive. Today it's big heavy coats and sweaters and boots that take decades to tie up. We're having a new fence put in the back (135 feet across the back, we have a 1/4 acre backyard) so while it's not only expensive it's a lot of work. Luckily for the lazy person that I am, you can fix this quite easily. Hire someone. They came out and put the posts in which need to set and while that was all going on, a crazy dude with a bobcat turned our weed ridden backyard into a flat, dirt paradise. I was commenting yesterday that we could probably build a go-kart track back there (yes, it's THAT big) but then there's the resale value issue, so that idea was nixed. Now however with the dumping of the Christmas cocaine all over, I'm not so sure about the fence and less sure about the sod we were going to plant. There is hope though, as this is Calgary. In Calgary the running joke is that if you don't like the weather, wait 5 minutes. By next weekend all the snow might be gone and it'll be construction as usual.
Also, since this is the 41st year of my existence on this planet I thought change would be good so I'm trying out Live Writer. Live Writer is a client side blogging tool. I've been very happy with BlogJet, buying a copy last year, and it's served me well. However as some people have mentioned, BlogJet hasn't really been updated much and I think on of the key things with software is agility. The ability to adapt to the community. BlogJet has the features you would want in a tool. Offline editing, WYSIWG look, inserting images, automatically uploading files via FTP, spell checking, retrieving old posts, etc. Sadly it falls short in the extensibility arena as there is none.
Enter Windows Live Writer, a free client tool that Microsoft put together to fill the niche for bloggers. While a little late on the market, it certainly is impressive. First off, it just feels better and looks more pleasing. However get past the glam and it's all about the features. OOTB it's a great tool and handles all of the basics needed for blogging. Categories are available and whatever properties your blogging engine supports are there. The editor is nice and lets you edit in the look and feel of your blog, pulling down the styles directly from your blog site so it feels much more at home than BlogJet does.
Where it really shines is the plugins. The API is open so anyone can write them and they're pretty easy to pull together. There are dozens of plugins out there now that you can see here. I'm using the Flickr one as well as one that let's me insert a file via FTP and an email link one. They're simple and sit in a task pane to the right while you're blogging. Just click on it and the plugin takes over, inserting whatever HTML it needs and performs whatever tasks it does. For the blogger that needs to cut down on the heavy lifting while writing a blog post, this is key and well received.
Another thing is tagging. You can insert tags like ones to del.icio.us, Technorati, and such but also design your own. Once I get some time I'm going to see how to configure one for DotNetKicks and SharePointKicks (or if you've already done it please let me know the format). That's slick as I don't have to do silly things like save a draft of my post, retrieve the URL, hunt down the snippet I need and reformat it to use the blog entry address. That's what I'm doing now and it's a PITA. With tag insertion you just pick the provider and when the entry is posted, it'll substitute keywords with your entry. One-click posting, that's the way it should be.
Best of all, Live Writer is free!
So goodbye BlogJet, hello Live Writer. Let's see what you can do.
Okay, I know I haven’t posted a lot of SharePoint content lately and I won’t go into the million and one excuses for it but I wanted to reach out and see if I could get a little help keeping our SharePointKicks site alive and, well, kicking.
While there have been articles posted recently, there’s not much making it to the site. I am personally going around and trying to find time to hunt down those choice morsels to post to the site and they are out there, however we still need your help. Please continue to post article links to the site to keep it fresh and growing. If you write a SharePoint cool blog, kick it. If you see a cool SharePoint blog, kick it.
Remember you can add your own little piece of Kick it code to your postings with this snippet:
<img src="http://www.sharepointkicks.com/Services/Images/KickItImageGenerator.ashx?url=[URL]" border="0" />
I would really like to start posting a “Most Popular SharePoint Stories of the Week” entry based on your submissions. Gavin Joyce, who runs all the *kicks sites, has one going for DotNetKicks (see example here) so I figure I’ll reciprocate. Each week I’ll do a similar posting, using the most popular stories listed that week on SharePointKicks. Of course, we need your submissions to keep that task going so please help out.
Also remember to help out with DotNetKicks by submitting your .NET stories and the recently released SecurityKicks for all kinds of security goodness (run by my fellow plumber James Kovacs). Your login to one of the sites is good for them all. It’s kind of like a Disney Park Pass, only cheaper and the lines are a lot shorter.
Thanks for the help! Without you guys, the SharePoint community, keeping SharePointKicks alive and humming it’ll fast become a ghost town. Also if you have ideas for improvements please send them along as there’s always something better out there.
It never ceases to amaze me that as freakingly smart I think I am, how stupid I appear when someone like Ron Jeffries steps into the conversation. He suggested an easier approach to prioritization that Kent Beck and Ward Cunningham taught him:
- Write the ten items, one per card, on ten cards.
- Pick a card and put it on the table.
- Pick another card, and put it to the left of the first card, if it's higher priority, to the right if less.
- Pick another card. Position it to the right or left, or in between the preceding two.
- Repeat until all cards are down.
- Look at the cards pairwise, switching their positions until you're happy.
No muss, no fuss, no wear and tear on your calculator. Works in a group, too.
Just to note that the matrix approach I posted about doesn’t really scale very well. As you get 50 backlog items you’re now comparing over 2000 individual items so maybe just looking at each item and doing something like the excercise above works better in this case.
I was having a discussion tonight with Mrs. Geek and we were chatting about prioritizing and estimating in projects. Yeah, it’s an odd relationship when you talk about this at home but then that’s what makes her Mrs. Geek. Anyways, she’s very scope focused and has done estimating and management on mega-projects but was never exposed to Scrum. I was trying to explain how Scrum works from a prioritization perspective and we got into this conversation.
As we got into it I explained how Scrum generally worked with prioritizing features. Not a lot of info is out there on *how* to prioritize, just that it’s part of the process. The Product Owner (PO) is meant to prioritize this list, however a lot of times while they may know what’s important to them, if it’s one person doing the prioritization you might miss some different perspectives.
Most people practicing Scrum say the PO does know his thing and will do the prioritization correctly, however a lot of times when new teams are adopting Scrum they may not have an approach other than something very traditional. For example Dmitri Zimine has a blog entry here on how to prioritize the work, but his technique is like most might think. Put the list up on a wall and assign values to each item (1–9, a-z, whatever). This is fine and produces a list but it’s hard to say if this is prioritzed very well or not.
Also there are many examples out there that show Product Backlog items like “Setup development environment” or “Provide Extract from Database to External Sources”. How is a Product Owner who has little or no knowledge of say the IT infrastructure or their processes supposed to prioritize this? To an IT guy, this is most important (and required to say do other things like oh, test the application) but for others that are more business oriented they might see this as low priority.
So let’s start with the traditional approach. Put together a list of items (our Product Backlog) and having the Product Owner prioritize it. Here’s our prioritized list:
Priority Backlog Item 1 Setup Development Environment 2 Ability to sign up for memberships 3 Ability to use credit cards to pay for memberships 4 Notify members with membership data 5 Generate receipts and certificates 6 Authoring environment for articles 7 Web site look and feel and initial navigation 8 Display sponsors and links to web sites 9 Organize and sort articles 10 Library catalog for articles
Our PO thinks that the ability to organize and sort articles isn’t that important and more importantly is the ability to notify members with membership data (perhaps to publish a newsletter). We’re not sure based on these items what some of this means, or the method they went through to arrive at this order but we have to go with it as that’s what the customer wants right? I find the process to create this list to be flawed. While it’s great that the PO has put together the priorities, he does so by only looking one dimensionally at the values. Also whether they knew it or not, they’re probably not really looking at the entire list each time they try to prioritize each item.
For example, once you’ve gone through the first 5 items in our list you have their weights setup and assigned. Subconsciously I think you now dismiss those items for future planning. Sure, you’ve weighed those items against others (like Membership to Authoring) but when it comes to prioritizing Authoring, you ignore the inverse comparison of Authoring to Membership as you’ve already prioritized Membership. That’s cheating the process a bit and not giving the Authoring feature a fair chance. It only has to compare to what the left over items are and we know that inverse comparisons are not always just as simple as the opposite of what you’ve already looked at.
Enter a technique called the Analytic Hierarchy Process (AHP). This is an organization approach that focuses on the relative importance of objects to each other. This will take us from looking at our Backlog in one dimension to looking at it in two, and the outcome is a more well defined set of numbers that tells us what the priorities really are. In a nutshell, it does so by comparing each item to another item, then adding up the values for each item to arrive at a weight (or ranking, priority, whatever you want to call it).
Now, as Scrum is a simple process unto itself I wasn’t too happy when I read through the various explanations on AHP. Edwardo Miranda has a great white paper called “Improving Subjective Estimates Using Paired Comparisons” on how the process works. However once I saw those crazy mathematic symbols explaining the calculations behind it, my blurry college and university years came rushing back and I almost blacked out. James McCaffrey has a short MSDN article on using the process which didn’t get into as deep as Edwardo’s explanation, but I still thought it was too complex for Scrum.
Like I said, this whole conversation started tonight as we were talking about project estimates and priorities. Then it hit me that you could take the uber-simple process of tossing items into a list but apply AHP to it to get something a step above, but not as freaky as learning thermo dynamics or theoretical physics again. We went through this process while discussing the subject tonight so let’s take a look at how we can come up with a better list of priorities than what we have above.
Break out Excel (or do it on a white board for that matter) and set up your items as rows and columns in a matrix. Something like this (I’m using numbers for each item in the top row so it’s easier to read here, but you might want to use the full names set at an angle in your spreadsheet):
Feature Name 1 2 3 4 5 6 7 8 9 10 1 Setup Development Environment 0 2 Ability to sign up for memberships 0 3 Ability to use credit cards to pay for memberships 0 4 Notify members with membership data 0 5 Generate receipts and certificates 0 6 Authoring environment for articles 0 7 Web site look and feel and initial navigation 0 8 Display sponsors and links to web sites 0 9 Organize and sort articles 0 10 Library catalog for articles 0
The order isn’t important here so it can just be your raw Product Backlog. Now go to each cell and compare the Feature to the other Feature in each column along the row (comparing the same item is redundant so it’s ignored and indicated here with 0). For example we’ll start with Setup Development Environment (Item #1). Is it more important, less important, or just as important as the ability to sign up for memberships (Item #2).
Give it 1 if it’s less important, 5 if it’s the same, and 10 if it’s more important. I find the 1–5–10 combo to be easy to use and remember. It’s either obvious it’s the same or more/less important. While you can assign say a number from 1–10, it starts creating long winded discussions like “Should it be a 6 or a 7?”. That’s detrimental to the exercise and you really don’t want to go down that rat hole.
A couple of things to note as you go through the items. You can compare Features from any angle you want. Sometimes it might be the business value, other times it might be risk or cost or whatever. You have to decide what’s best for the overall product. Also make it simple but don’t spend more than a couple of minutes for each item. Don’t try to keep track in your head of what the last compare was as it might taint what you’re really trying to compare against. Just focus on each item to each item then move on. Plain and simple.
Once you’ve done the first comparison, do the next column over and keep going to the end. Then start the next row and repeat the process. You’ll end up with a grid that looks like this:
Feature Name 1 2 3 4 5 6 7 8 9 10 1 Setup Development Environment 0 1 1 1 1 10 10 10 10 10 2 Ability to sign up for memberships 10 0 5 10 5 10 10 10 10 10 3 Ability to use credit cards to pay for memberships 10 5 0 10 5 10 10 10 10 10 4 Notify members with membership data 10 5 1 0 5 1 1 1 1 1 5 Generate receipts and certificates 10 10 5 10 0 5 10 10 10 10 6 Authoring environment for articles 5 10 10 10 10 0 10 10 5 5 7 Web site look and feel and initial navigation 10 1 1 1 1 1 0 5 1 1 8 Display sponsors and links to web sites 10 5 5 10 5 5 10 0 5 5 9 Organize and sort articles 10 5 5 5 10 1 10 10 0 5 10 Library catalog for articles 10 5 10 10 10 5 10 10 10 0
Looks good and yes, it does take some time. For 10 items, you’re doing 90 comparisons but don’t cheat. Do the actual comparison. Think about if it’s really more or less important (or the same) and be honest. Just like you do an estimate on a task, think about it from whatever angle that makes sense. It does give you perspective on things and lets you look at your list in a different light. The heart of the application, the core functionality that’s most important will bubble up eventually. For example in our scenario here, the PO felt that item #2 (sign up for memberships) was more important than item #4 (notifying members with membership data) but about the same as using credit cards for membership. Maybe that was a revenue decision, maybe it was functionality. Doesn’t matter as long as there was some thought behind it. Also try not to look at the other values. You won’t be doing yourself any service if you just replicate the inverse of the other values as that’s no different than doing a one-dimensional list. If you’re capturing it in Excel, just hide the first row when you move onto the next.
Now that you’re done, add up the values across the columns. This is our weight for each Feature. Now sort the list based on the value for that total and you’ll have your prioritized list. It’s that simple. Here’s our result from this exercise:
OR Feature 1 2 3 4 5 6 7 8 9 10 R 2 Ability to sign up for memberships 10 0 5 10 5 10 10 10 10 10 80 3 Ability to use credit cards to pay for memberships 10 5 0 10 5 10 10 10 10 10 80 5 Generate receipts and certificates 10 10 5 10 0 5 10 10 10 10 80 10 Library catalog for articles 10 5 10 10 10 5 10 10 10 0 80 6 Authoring environment for articles 5 10 10 10 10 0 10 10 5 5 75 9 Organize and sort articles 10 5 5 5 10 1 10 10 0 5 61 8 Display sponsors and links to web sites 10 5 5 10 5 5 10 0 5 5 60 1 Setup Development Environment 0 1 1 1 1 10 10 10 10 10 54 4 Notify members with membership data 10 5 1 0 5 1 1 1 1 1 26 7 Web site look and feel and initial navigation 10 1 1 1 1 1 0 5 1 1 22
The “OR” column is our original ranking we did just by looking at all the items and coming up with the priorities. The “R” column is the weights calculated by adding up all the item to item compares.
Notice that after going through this, we find out that the all-important Setup Development Environment Feature is way down on the priority list, the Library Catalog for Articles that was the least important item now is somewhere in the middle, and the look and feel (when all is said and done) really is the least important item and should be done last. These are valid numbers as the PO went through and decided, on an item by item basis, what was important at the time.
Now this isn’t to say that this is gold. For example, we may need to setup the development environment in order to deliver the ability to sign up for memberships. This is where I belie the entire team, not just the PO, should prioritize the items (unless the PO really knows everything, which is rare). The PO should be telling the team why something is important while the team works out what’s risky or perhaps required for some items to be delivered.
A little negotiation goes a long way, but the main thing is that you get to see what’s really important here and why. Along with the why, you get to see the what. There are a lot of things that are 80 here but when you compare one item to the next, there are subtle differences. This will help when you have all those #1 items to deliver in Sprint 1 and don’t know which one to start on first.
Okay, this is a mythical example using made up values and such, but it really does work. It provides you a better weighting of what’s important and does put some pseudo-science behind it. As I said, AHP in it’s traditional form can be complex and what I’ve presented here is a simple version of it. In trying to keep with the tradition of Scrum being simple, I hope this echos that. You can, as you see fit, add layers to this process (or choose not to adopt it at all). For example, you can take those weights and apply them to estimates (costs) in your system to figure out what the best bang for the buck is (thanks to Mike Cohn for that tip).
Use what works for you but when you’re done the idea is that you might end up with a more accurate view of the prioritized world before you begin your Sprint.
P.S. Completely unrelated (but I found it while I was checking some references for this article) I noticed Mountain Goat Software, the site Mike Cohn runs got a major face lift. Looks a lot nicer now and easier to navigate. Check it out here as there’s lots of great articles and resources there on Scrum.
Lately I’ve been making Redmond my second home, working with the e-Learning folks on SharePoint stuff. Two cats that I dig are Howard Dierking and Glenn Block. They both are product planners for courses, exams, etc. but don’t let the title “Product Planner” (which really isn’t all that exciting is it?) fool you. These dudes are both hard core developers and really know their stuff. It’s very refreshing talking to them as I can chat them up about Domain Driven Design and whatnot, without having their heads spin around and explode like most people I meet.
So if you’re interested in how the whole e-Learning thing works with Microsoft, what these guys do, or just want to check out another couple of ex-developers-gone-crazy-who-want-to-take-over-the-planet, visit Howard and Glenns blogs. Hopefully they’ll live up to the reputation I’m making them out to be.
The guys over at Dot Net Factory have announced that they’re released a free community edition of their SharePoint navigation tool. This is a plugin for your browser that lets you navigate sites more easily. The blurb from the website:
The Dot Net Factory’s SharePoint Explorer is an IE add-in providing end-users and administrators the richest possible SharePoint usage and navigation experience for all SharePoint 2003 and 2007 versions. SharePoint Explorer provides a friendly tree-based interface allowing novice and expert users alike to see all SharePoint sites and content at a glance while providing right-click menus for all common functions.
- Installed on your PC to work with any number of SharePoint servers and sites
- Visualizes all SharePoint Areas, sites, Document Libraries, and Lists to any depth
- Navigate to any location in a single click
- Quick search of any site
- Context sensitive right-click menus provide instant access to almost every function
- Items counts display for Document Libraries and Lists
- My Outlook functionality providing quick access to Outlook while working with SharePoint
- Add alternate credentials for accessing different sites with different user accounts
- Internet Explorer 6 or higher
- .NET Framework 2.0 or greater
- Access to any 2003 or 2007 version of SharePoint
It fully supports 2003 *and* 2007 versions of SharePoint so something to check out. You can find the download here.
Spent most of the day hanging out with other MVPs in Calgary (including one that came in from Medicine Hat of all places) at Microsoft Canada. We had a regional event where all the little MVPs got together and talked. It was fun and we got to find out some more info about the upcoming 2007 Microsoft Launch Event which I’m sure you’re all registered for. If not, then please do as it’s going to be huge (Vista, Office 2007, and Exchange 2007). I’m personally going to try to get out to Edmonton and Calgary for the launch events and pontificate about SharePoint, Office, and whatever else I can dream up.
On Wednesday I’m a panelist at the Alberta Architect Forum at the Metropolitan Centre (333 4th Avenue S.W.) here in Calgary. I’ll be speaking along with my fellow Plumber James Kovacs (with Microsquishy John Bristowe in tow) on SOA in the real world. We’ll muddle through various aspects of Service Oriented Architecture and make some short presentations and try to bring up a lively discussion. There’s events going on all day about SOA and Architecture in general so I highly recommend checking it out.
Working this weekend on some new SharePoint stuff which you’ll see in a few weeks but thought I would pull together a list of tools to help people with Scrum. These are tools that help you plan iterations, keep track of your updates, and generally make life easier for the ScrumMaster or those working on Scrum projects. Not to say a plain old whiteboard with post-it notes or Microsoft Excel won’t do the trick, but these tools take you a little bit farther and help you keep track of things holistically.
Some are open source, others are not so check them out if you’re looking for something extra to add to your Scrum process. Where noted, I’ve given some suggestions about using these tools where I’ve already taken a look at them for you, but please make up your own mind with your own eval if you’re serious about a product (especially one that costs $$$).
Java server based artifact tracking system, highly customizable. Distributed under a BSD/Apache style license.
Double Chocco Latte
Sounds more like a special at Starbucks but this is a package that provides basic project management capabilties, time tracking on tasks, call tracking, online document storage, statistical reports, and a lot more. PHP based, supports both Apache and IIS, MySQL or SQL Server (and others), web based client. Distributed under the GNU General Public License (GPL).
This is a commercial product that provides program, project, and iteration management and fully embraces the Scrum process through requirements planning, release planning, and iteration planning and tracking. Trial version can be downloaded and run locally. Runs under ASP.NET and IIS with a SQL backend. I’ve given VersionOne a test-drive in the past and it’s complete and a good, solid product. The only thing is that it’s got a LOT of options so if you’re looking for something simple, this isn’t the tool.
GNATS is traditionally a bug tracking tool, but according to Jeff Sutherland it’s Scrum-ready (whatever that means). Licensed under the GNU General Public License (GPL).
Select Scope Manager
A commercial web-based package that provides planning capabilties to all aspects of Scrum and XP projects. Evaluation version available to download from site. I’ve worked with some Select products in the past and they’re not bad, but not very customizable.
This is a hosted solution so you only need download the client and retrieve data from their servers. Commercial package but doesn’t seem to be anywhere you can download anything or even see the product. I would stay away from this one.
This is an interesting tool and very simple in appearance. It basically provides an electronic version of story cards and does some tracking (like your velocity). It’s simple but maybe too simple and personally I felt the interface seemed like an old VB app that someone threw together. Still, I think it works.
TWiki XP Tracker Plugin
Here’s a bit of a switch and not a stand-alone tool but a plugin for a wiki system (TWiki). It provides custom templates and helps you track information on XP projects. While not really Scrum related, it does let you track stories and releases so you might have to modify it in order to fully use it for Scrum (Scrum != XP). TWiki is released under the GPL and is Perl based (blech) so as long as you can run Perl you can run TWiki.
This is an open source Perl based system built for Linux and Solaris running Apache 1.3 or higher. They claim it will work on other platforms, but YMMV.
Another web based project that’s distributed under the GNU General Public License (GPL). Uses PHP and MySQL so running under Linux, Windows, or Mac should be fine. The demo doesn’t render under IE7 so I couldn’t check it out for you.
Probably the grand-daddy of the open source projects of this type, XPlanner is distributed under the GNU Library or Lesser General Public License (LGPL) and free. Requires Apace Tomcat to run so expect to spend a little time setting this up on Windows (but it does run as I’ve done it). Lots of options, pretty stable, respects Scrum and XP and how they work, and very simple to use. Actively being worked on and many open source projects use it for their own planning (Hibernate, JUnit, Log4J, Struts, etc.) so updates are pretty frequent.
A professional looking product that touts features to support all aspects of Scrum. Support single or multiple teams working on the same or different projects. Client based but has a Web Client as well for some members of the team (say your PO that doesn’t need to get down and dirty with Sprint Backlog Items). Requires a trial license but you can get a copy for free just by requesting it. Nice piece of software that is backed by support forums, a wiki, and an API for extending it’s capabilities.
An interesting project that offers the ability to cover all aspects of Scrum (and then some). Very customizable down to custom fields you can display and use in reports. Client/Server based but features a plug-in for Eclipse if you have it in your environment. Guest accounts are unlimited and free (so POs and non-core team members can just use it to view the status of a Sprint). Downloadable trial but the full version will set you back some Scrum bucks.
I really like this tool, but maybe because it’s .NET web-based. It’s simple to use and setup and cost-effective for teams. While it doesn’t feature as many screens as other products, what it does supports Scrum and Agile projects with simple inputs and direct reports and charts. Nothing fancy but then neither is Scrum. Free trial avaiable and demo available online and you can download a 1–user pack completely fully featured and free (but with no support) so it’s great if you’re doing little one-man projects and you just want something to keep track of your progress and work. Supports SQL Server and MySQL but requires IIS and ASP.NET so it’s Windows only.
Lots of features for this commercial package, but not a lot of customization available so you can’t completely tailor it to your process. Requires Windows, Linux, or MacOSX platforms to run on (with Java 1.4.2 or higher and Apache Tomcat 4.1 or higher) or you can let them host your projects for you (for a fee of course). Simple interface makes it easy to enter information and covers all the aspects of Scrum planning including test case tracking and typical burndown charts.
Enteprise level hosted project solution. Tons of features and lots of customization available (even for an online hosted system). Met these guys in Calgary during Agile World a couple of years ago and back then the product was impressive, so I can only imagine what they’ve improved on. Free demo online to check out and setup a project to see if it works for you.
Scrum for Team System
Saving my personal fav til last. We’re using this on a few projects now and it rocks. An add-in guidance package for Microsoft Team System, it fully covers Scrum and lets you get work done fast. No customizable available but it works without it. Co-developed with Ken Schwaber so it reflects how Scrum needs to be done. Let’s users create their own views but comes with a dozen or so that are quite sufficient. Supports single team or multiple team projects and is currently being updated to version 2.0 where it’ll have more flexibility. If you have Team System in place and are struggling with the MSF for Agile package then take a look at this, you won’t be disappointed.
If you’re a one-man shop, I suggest you check out TargetProcess as it can be setup in a few minutes on a server or your own development desktop. If you already have Team System in-place, take a look at Scrum for Team System. If you have nothing but could run say Tomcat, then XPlanner might be the way to go as it’s simple but works well. Give a couple a test drive and see what’s best for you.
Go get this:
Then meet me on the global battlefield (although I won’t be playing North Korea).
Matthew Broderick eat yer heart out.
We wrapped up taping the latest episode of Plumbers @ Work, our Canadian developer podcast that I do with John Bristowe and James Kovacs, on Wednesday. At the taping after bitching about how long it’s taking for the shows to get online, I was informed that our previous episode had made it up to the site (I’m always the last to know). As John is making up for the lapses we’ve had in the past by being the crazy midnight podcast editor that he is, Wednesdays episode has been cut and bagged and is now online as well. Thanks John!
This guide is offered as a public service announcement to help you wade through the myriad of products and technologies made by Microsoft for those in this dilemma.
You shoot yourself in the foot.
You shoot yourself in the foot because there are no options to do anything else.
You try to shoot only to discover your gun doesn’t work. After searching for the topic the answer that’s given is “Have you tried turning it off and back on again?”.
You can create a complex formula to calculate trajectory, angle, and bullet speed only to find out that you’ve created a circular reference.
You put together a presentation about how you’re going to shoot yourself in the foot but can’t click on the trigger to start the slideshow because it’s too small.
The spel chek on amunition prevents you frum pulling the triger.
You try to shoot yourself in the foot but realize that FrontPage has completed reformatted the gun and removed the bullets.
You fill the gun with too many bullets and find that this action has caused the gun to become corrupted.
As you try to shoot yourself in the foot your gun re-levels its resources and allocates the bullets for another user.
You send yourself an email with an attachment on how to shoot youself in the foot only to find Outlook blocked access to the following potentially unsafe attachments: ShootFoot.exe.
You can’t find your the gun from all the papers stacked up on the desk and the dog keeps barking at you.
You ask Clippy how to shoot yourself in the foot but he offers to write a letter about the pros and cons of gun control for you instead.
SELECT [Bullets] FROM [Gun] LEFT JOIN [Foot] ON [Leg] WHERE [Gun].[Bullets] > 0
You’ve tried to shoot yourself in the foot too many times and changed out the bullets twice so Windows prevents you from continuing and shuts down.
You decide to not even bother trying because it just isn’t worth it and wish you were in a better place.
You try to shoot yourself in the foot, but it looks too darn pretty. Then your foot explodes.
Visual Studio Team System
As you try to shoot yourself in the foot the compiler warns you of too many code violations and that the connection to the Team Server is down and doesn’t allow you to pull the trigger.
Your gun overheats and locks up before you have a chance to pull the trigger.
You get through 5 steps into the process, but then your foot tells you an error has occured.
You try to shoot yourself in the foot but can’t find it because your foot has been security trimmed and you don’t have the right permissions.
Your gun is incompatible with your bullets and the trigger is disabled because you’re not in the right zone.
Feel free to add your own or improve on my pathetic attempt at humour.
Mike Cohn over at Mountain Goat Software has been in the Agile software development river since 1993. He's the author of the most excellent book Agile Estimating and Planning and really knows his stuff.
For those wanting to greenfield Scrum at your organization, he's got an excellent powerpoint slide deck to start from. It talks about what Scrum is and highlights the key things that you can use to show benefit to management. Mike encourages people to download the presentation and run with it, making adjustments as you need to adapt it your environment. The killer thing about this is the presentation is available under the Creative Commons Attribution 2.5 License. This is excellent for the Scrum community as we can go off a base from a respected source. I encourage everyone to join the bandwagon and help promote this by making it work for you. Scrum isn't a silver bullet, but it just plain works. You can grab the slide deck from here. Also available is a French version generously translated by Claude Aubry.
To add some icing on the cake, there's some great pictures of the Scrum process that Mike has made available of the process itself which really sums it up. These are great for decks or just print them out as a poster to hang in your team area to let everyone know the simplicity of the process. You can check out the picture files, also released under the CC license, here.
Watch for the Scrum tatoos coming soon to a blog near you.
We were finishing up our taping for the latest episode of Plumbers At Work, and the issue of IE7 (just recently released) vs. Firefox came up. The first thing that came out was of course the “browser wars” statement and that it’s still going on. Actually, I have bit of a different take on what the war actually is and who’s winning.
So what’s the war really about? Market share? Nah. That’s just attrition. Microsoft has a Googolplex (no, not Googleplex) of deployed systems out there and every one of the them ships with this thing called Internet Explorer. It’s the default browser, and other than you, me, and a few thousand of us geek boys (and girls) the average 40 year old virgin who plugs in his latest acquisition from Best Buy doesn't know there are other choices. Certainly when you boot up XP you don’t get a “Would you like to use Internet Explorer as your web browser, or go surfing on the net to find another one?”. I know what my grandpappy would say (assuming I could even get him to use this new-fangled gadget called a computer). “Surf for something I already have? Poppycock.”
The masses out there with their out-of-the-box-stock Dell PC have no clue how to find things on the net, let alone install an application that they download. Yes, there are internet and computer savvy people, and those that use computers in their daily lives (whether they like it or not) but the vast majority just doesn’t know there are choices. Or where to find them. Or how to use them. So you really can’t ask Firefox, Opera, or Bob’s Budget Web Browser to try to take the lions share of these peoples lives with something that isn’t any different on the surface to them. A browser is a browser is a browser. If it ain’t broke, don’t fix it they’ll tell you.
I think the true war (if there is even one) is the functionality the application provides. Like I said, it doesn’t take a computer scientist to write code to stream down a bunch of bytes from a connection and display it in a format most people agree on. What really makes the shell of the application we call a web browser useful is in the extensibility it provides. For guys like us. The geeks. The ones that build things to make other peoples lives better.
I’ve looked at both sides of the coin and Firefox is the clear winner here. Just starting to look at how to build a tool bar button for IE takes you into dozens of registry hives, GUIDs, class IDs, etc. and that’s not even getting to the point where you have to build a COM object and optionally some scripts to make this actually thing do anything. And that’s just a button. Imagine anything more than that? There’s also menu bars, and explorer bars, and custom download managers, and each one of them requires at least this much (if not more) investment in learning. There’s lots of documentation on IE and building extensions so you can start in the MSDN library like here, however it falls short and for the guy who wants to build something useful for someone and it becomes too much of an investment in time. I don’t want to read an entire manual on Plumbing just to stop a dripping tap, but that’s what IE extensions feel like.
Finally after your built your uber-widget, there’s deployment. Write an MSI and package up COM stuff, write some custom code to create all those registry entries (or perhaps if your installer supports it, add them yourself or run a .reg file) however none of this is very safe and almost any IE add-in I’ve installed required me to reboot the computer. Yeah, you heard me. The computer. The big box that makes things go. Not the browser, but the entire operating system. Has to do with that wonderful “COM” thing that IE needs. If we could build native .NET addins by creating oh, say, a single .NET assembly and xcopy deploy it to a folder that would be a step forward and what I would consider a real improvement to IE. Or even let the user download it and maybe create a bootstrapper to install it for you via the browser. I mean, if we’re going to compare apples to apples here and Firefox to IE, then why can’t IE deploy extensions like Firefox does? I go to the Firefox addon site, see something new like a CSS validator, or an addon that lets me download videos I’m watching in my browser, and I click on “Install Now” and poof, Bob’s yer uncle (okay, sometimes you *do* have to restart the browser). What’s preventing us from doing this in IE with IE extensions?
Oh yeah. COM. Registry access. Goo. Got it.
I look at the Firefox addon site. There are tons-o-addons. True, you might filter out 60 or 70% of them and call them crap but then there’s some real gems there. Useful things that make people productive while browsing web pages, which is all the web browser does. If I can be more productive like being able to snag news clippings or validate my CSS on a page (without having to launch other tools/windows) then more time for me to play Xbox games (or whatever it is you’d rather be doing).
So this is my take on the real browser war. It’s in the extensions and not the snazzy features you might add to the base system. C’mon. Tabbed browsing? If that’s really got you picking one tool over another, you might want to re-evaluate your priorities. I look at the “new” features of IE7. Tabbed browsing; RSS feeds; better performance; blah; blah; blah. Nothing exciting here, move along folks. If IE (Microsoft) built up a community of addons like Firefox has, you’d see a real battle going on. Instead we have an underdog that’s superior in some ways with a lot of potential, and the front runner that is not enabling people to be more productive but rather adding flash and flair to something that really can’t be improved upon, retrieving and rendering content. Communities are not Sea Monkeys and don’t grow up instantly. There’s no Field of Dreams approach you can take here. However if you give them the tools, the can build it for you. Just look at what Firefox Addons site has done for Firefox. True, the browser might be a little leaner than IE (or others) but the sweet spot is the aftermarket and what’s happening right now everyday.
What’s really the golden ticket is the stuff beneath the layers. You know, like an onion. Peel back IE and you get Goo. Peel back Firefox you get a world of possibilities that’s expanding every day.
Just a little tip as I finally crossed over to the dark side and installed the latest version of IE7. When you’re viewing a SharePoint 2007 site (WSS or MOSS, doesn’t matter) you’ll get a warning message from IE saying that an ActiveX control is causing problems on the site. This control is named “name.dll” and is the person smart tag that shows presence information. Just add your site to the trusted site list and the error goes away.
The message doesn’t come up in IE6 (unless maybe you have ActiveX controls disabled or some kind of uber-high security setting) so it might be new for those visiting 2007 sites with IE7 (it was for me).
And while I’m on the presence information bandwagon, here’s a couple of blog entries that discuss how to use it in your own Web Parts:
- Adding Presence Information to your Web Apps (Patrick Tisseghem)
- How to add presence/pawn to SharePoint contacts list (mondonovan)
- How to add Presence to your custom web parts (Mark Stokes)
Thanks to Dustin for the tip!
P.S. I’m also taking the plunge on a scratch desktop now and finally trying out Vista. It’ll be a few days until that gets installed as I go back to juggling all the cats I have in the air right now.
Or as someone in the audience called it, SorePoint (but then, they haven’t done it 2007 style yet).
Last nights presentation to the .NET Calgary User Group went well. We had about 40 or so people come out and get some free pizza and swag and spend 3 hours with me rambling on about SharePoint 2007 (yes I know, there is no product called SharePoint 2007). I gave a brief overview of Microsoft Office SharePoint Server (MOSS) but the focus of the presentation was on Windows SharePoint Service 3.0.
We covered the basics, some architecture changes from 2.0, and got into Web Parts, Content Types, Features, Site Columns, Event Receivers, and touched briefly on Master Pages and various other goodies. The first hour was mostly talking and doing some basic stuff in the UI. The second half was mostly code and writing and deploying new features. I still had two code projects I didn’t get to, so I’ll leave that for a future session. All in all, lots to take in and lots of think about.
I used a few tools during the demo and made reference to a couple of web sites for more information so here’s the links:
- Infotech Canada’s Feature Explorer
- Todd Baginski’s Feature Manager
- A brief introduction to Content Types
- Using a Content Type in a List Definition
There were a lot of great questions and some things I’m following up (like sequence of events when receivers are triggered) as well as a way to enumerate through what receivers are attached to what list/library/feature instances (which might result in a feature of itself). Stay tuned for lots more 2007 goodness in the coming weeks.
Note to self (and anyone else listening). I had to recently rebuild my system (and I was smart enough to Ghost it so I don’t spend another day rebuilding it again, Thanks Jenn!) and of course had to re-install a million programs. I use BlogJet as my tool to post to the site and in setting it up, the current version doesn’t support Community Server correctly. The default location that comes up is “/MetaBlog.ashx” but it should be “/blogs/MetaBlog.ashx” to work. Just something to keep in mind when using BlogJet and Community Server.
Tonight I'm giving a fairly long session (two sessions actually) on SharePoint 2007 development for the .NET Calgary User Group. This is the soup to nuts presentation on SharePoint development. No powerpoints, just code. If you're in Calgary and want to catch it, you can find more information here on the user group site.
As this is a public presentation, I will be wearing pants.
See you there!
There have been a few MVP efforts over the years that I find silly. Various petitions about VB6, mass emails on unit testing, etc. There are few community “rallies” I get behind, but this is one of them.
In the recent MVP cycle (4 of them every year) Jaimie Cansdale was not re-awarded his MVP status (thanks Roy!). Okay, so what? Jaimie is the author of the most useful and popular add-in for Visual Studio, TestDriven.NET. This bothers me. Both as an MVP and a daily user of TestDriven.NET. It's a fantastic tool and it's one of those rare tools that's on my list of "install always and everywhere". I totally disagree with MS on this and think they made a mistake.
They cite that his contributions were not sufficient to re-award him his designation he previously held. The MVP program is about recognition and contribution based on the last years efforts (you don’t get awarded for future work, just what you did in the past). So what happened with Jaimie’s contributions? First, he figured out how to get his free tools to run on the free versions of Visual Studio. This, according to Microsoft, is a violation of the license. They don’t want add-ins to run on their free platform, only the ones they charge for (which I don’t agree with either). Second, he offered up his tools for free but he now offers a commercial version.
This isn’t like another MVP whose award was recently revoked by Microsoft. In that case, he was selling adware in his tools but I’m not sure of all the details. In the case of Jaimie, his commercial version is just that. A commercial version of a tool that you can choose to purchase (in order to support the author). Or not. He’s not holding a gun to anyones head. You decide if you want to support someone. It would be like me setting up a PayPal account for anyone who’s used my software to drop a quarter in the bucket so I can pay for websites and whatnot. It’s the decision of an author to do this kind of thing. Of course a commercial version of a tool takes on additional responsibility like support, but Jaimie was ready for that and that’s what you get when you purchase his tool. Or you just keep using the community edition. Your choice.
The fact that Jaimie figured out how to get free tools running with the free IDE and made it available to everyone, is stellar. While I understand MS took a position that they didn't want people building addins for the express SKUs, I think it's wrong to chastise people for it. If Roland Weiget and his excellent GhostDoc tool had the same exposure that TD.NET did, would he be facing a cease and desist notice from Microsoft?
Microsoft cites that Jaimie voilated the “MVP Code of Conduct”. I’m with Frans on this as I want to ask my lead what the hell this means? While we are bound by NDA to certain things and we’re not allowed to say post source code or confidential files to the general public, I’ve never in my brief 4 years of being an MVP heard of any official (or non-official) “code of conduct”. Maybe I’ve been living in an MVP cave?
It's sad that MS takes this approach with people that make contributions to the community like Jaimie has. Bad decision on Microsofts part and I'm sure this isn't the last we've heard of it.
Two things. First, I just bought a copy of the Professional edition of TestDriven.NET to support Jaimie. I've been using the free version but for $95 bucks, you can't go wrong. The software works with NUNit *and* VSTS and is a godsend for debugging tests and making it quick and easy for developers to do TDD. Second, I have yet to find any license agreement or statement that you cannot write add-ins for the Express editions of the Visual Studio products. While they don't provide the extensibility dlls for you to write add-ins, I don't see anything that says you're not allowed to write them (as long as you don't redistribute Microsoft dlls which isn't what Jaimie did). So if anyone knows where it explicity states you cannot do this, let me know as I'm curious. This is one of the reason that other people are saying caused Jaimie not to recieve his re-award.
Finally, I may be off in my beliefs. After reading countless other comments on this subject Frans said it best. The MVP award is about contributions to the community you make on your own dime, not necessarily a cool tool or book you've written. However IMHO Jaimies contributions earn him the award, but I'm not Microsoft so it's not my call, just my opinion.
I’m down in Redmond for the next few days hanging out at the mothership doing some SharePointy stuff so I’ll be offline from email (or email responses will be werrry slow) for a bit. I’ve got about 6 blog entries that I’ve been building for the past few weeks so hopefully I’ll find time to complete them. One is on using NetTiers with output from the Smart Client Software Factory, and another is on Scrum and out progress in our current iteration. And while all this is going on, some asshat in North Korea is popping off nukes for testing purposes. Fun stuff on both sides of the ocean.
I was doing my morning rounds the other day and stumbled across this site. I think I’ve been here before, but decided to plug in my name and blog to see what kind of an embarassment I could muster up before leaving for work. Here’s my results:
Something wasn’t right as I know I’m on Technorati as I can go and do a search and get back a few thousand hits. The other numbers were okay. 8000 or so ego points on Google and similar amounts on Yahoo (personally I think they’re both being run out of Bill Gates basement) and some on MSN and del.icio.us (I don’t do much over there).
However I knew this was a bogus site when I plugged in Scott Hanselmans name and blog and got this:
While I might like to think I’m uber-cool, Scott is in a whole other category of coolness (one that he owns himself) so there’s no way on God’s green Earth that our Google scores would be this close (although Scott breaks the needle on del.icio.us which is understandable). I may be good, but I’m not that good.
Don’t believe everything you read on the web.
The MVP cycle is every October and April (mine next one is in April 2007). Here’s the new MVPs in SharePointLand this round:
And here are the renewed MVPs, going to be bugging you for another year:
- Woodrow Windischman
- Shane Young
- Ted Pattison
- Stephen Cummins
- J Mel Harris
- Bill English
- Gary Bushey
- Michael Greth
- Gabriele Del Giovine
Congrats to everyone!
I’ll be speaking October 17th at the Calgary .NET User Group on SharePoint 2007 development. This will go through the new features, master pages, customization, the Web Part framework, creating cross-site queries, binding lists to the new SPGridView control and hosting ASP.NET User Controls. We’ll also build some extensible field types (in code) and deploy them, making WSS a fully-featured application development platform.
Three hours of Bil rambling on about SharePoint. About as much fun as sitting through a Ben Affleck movie, but we’ll try to do better.
If you’re in Calgary feel free to signup for the event. You can get more information at the user group site here.
So Office 2007 has been out both in beta and technical refresh form, and will be on it’s way to release in the next few weeks. It’ll hit the retail channels early in 2007 and you can expect to see it hit the MSDN downloads probably mid November/early December.
There will not be a new release between now and then, so the TR version is as close to a release version as you’ll get. This is not to say Microsoft isn’t going to be doing any tweeks before release, but don’t expect any Earth shattering changes.
You do have some time to keep working with the TR though. All of the technical refresh client products (Word, Excel, Access, etc.) will expire March 15, 2007. The SharePoint stuff and server products will expire May 31, 2007.
As for upgrading, you can upgrade the Beta2TR version of any server product to the retail release, but you’ll need to uninstall the client apps first.
So get ready for retail and watch for it soon!
I have a bunch of sites that I run and regularily maintain and sometimes it's not only confusing but hard to keep up. These are non-specific project sites, but contain (or should/would contain) tips and tricks, info, tools, downloads, and other goodies as I try to organize my Life 1.0 contributions to the world (both SharePoint and non). So in creating this monstrosity, I've built (as I like to call it) my own "Web of Confusion". Here's the rundown:
- My Personal Home Page (DotNetNuke 3.2.2)
- My SharePoint Blog (ASP.NET 2.0/Community Server)
- My WSS v2 Development Site (WSS v2)
- My WSS v3 Development Site (WSS v3)
There are a dozen or so "other" sites that are individual projects (3 projects I manage on CodePlex) that I haven't included here but probably will add to the individual sites somewhere. Like any art, this is still a work-in-progress. I need to get more articles online on the SharePoint sites, update my personal site to the latest version of DotNetNuke, and start posting cool WSS v3 stuff. If you run your own WSS v3 site, let me know and I'll you to the my list of WSS v3 demo sites (there are 3 so far).
Why am I using DNN for my personal site and not WSS v3? Not sure and things may change. Once my hosting provider (and the software) hits RTM, that might change. It would certainly fix my problem with my personal blog as I detest the way the DNN blog module works. After then I'll probably switch my home page over to WSS and spin off a subdomain for DNN development as I have some DNN modules and skins in waiting right now.
Anyways, no Earth shattering SharePoint news today. Just thought I would toss my info out there for anyone who's interested. And let me know if there's anything in particular you're looking for, beit a DNN module, a SharePoint/.NET 2.0 Web Part, a theme, a tool, a skin, whatever. I'm always game for new challenges and have a few hundred toys in my toybox I have yet to share.