Daft Developer

Wednesday, January 06, 2010

New Scrum Metric Proposal - "Hits and Misses"

If you want to compare Scrum Teams, compare them on who is achieving the Sprint Commitment (what I call "Hits and Misses"), not the Velocity.

Meaningful Metrics

One of the dangers with metrics, is that when we find a way to measure something, we tend to focus attention on it. Usually more attention than the metric is worth. So we like to oversimplify. What the "P/E ratio" say about the quality of a Company? What does "velocity" say about the quality of a Scrum Team? Both are pretty subjective numbers. The P/E ratio is tied to the stock price which is tied to the market's opinion of the value of the company, and markets are very emotionally driven. A Scrum team's velocity is tied to the User Story estimates which are subjective. The outcomes of comparing team velocities will most likely be negative, teams might inflate estimates or work overtime to increase their velocities.

Hits and Misses

I think it is very important to encourage the idea of Sprint Commitment. The team should take the Sprint Commitment very seriously. One way to encourage this is to measure how the team is succeeding in achieving the Sprint Commitment. I call this "Hits and Misses". Essentially, every Sprint Commitment achieved is counted as a "hit", every missed commitment is a "miss". If management is won't let go of the need to compare teams, I would give them the "Hits and Misses" metric instead of "Velocity". Of course there is a danger that teams will under commit. If this is happening, I might look into presenting both "Hits and Misses" and "Velocity". However, I rarely see teams under commit, the tendency is always to over commit.

Monday, October 19, 2009

Office Kanban - My Early Experiments

This works well, and it's fun, but a couple of things I've noticed...


You will need some Wall Space


My cube (yes, I work in a cube :p) does not have a lot of wall space. And what it does have is covered by this strange mesh made of recycled carpet or upholstery or shoes or something, so stickies don't really adhere to it. I almost used my window for the board, which would have worked great, but would have made me crane my neck to see, and I was worried might look a bit show-off-ish for people looking in from outside because they would see my sticky to solve the NP-complete travelling salesman problem in nLogN operations securely placed on the "done" side of the board - more about this in an upcoming post (ok, no - not really).


When lo, what did I see? My embedded whiteboard, easy to reach and visible from my computer, the perfect rectangular shape, I could write on it (not with the Jiffy markers though, really hard to get that cleaned off - trust me) and it had excellent sticky adherence. Good-bye whiteboard, hello Kanban board!


Small tasks, but not too small


I started out really small, like 20 stickies a day, it was crazy, like "read email", "clean coffee cup", "recycle TPS reports", "select new screen background". I think I was just reveling in the amazingness of the board, and stuff was just getting done. Whatever I put up there, like magic. Lots of tiny tasks was creating a lot of churn, I was spending too much time writing up stickies, and going to the stationery cabinet for more stickies, and stealing stickies from co-workers. I was also using the Jiffy markers A LOT and I think they were having an affect on me (like I became extra talkative and paranoid and really thirsty all the time).


So I made the tasks bigger, too big unfortunately. Like days, and days big. And this allowed me to get distracted. So, say, instead of writing an AD interface like my task said - I was adjusting my chair height, and then my desk height and then my lamp angle - and those things were NOT on the board. The Kanban "flow" was not happening. I could see it was time to right-size my tasks.


Somewhere in between nano-tasks and uber-tasks was right-sized tasks. How big are they? somewhere around 2. Hours that is. I like them around this big. Why? Well, at the end of the day I can look at the "done" column and say "That was a pretty good day, look at all those stickies in there". Smaller tasks keep the focus, and keep you coming back to the board to move them, which keeps you focused on the board, like a game of tag, a back and forth, a conversation, a flow...


A Great Topic of Conversation


My visitors like to talk about the board. Like "What have you got there? Is that the sticky board you were talking about? Do you have MS Project installed because it can manage tasks? No? Well put in a request to have it installed, and I'll help you get started with it. I think you'll really like Project. And you'll see you don't need this sticky board.".


Or, "Are you using those stickies to track your work, because we have a task tracking system you know. In fact we have two, and people are expecting you to keep that up to date. Well, it doesn't really matter if the task tracking system works for you or not, the important thing is that we ALL use it. It's written in our SOX compliance documentation. Where is that documentation? I don't know, and I don't think we're allowed to see it anyway.".


Here's a picture of it before someone orders the janitorial staff to remove it.


Monday, October 05, 2009

A Look at 10 iPhone Twitter Apps

A quick summary of 10 iPhone Twitter client applications I have been trying out. I have ordered them by preference, starting with my favorite. My analysis is heavily based on how I use Twitter. I've noted what I like and dislike about each app and added a few screen shots of each.

Prices are based on the Canadian iTunes store

Tweetie 2

Price: $2.99
Vendor: Atebits
Go to the Tweetie 2 site.

What's Nice

  • Wow, what a great product. Tweetie 2 is fast and stable like its predecessor, but offers a rich set of new features.
  • At $2.99 it is the cheapest of the full featured Twitter client apps.
  • Slick integration with follows back and follow cost.

  • Refresh your timeline - "pull down" on the timeline to refresh it. Great idea>
  • Following/Followers list management is very easy

What's Lame

  • I can't seem to get to the Public Timeline.
  • It replaces the old Tweetie, so it really cost me $3.99.


SimplyTweet

Price: $4.99
MotionObj
Go to the SimplyTweet site.

What's Nice

  • DM and Reply alert - This works like text messaging, so you could use SimplyTweet for texting too.
  • Conversations - Very nice. It can be easy to lose track of conversation threads and replies, SimplyTweet can show reply threads.
  • Bubble Tweets - I find bubbled tweets easier to read
  • Follows back - this feature is well integrated into the product and is displayed on the user profile
  • Nearby - You can specify the proximity of nearby tweets from 1 to 50 miles

What's Lame

  • Follower/Following Lists - I can't seem to display these lists.


Echofon

Price: $4.99
Naan Studio Inc
Go to the Echofon site.

What's Nice

  • I'm calling this the 'people finder' - from within the tweet window, you can pull up a list of people to choose from for shout-outs.

  • Links are auto-shortened with bit.ly. This just happens automatically once you tweet.
  • Profile detail shows if you are following someone and if they are following you back.
  • Following/Follower lists on profiles. My "can't live without" feature.
  • Trends - Go to current trends through the search feature.
  • Nearby Tweeters. Again through the search window

What's Lame

  • The Name - EchoFon? Is Naan Studio Inc a Swedish company? because 'Echofon' sounds like the name of an Ikea product.
  • I can't find the 'go to user' feature. But the search can be used to find people.


BirdFeed

Price: $4.99
Vendor: System Of Touch
Go to the BirdFeed site.

What's Nice

  • Bubble format and fast scrolling - I prefer the bubble format, even though it takes up more screen space.
  • Tied into external tools - Query tweeps agaist FollowCost, DoesFollow, Overlapr - could be better integrated into the app, but still cool.
  • Basics like ReTweets, DMs, Replies and favorites are quickly accessible and easy to find.

What's Lame

  • No URL Shortening - It either can't do URL shortening or I don't know how to find the feature. But when I paste a URL, it violates the 140 character limit and I can't post the tweet.
  • Profile Details - While I can look at profiles and see bio's and follower/following counts, I can't view followers/following lists. I tend to use these to follow new people.


Twittelator

Price: $4.99
StoneDesign
Go to the Twittelator site.

What's Nice

  • Horizontal aspect - You can view link web pages horizontally.
  • Paper clip links - Links in a Tweet include a paper clip icon which can be clicked to navigate to the link. Reduces some navigation overhead.
  • TwitPic display - thumbnails of photos are displayed in tweets.
  • Mute - This seems contradictory to the spirit of Twitter, but sometimes, maybe I don't want to hear @Alyssa_Milano's daily minutiae.
  • Groups and subgroups - I think these are specific to Twittelator. There are so many sites trying to provide this feature.
  • Link shortener - j.mp

What's Lame

  • Tweet actions menu (to retweet, reply, etc.) was slightly difficult to find. Tap above the tweet text to activate.
  • The Windows 3.1 style shading on text makes it very hard to read.
  • UX - This application just doesn't look that good. Might be time to hire a design and graphics expert.


Twitterrific

Price: Free (displays advertising)
IconFactory
Go to the Twitterrific site.

What's Nice

  • What a slick interface - shading and colouring looks great.
  • Feed display - I can collapse tweets to 3 different sizes
  • Access to the public timeline, which I only use to play with the translator
  • Translation - This works very well, especially on latin based languages. Thai, Malay not bad. Japanese? Not so good.

What's Lame

  • It makes "chirping" sounds when you refresh your feed. This is cute, like... once.
  • Ads. Not really intrusive, but I feel like I need to click them or they'll start charging for this app.


TweetDeck

Price: Free (Beta Version)
TweetDeck
Go to the TweetDeck site.

What's Nice

  • Columns - I love columns. I generally use columns to store searches on keywords and hash tags. With TweetDeck my searches are always available, and I can quickly scan them.
  • URL Shortening - there is a small icon of chain with 'shrinking' arrows on the tweet window to shorten URLs. Tweetdeck uses the bit.ly shortener.
  • Location Tweeting - Not my thing, but it's there.
  • TwitPic Photos - Take a shot, or choose one from your library. I like this feature.

What's Lame

  • Unstable - Tweetdeck crashes on a regular basis for me. Usually when I start it up, it'll just disappear. Annoying.
  • Column Maintenance - I have a super hard time closing columns, tapping the 'gear' in the top right corner is very challenging. This could just be me.
  • Column update messages - I have a lot of columns and when I start Tweetdeck I get a load of intrusive messages indicating how many new tweets have been added to each column.



Tweetie (1)

Price: No longer available
AteBits
Go to the Tweetie site.

What's Nice

  • Fast - Tweetie loads fast, and scrolls nicely. The line display lets you move through tweets like a rocket.
  • My Profile - I think every Twitter app should have strong profile maintenance. Tweetie makes it easy to view your bio, followers/following lists and time-line.
  • Nearby - You can see who's tweeting 'nearby' if you allow Tweetie to broadcast your location. Again, not my thing, but still cool.

  • Trends and Public Timeline - I generally avoid the trending topics (mega spamage). I think being able to follow trends is an important part of Twitter and it's good that Tweetie offers this.

What's Lame

  • Follows me? I can get to my following list, but there's something I like about knowing if someone I'm following is following me back. Tweetie doesn't have this feature.



Twitter Pro

Price: $0.99
iApp Ventures LLC
Web Site?

What's Nice

  • ummmm? Well... it has a nice icon.

What's Lame

  • Scrolling is very jumpy - probably the most irritating feature.
  • Can't view profiles, or add users.
  • It costs a dollar - I can't believe this app got through testing?
  • What is this app even called? iTwitter Pro or Twitter Pro?

Tweeter

Price: Free
Takuma Mori

What's Nice

  • Simple. It works as advertised - all you can do is tweet. That's it.

What's Lame

  • Well, this app doesn't really do much.

Monday, September 28, 2009

Organizational Challenges: Product Ownership

Who's in Charge Here?


Identifying the Correct Product Owner


In Scrum, the Product Owner is essentially the person 'in charge'. They are accountable for guiding the construction and delivery of a product. A valuable product with high quality, desirable features.


The Product Owner is an important job, definitely the most important in a Scrum project. The Product Owner should be


  • Engaged - Driving the product with enthusiasm

  • Involved - Part of the Team and available for questions

  • Empowered - Able to make decisions about the product on the spot

  • Supported - Backed by stakeholders and management

  • Accountable - Comfortable with defending product decisions


The Business Analyst


The first thought, was to assign the Business Analyst the job of 'Product Owner'. We tried this and ran into some issues


  • Invalid Feature Prioritization - features were initially prioritized in 'build' order

  • No Cutting - All features had to be delivered (Essentially all high priority)

  • No immediate answers - all questions had to wait for stakeholder approval


On this project we were lucky, and it so happened that the B.A. involved the supervisor of our user base in order to show her what was involved in building a software system. After 5 sprints, the supervisor began assuming the role of Product Owner. Cutting features and deciding on priorities. The Product Owner required a high degree of coaching and support from the BA and the Scrum Master, but it was still clear that the accountability was with the Product Owner alone.


Getting the right Product Owner was critical to the success of Scrum on this Project.

Saturday, February 28, 2009

Bringing SCRUM to my organization

How do I successfully bring SCRUM into my organization?


Believe


I've discovered that the first, most important thing, is to really BELIEVE. Believe in SCRUM and that you can make it happen where you work. Last year, before my training, while I had some experience with SCRUM at my previous employer, I didn't have a firm grounding in it a.k.a. formal training. While I was learning SCRUM, I asked the instructors a lot of questions about how to successfully convince my management that SCRUM was going be useful for us (Thanks very much to the instructors at Berteig Consulting for being so helpful). On the last day of our training there was a somewhat confrontational, but extremely inspiring back-and-forth between a student in the class and the instructor regarding co-location and productivity. The student insisted co-location was impossible, and the instructor kept asking 'why' until it was learned that the company the student worked at was choosing to value 'other concerns' over productivity. What I saw in that dialogue, was the sorts of challenges I was going to have to deal with. Essentially, the people I work with, and my management telling me what I wanted to achieve was 'impossible'.


Our instructor said that being a Scrum Master required courage and a belief that nothing is impossible. I used to laugh at statements like that, but for some reason, I'm changed... I totally believe that I can make anything happen. Now that I have formal training in SCRUM and the SCRUM-Master designation. I am working on bringing SCRUM to my organization and blogging about my journey.


So Far, So Good


What have I achieved so far? Well, I have engaged my supervisor. He did some SCRUM presentations to our organization last year, and while he is not a scrum master, he has a good working knowledge of the process. We put together a 1/2 hour presentation where I did a comparison of waterfall and SCRUM, and described the SCRUM process. He continues with how SCRUM can benefit our company and how it fits, and the organzational impacts. We presented to our team (development team) and to our direct management. We are calling our presentation the 'SCRUM roadshow'.


The Road Show


The SCRUM presentation we have so far is very simple. We have some notes that we've jotted down, and NO SLIDES. We have handouts as take-aways, but the presentation is done completely on a white-board. Except for the fact that my back is turned to the audience while I'm writing (I'm working on sideways writing now), I think the lack of slides makes the presentation more engaging. So, for the moment, this is our road show. We are presenting it to everyone who could possibly be impacted, first within the IT organization, and soon, hopefully to the business.


The Pilot


We have the go-ahead to pilot SCRUM with some small, low visibility projects, to get our feet wet and get our team used to the process. I am seriously considering buying the Scrum Alliance scrum board game as a way of solidifying the SCRUM process with our team. In any event, I will be Scrum-Mastering 2 pilot projects. We have additional projects that will be managed in our traditional fashion, so it will be interesting to compare results.


Challenges


Of course, resistance to change is evident everytime I even mention SCRUM. I get the best response from people who have managed waterfall projects and have felt the pain of those projects. So I'm focussing on describing the pain of waterfall and hopefully hitting a nerve. This seems to make people much more responsive to a new approach.


Enter, Denial. I see denial when I talk about waterfall pain. This is much more difficult to deal with than resistance to change. Success stories work here, and I have a small one that I share (more on that later). I think talking about your own challenges with waterfall projects gives you credibility and shows people that 'owning up' to problems actually shows strength (instead of incompetence).


A Small Success


We have a project that, for various reasons, is about 12 months overdue. The software has a large list of bugs and some small feature requests. All of which are listed in our QA tool. I have taken on the task of rescuing this project.


Before I applied SCRUM to it, I had some of the following issues,


  • Seemingly flip-flopping requirements

  • Massive quality issues

  • BA/PM unaware of project status

  • Blame and unclear responsibilities

  • Lack of BA engagement




The first thing I did, was estimate the complexity of each of the bugs and changes in the bug tool using a number between 1 and 5 (I.e. a 2 is 2x the complexity of a 1). I then asked the BA to prioritize the items and mark the bugs that are critical to the release as 'high'. At first the BA just said everything had to be fixed. I told him that would mean we don't release for several months. I also showed him that some of the bugs were just minor inconveniences, and that the cost of fixing them was quite high (this happens all the time in software development).


Prioritizing the bugs, forced the BA to actually read and understand each issue. I had effectively put the BA in the Product Owner role. Immediately the BA's engagement increased, and he had an excellent idea of the project status and what was standing between where we were, and our release to production. I had also made the Product Owner (our BA) responsible for the release date. He was deciding how many sprints we would be doing based on how he rated the criticality of items. This also helped stop the flip flopping of requirements. Now, it was not longer the developer's fault for the late release, the team was accountable, and the team included the BA.


On the quality issues, I engaged another developer to do QA. Bugs or Changes weren't closed unless the QA developer was satisfied. I encouraged her to be very strict and to note everything using the tracking tool. On many occasions, she would re-open items I thought were ready to go.


I set each sprint to a 1 week duration, including a planning meeting on monday, daily scrums and a demo and retrospective on friday. I've found the Demo to be absolutely critical to ensuring a clean sprint completion, it serves as an excellent test for 'shippable software'.


4 sprints later, I believe the product is ready to release. And I believe I have won over the BA to the SCRUM process.

Friday, February 09, 2007

Unit Test Granularity

How many assertions should I have in my automated Unit Tests?


Unit Tests are Methods Too


Test cases just like methods in your code. They should be designed using the smae principles. Specifically, a method should be highly cohesive. It's purpose should be focused and well defined. Test cases are no exception. A test identifies and verifies a specific scenario with the intention of revealing a defect. An automated unit test method with proper cohesion must have this single-minded focus. It may be somewhat extreme to demand 1 assert per test. The single assertion test is however and good ideal to strive for.


Many Tests Make Light Work


While the purpose of your existing tests is to catch regression. They can also be useful helping determine the cause of introduced errors. A group of test failures are more likely to point to a cause than a single test, due to the simple volume of information. Looking at a group of failed tests raises the question 'why are these tests failing, what do they have in common?' A single failed test immediately becomes a debugging effort


Read this MSDN Unit Testing Article for some good unit testing guidelines.

Saturday, September 23, 2006

Attaching Debugger takes Forever!

Why does it take so long for Visual Studio to start my web app in debug mode?


Check your Symbol Server


If you have a symbol server set up, and have the following environment variable '_NT_SYMBOL_PATH', your debugger may be retrieving symbols from a slow store. After some experiments (like uninstalling and reinstalling VS addins, etc.), I removed the _NT_SYMBOL_PATH variable from my system and voila! attaching the debugger is fast again.


Investigation Required


Some analysis required here. My symbol path is quite long.


SRV*C:\data\symbols\OsSymbols *http://msdl.microsoft.com/download/symbols; c:\data\symbols\ProductionSymbols; C:\Program Files\Microsoft Visual Studio .Net 2003\SDK\v1.1\symbols;C:\winnt\system32

I thought to slowly remove stuff in the path until performance returned. It appears that VS caches the symbol path however (blah), making the investigation slow. I am suspicious of the microsoft web address.


The Culprit


It appears that removing the microsoft web address has fixed the problem. It's not really necessary to check for those symbols over and over again anyway. So I have removed it from the _NT_SYMBOL_PATH variable and I will put it back when I need it.