Categories
Agile

Agile: Priorities

Agile .. priorities…

what are they?

The product owner or people driving your features/bugs/issues of your scrum team need to set priorities of your stories. How do they do that? Simple:

5
4
3
2
1

Now here is where it gets crazy. People always ask: What is high? What is low. Stupid question.

1 is low. 5 is high. numbers just work out that way. I find it funny going into a project or team or whatever and they are like, it is priority 1!!!!! really? so 1 is higher than 5? What crazy math are you using? 5 is higher than 1. Always. Just do it.

Anyways, the product owner set’s the priority. 5, 4 – you pretty much always score/do first. 3/2, get to when you can, and 1, well, those are wishlist/nice to haves, and you get to whenever. They usually sit in the backlog forever.

What happens when you have multiple product owners or you do stories for multiple product owners? Well, they set the priorities of the stories. If there is someone above them, they might over rule. There might be a “steering” committee meeting or prioritization meeting to set priorities of all the stories in the backlog.

The team/scrum master shouldn’t be guessing on what to do, the priorities need to come from somewhere above or someone driving the project from a business perspective.

1,2,3,4,5

Lowest
Low
Medium
High
Highest

Whatever you choose, your stories need to have priorities, and they need to be set by the right person.

Categories
Agile

Agile: Bugs

Agile can make things work for your process, you can get a ton done, but one question everyone has is “What about bugs?” or “What about things that come up during the sprint?” Oh noes!! Agile can’t handle it.. Agile will fail us.. fear not..

  • If you can, wait till next sprint
    Of course, if you can wait, wait. Don’t interrupt the current sprint, don’t get in the way of your do’ers focus, wait on it, assess it, analyze it, verify it, validate it, make sure you understand it instead of jumping in quickly and screwing something else up. Most times unless it is a HUGE showstopper, you *can* wait.
  • If you must, handle it. Swap something out
    If you can’t wait, then you should swap something out. You can’t just keep adding things to the current sprint, you will overfill your capacity. You need to swap something out. If this is a critical bug, it must be more important than *something* on your current sprint (that you haven’t started yet). If you are near the end of the sprint, then wait till next sprint.
  • If not a bug, but a request – First Option
    if it isn’t a bug, but a high priority request, you know the ones, from the president or god or you know. Well, then the first thing you can do is go to that user and say “Hey, we can do this, but we are going to move something out of the sprint that you requested.” If they say “Hey, no way, I want it all done”, then you respond “That isn’t the way it works, you need to move something out to move something in, or you need to wait and see if we get ahead where we *might* be able to pull something in, is that acceptable?” and then you think to yourself “someday these users will learn to think farther out than 2 days in front of their face”
  • If not a bug, but a request – Second Option
    So if you get this “god” request that *must* be done, but the user doesn’t have any existing stories to pull out, well here is what you do. You need to find a comparable story from someone else to pull out, and then you have to get that person, and the requester together and ask “Hey person we already committed to, is it ok if this other guys request bumps you out of the queue/sprint?” and if the person is ok with it (they usually are) then you can swap, if not, well, tough luck to the late request, they need to wait. (You can see from this process you need to learn to say “No”.
  • Last Resort
    the last resort, and I hate this option, but it seems it usually is the one that gets done the most. You just do the request. You fit it in, you work late, you do something different or something else takes a hit. The person gets there request, but no one learns from the process, since they think they can still request anything at anytime and get something from you, instead of learning to plan out a bit.

I’m sure there are infinite permutations of things you can do and situations you need and will need to deal with. The above is just a broad look at some the more recurring situations.

What you can learn from Bugs or Requests that need to be done *now!* is this:

There is always a way to adjust and handle things. Nothing is written in concrete. “Responding to change over following a plan”

Categories
Business Intelligence Geeky/Programming

OData is the New Hotness

Not sure why I didn’t look into this sooner. OData. Open Data Protocol.

Not many providers, but this has huge potential. First off, PowerPivot can consume OData feeds! See the “From Data Feeds” button 🙂

I used it to download Netflix’s whole library. I tried to download StackOverflow’s data (http://odata.stackexchange.com/) but had no luck. Either got errors or it was taking forEVER!

But, you can see how easy it is to create an OData API for your data? Scott Hanselman did it for StackOverlfow in 30 minutes. This opens up HUGE oppourtunities for apps and ISV’s to expose their data out for end user and other developer consumption.

You can see all the “producers” here: http://www.odata.org/producers .. I am sure there are more, just not on the list.

What a cool easy way to expose your data as an “API” out there.. Excited to see how it is used (Pivot Viewer, Power Pivot, etc) and what people do with it.

Categories
Geeky/Programming Product Reviews Ramblings

One Thing About the iPhone 4..

I still love it. Like I said, I don’t use it as a phone. But I have noticed something different (And I blame AT&T for this – working for cell phone company for 5 years, I blame the carrier :))

In Madison/Sun Prairie, I get 3G ,works great, no issues. When I drive out to work, in the big city of Waterloo, WI – there is no 3G, just Edge/2G. I noticed that the phone is just “Searching..” or low bars – trying VERY hard to connect.

What I did was turn off 3G and it was at FULL bars. So once I get to work, I turn off 3G, and once I leave, I turn it back on.

What it is, the phone is hanging on to the 3G signal from the big town of Sun Prairie, and tries, tries, tries its hardest to hold on to that. Bad handoffs or something. The cell sites aren’t handing it off gracefully to the Edge/2G network, so I have to force it.

Go figure.

Categories
Geeky/Programming

Fun with the Facebook Graph API

Lazy Sunday afternoon, so I decided to dig a bit into the Facebook Graph API. What is the FB Graph API? Well it allows you to create an application and use OAuth to connect and then get information about yourself and your friends and do things in Facebook using JSON objects and requests. Easy way to read/write from Facebook.

But, the kicker seems to be getting things started. To start, Facebook has documentation and links and wikis all over the place, so it is hard to get a handle on what you want or need to do.

First you need to create an application. Once you do that you need to set up some things so you can actually use Facebook data.

Once you have that done, you can see your apps here

You will want to take note of a few things and change some settings..First might be to put your app in “sandbox” mode:

Also, under “Authentication” you might want to change Authentication Callback URLs.. and then under “Connect” change your “Connect URL”, and you want it in form http://blah.com/

So to test your app and see what you can do, you need to know your

ApplicationId
API Key
Secret

now, you can make unauthenticated calls to the Graph API, try it..

https://graph.facebook.com/56011561

That’s me. You should be able to see public info on me (don’t try it in IE, it pukes.. Chrome it was working. You might need to be logged into FB)

Anyways, if you want your app to be able to get more than the “public” unauthorized view, you need to make some calls and get some access tokens..

First you need to get an “access code”

https://graph.facebook.com/oauth/authorize?client_id=&redirect_uri=&scope=user_photos,email,user_birthday,user_online_presence,offline_access,friends_birthday,friends_education_history,friends_hometown,friends_location,friends_relationships,friends_religion_politics,friends_likes,friends_interests,friends_groups

You can see in that URL, you have to supply your app id, and your redirect url. Keep it simple, your redirect url should be something like http://blah.com/ .. don’t have querystring params..

If you have things set up, facebook should authenticate you, and ask you to allow your app to have permissions to pretty much “EVERYTHING” on your profile and friends info. To see what “extended permissions” you can use, see here: http://developers.facebook.com/docs/authentication/permissions

You *should* get redirect to your redirect_url with a param in the url called code=

Grab that code, you will need it.

Now to get the access_token

https://graph.facebook.com/oauth/access_token?client_id=&redirect_uri=&client_secret=&code=

once you hit the above URL, with the code from step one you will get an access token

take that token, and then try

https://graph.facebook.com/me?access_token=

you can also get your friends ids

https://graph.facebook.com/me/friends?access_token=

Once you get your friends list, you can use their id's and get info back from the graph.

If you get errors or did something wrong, you might have screwed up your first requests. There are sites and forums saying to add type=client_cred - don't do that, it doesn't work. It will give you a shorter access token, which doesn't work.

Once you have all that working *MANUALLY*, then check out Facebook's officall C# sdk for the graph - http://github.com/facebook/csharp-sdk

Basically then you can replace the access token there with your token and test things.

Then just tie it all together in an app so you can do it programatically, but that is for another blog post 🙂

Categories
Business Intelligence Geeky/Programming Reviews

Microsoft Live Labs Pivot Viewer – Rich Internet Application

So, I previously blogged about using PivotViewer in your Web Applications, but you can also just consume Pivot collections using the “Pivot” tool from Microsoft Live Labs

You can download it here

What does this tool offer? Well first it has a library/homepage of collections you can browse

You can do some slicing and dicing on a collection of Presidents, or athletes, or Sports Illustrated covers. This tool and technology really fasinates me. It is “Business Intelligence” but in a different way – it is based on “objects” (images) instead of “metrics”. I like it.

What are some cool things I think this could be used for? Company Directory? Online Catalog? Beer selection at Eddie’s? the list goes on and on..

Additionally there is now an add in for SQL Server Reporting Services and SharePoint 2010 you can download here

Once I have an environment in which I can test that set up, I will blog about it.

Categories
Agile

Agile: Sprint

The sprint. The timeline of an agile team. The sprint is the “timebox” that you use to get your stuff done. It’s an iteration as you want to keep having sprints over and over.

You might have many sprints make up a release, you might have one sprint make up a release.

Your sprint could be a number of different timeframes.

I suggest 2 weeks.

Why 2 weeks? Well, it is enough time to get things done, but not have too much to worry about, it also ensures that things you want to get done are done in a small enough time frame so that the people that needs to see your outputs don’t have to wait longer than 2 weeks. 2 weeks also fits nice as 4 weeks could almost be considered 1 month.

Other alternatives? 3 weeks – might be the only other time frame I would suggest using, but then remember, if you have something get requested before a sprint, and you can’t get it into the current sprint, you won’t see that story completed for 6 weeks!

1 week is too short, you are just constantly churning. 4 weeks is another one that some teams use, but again, it could be 8 weeks before seeing something. The world just moves to fast for that kind of timeline.

Other options are doing staggered sprints. 2 2 3 2 2, or 2 3 2 3 2, etc. It can get confusing, but doable, I haven’t seen a reason to do it yet, so I have kept to the 2 week timebox.

I also recommend starting on a Tuesday, Wednesday, or Thursday. If you run your sprints say, from Tuesday, 2 weeks, you end up ending on a Tuesday afternoon. Same with Wed/Thurs. And you can do your Sprint Planning on that Tuesday/Wednesday/Thursday. When you use Friday and Monday, things just get tough to plan around. You probably never want to release on a Friday, people like to take vacations and days off on Fridays, tec.

Another tip, don’t treat a sprint like a mini-waterfall project. You will end up in trouble. Try to test/validate completed stories as they get completed by the do’ers. Waiting until the end of a sprint will lead to pile up of things to do.

Throughout the sprint, the product owners and requester of features should be in the loop (for one, with the Daily standup) but also they should be seeing the fruits of your do’ers labor, they should be seeing the output and features as they are completed.

Releasing at the end of the sprint is key. If you can’t, then you should at least have things in a “potentially shippable” state so you can demo and test it for the people that have requested it.

Other things you can do with your sprints. I like to separate out things into their own “mini sprint” when needed. An example might be, Upgrading your infrastructure to SQL Server 2008. You can’t really work on things on your servers when they are being upgraded, so at the end of a sprint, say “the next week is a mini sprint for the upgrade” and then pick up your regular sprint schedule after that. Same thing with holidays. Over the Christmas and New Year holiday you may have a 2 week holiday sprint. Just let your do’ers do research or something fun they have wanted to do. Most people will be out of vacation anyways.

Treat your sprint though like you would treat your daily standup. You don’t (you really can’t – or it screws up things) want to keep adjusting your days and length very often. The more you adjust the more it confuses people and the harder it is to try to get your actual velocity.

Pick a date to start, pick a timeframe, and stick with it. Try to stick with it for a year, at least 6 months before totally changing things up. Discipline, just like the daily 15 minute standups. Keeping things standardized and set helps your team and others know the schedule and keep things on track.


Categories
Ramblings

Foursquare in Your Business

I don’t own a business. So let’s just get that out of the way. But as a Foursquare user, and someone who frequents many businesses.. how could you use Foursquare as a business owner?

First, above all, you can know what the heck foursquare is… check it out.. http://www.foursquare.com .. ok, did you find your business on there?

Anyways, some places give discounts for mayors.. awesome. 15% at the local coffee shop for me, yet an employee is the mayor. Against the rules for places that give deals.

What else can you do? Well, you can know who is coming to your place. You can say “shout blahhhhhh” for a cool new badge

You can do other cool deals, like, the 100th checkin gets this, or the 10th checkin today gets this. Sky is the limit.

Foursquare, Gowalla, Yelp, etc. If you own your local business, you should be on there and know WTF is going on. Facebook – you should already be there. If not, for shame. It is 2010.

Engage your customers. Give them something, even if it is recognition, if they are utilizing these location based social apps with your business.

Your patrons will thank you and spread the word for you. Through twitter/facebook, or just word of mouth, for you.


Categories
Agile

Agile: Daily Standup, Daily Scrum

I hate meetings. Really, I do. They are toxic.

But one of the things your team needs to do is meet daily. With agile, it’s called the daily standup or daily scrum meeting. But what is it?

  • Every Day, 15 minutes
    The meeting needs to be every day. Every day (Monday-Friday). No Exceptions. No days off, no skipping, no excuses. Schedule it every day. 15 minutes. Try to get it in the same place
  • Stand up
    The reason it is called a “standup” meeting is that you need to actually stand up. Why? Because sitting down makes people take their time. Standing up makes people move faster, because they don’t want to stand for 60 minutes.
  • Three Questions
    What I did yesterday? What am I doing today? What’s in my way? Simple enough
  • Not Everyone
    You want your do’ers there, you want the scrum master and product owner, maybe some others, but not everyone needs to talk. Go around the room and the do’ers should give an update, others should just listen.
  • Details, but not too much
    Do’ers, when giving updates, should let team know what stories they are working on. If you use a virtual+physical board, you will have story #’s. Don’t just spout the numbers. Spout the numbers and the story title, and where you are at, maybe even burndown if you track that manually.
  • Keep on Track
    easy to get off track. Even with standing and whatever. Scrum master should make sure things keep moving. In, update, out, go. 15 minutes? Try to get done in 10.

Should you meet on your sprint planning day? I say yes.

What else does the daily standup bring us? Communication. Everyone should know what everyone else is working on, where things are at. People can’t hide. They need to give updates, they probably should have a good reason or be working on something else off sprint if they have no update.

What else does it bring? In my eyes: Discipline. Making sure you know what you did, what you are doing, and always meeting at the same time, and doing the same thing every day brings a little discipline to the team. Keeping things on track, 15 minutes, cruising through updates, instead of meeting speak and 60 minutes of babbling. It does good for everyone. It lets your do’ers get on with their day so they can keep burning down points!


Categories
Life

Europe

Last month, I was in Europe for a week on business. Madison to Chicago, To London to Milton Keynes, to Zurich, back to London and then to Chicago and Madison.

Was a real good trip (the business side, and seeing UK and Switzerland), but there were some things that just seemed.. well, weird.

Driving on the other side of the road.. yet using Miles instead of Kilometers in the UK. Also, instead of using “feet” for exits (Exit 1500 feet) they use Yards.. the only thing I know that uses yards is American Football. And that there are 3 feet in a yard.

GBP.. the pound. or lbs or # .. since I don’t have GB English keyboard setup. First off, the exchange rate is crazy, and then, the coins?! It was hard keeping all the denominations straight. 1 pence, 2 pence, 5 pence, 10 pence, 20 pence, 50 pence, 1 lb, 2 lb then 5 lb note and onward. Bills were too big for my wallet too.

The signs. “Give Way”, “Kill your Speed”, “Mind the Gap”. and so forth..

Sandwiches.. what is up with the sandwiches in the UK? Tons of different types and “flavors”. Odd for an American I guess.

Internet: no free wifi. Anywhere. UK or Switzerland. You pay by the hour, or 24 hours. What a rip.

Mobile service. Roming charges are through the roof, data roaming 20$/1MB – wtf! 50 cents an SMS..

Food.. proper english breakfast every day.. and for dinner, random things .. everything is similar to US, but slightly different. Just odd.

Country Pubs – loved these in the UK.. very laid back, my type of place.

Bacon. – wtf? real bacon is called streaky bacon. UK bacon is like, canadian bacon/ham ..kind of. Give me real bacon, any day.



Public transport – trains, the “tube” (subway) and other things, just way more advanced than here. Things are closer together, you can walk.

Roundabouts – there are like 6 in Sun Prairie, about 600 in Milton Keynes.

Beer – usually good beer on tap, no Bud, Miller, Coors, etc, etc. The crappy beer is good beer in the US.

Toilets – I never met one that flushed right, or some at all

TV – in the UK.. BBC 1,2,3 and Sky.. and thats it. In Switzerland, a few more channels, but after 11 PM, every commercial was an ad for .. well.. x rated things. Much different than USA

Zurich airport was the cleanest I have ever seen. Welcoming too.

Easyjet – boarding from the Tarmac

Downtown Zurich – very nice. Tons of bikes and walkers and train riders. Cobblestone walkways, just a good area.

Swiss Francs – worse that GBP. More denominations (1/2 francs?!?) and the conversion rate is horrible, not only that , but inflation rate is horrible. 2 beers for 17 francs? phhhh

Swiss.. most people can talk “baby” words in English.. Hi, Bye, Yes, No, Thanks, etc, etc.. some are real good at english, some have none. Your mileage may vary. If you go to a bar, just as for “Beer” and you might get something good, or bad.

Soccer – world cup was going on. I could hear vuvuzela’s everywhere i went from the TV’s having the games going.

Taxi drivers take credit cards in Zurich.

You can get Kangaroo and Ostrich Fajitas in Zurich..

There is a huge snow dome in Milton Keynes. You can go snowboarding any time of year.


The weather was nice, didn’t rain at all, 70’s.. but learn to convert Celsius to Fahrenheit.. since they all report in Celsius.

The iPad made it from Chicago to London, on the whole time, reading a book, and lost only 40% of the battery.

The trip was awesome, I had a good time, learned a lot about our business in Europe, met some great people, put faces to names, and just all in all had fun. The only downsides were, I missed my family and I wish had more time with each country and group in Europe. Two conflicting things!