Adopting Agile Methods - Five Ways Your SCRUM Implementation Can Fail

| Comments

SCRUM is a great framework to adopt if you and your software development team wants to get things done. SCRUM works for us, so we encourage the people we work with to adopt it along with other Agile methods.

Here’s a few reasons why we like it:

  • SCRUM can get you the highest business value in the shortest amount of time, assuming your priorities are right.
  • It makes the release of your software less of a technical problem and more of a business decision
  • It helps to project the amount of value your development team can deliver over a finite period of time
  • It helps keep your development team and your product flexible so that it can change with the long-term needs of the business

We try to help all of our clients refine their product development process, so we’ve seen a few roadblocks that get in their way when adopting SCRUM. These are the top 5 ways to cause a SCRUM misfire:

  1. Too Much, Too Soon

    Traditional development shops sometimes try to change their ways overnight. If you overwhelm developers with sweeping changes, it’s unlikely that everything will stick. There are many aspects to SCRUM and Agile, so why not take it one step at a time? First, you could start writing user stories. Second, you could start time-boxing your release plan. You can spread out the adoption and sell each facet of SCRUM on its own merit. Being a curmudgeon myself, I respond to change much better when it is spread out over time.

  2. Being dogmatic and following the procedures to the letter

    SCRUM is a framework, not a dogma. It annoys me to no end when people criticize others for not having an “up to the letter” implementation of SCRUM. If you’re not changing your ways from iteration to iteration, you’re missing a lot of the benefit that SCRUM provides. During your retrospective, discuss what’s working and what isn’t. Change your ways for the next iteration, and see if things improve. Every company’s culture and operations are different, so why should you try to fit a round peg into a square hole? Bend SCRUM to your team’s will, and find what works for your organization.

    That being said, a lot of people think SCRUM is about having an open floor plan or rapidly changing requirements and development priorities without forethought. If you do only these things, you’re not practicing SCRUM or reaping any of its benefits.

  3. No executive buy-in

    We’re getting warmer. It is so important to have C-level support for the long-term adoption of SCRUM and Agile methods. Take considerable time and effort with getting your executive team on board. When you miss your last few stories in a sprint (it will happen), your management team needs to understand the complexity and uncertainty around sprint planning, and how you already have a plan in place to address it.

  4. A Bad Product Owner

    I’ve unfortunately seen this more times than I’d like to admit. Bad product owners mean bad user stories and priorities, which translates to sprints that miss the mark in terms of business value. Naturally, if stakeholders and board members aren’t seeing the results you’ve been promising, SCRUM will be forgotten as quickly as what they had for lunch two weeks ago. In the early stages of trying SCRUM out, work with your product owner intensively to make sure he or she is doing a good job of getting the right stories and priorities from stakeholders. If they can’t get make it work within a few sprints, you’ve got to respond quickly and find someone else to fulfill this important role.

  5. Split Focus

    So you’ve got this great idea for implementing a framework where you can demonstrate predictable and reasonable estimates of what your team can do in a given slot of time. Your team members, though, are on about 4 different project teams and have their quarterly TPS reports due somewhere towards the end of the sprint. In my opinion, resources that are spread across multiple projects is the #1 cause of SCRUM death in an organization. Fight for your resources! If you can’t get a predictable and dedicated amount of time from your SCRUM team, how can you get can you accurately gauge velocity? If everyone has to work on multiple projects (which is a horrible idea), see if you can get them for dedicated times for every sprint. This will be really hard to do as the project priorities shift and fires need to be put out, so this should be a last resort. If you have some pull in the company, see if you can try restructuring project teams to be more dedicated. Nothing is more important for the successful adoption of SCRUM than protecting your team from distractions and the ever popular “Can you do me a favor?”. As a technical leader or someone that wants to see your product and SCRUM succeed, this is the battle you want to pick.

Are you struggling to get SCRUM working for you? What’s killing the adoption of SCRUM in your organization? We’d love to hear from you in the comments.

Amazon Associate Is Deprecated in Favor of Ramazon_advertising

| Comments

Are you looking for a web wrapper for the Amazon Advertising API for your Ruby on Rails Application? ramazon_advertising is a library that provides this. It supports request signing.

The Amazon Advertising API allows you to retrieve Amazon catalog data and use it in your application. It can be really handy if you’re participating in the Amazon Associate’s Program

There are a few users of Amazon Associate that might want to know that I’m deprecating the library in favor of ramazon_advertising. Amazon Associate was an older library that I was maintaining. It uses HPricot and really doesn’t jive well from a design standpoint, so amazon_associate is deprecated in favor of ramazon_advertising

Ramazon Advertising uses John Nunemaker’s awesome library happymapper along with nokogiri selectors. It’s much more object oriented and cleaner, so I hope you’ll enjoy using this library.

Right now, it supports product data acquisition via the ItemLookup request. Here’s a simple example where you can find the product data for a given asin:

@products = Ramazon::Product.find(:item_id => "B000NU2CY4", :response_group => "Medium")
@products[0].title
@products[0].asin
@products[0].upc
@products[0].large_image.url
@products[0].url
#you can also use a nokogiri search string to get elements that don't have built-in accessors
@products[0].get("ItemAttributes Actor").collect{|a| a.content}

The ruby gem is available on Gemcutter and the documentation is available at rdoc.info. Patches and feature requests are welcomed!

Friday’s Software Enlightenment #5 - GTD / How I Get Things Done Edition

| Comments

I’m a huge fan of getting things done and constantly honing my productivity. I recommend that everyone should learn about different methodologies and blend them together into your own. It takes a unique and different approach for everyone to score their goals. The triple deke might have worked for the Mighty Ducks,

But, for me, I use a mix of things I’ve learned from these books:

  • Getting Things Done - David Allen’s analysis and structured system around productivity is a must read for those that want to boost their productivity
  • The Ultimate Sales Machine - This book builds on the idea of E-Myth by Michael Gerber in creating a system for a performing company. In it, there is a short, simple chapter on productivity. The basic gist is that before you start every day, you outline what tasks you want to complete and then assign timeboxes to each task.
  • The Four Hour Workweek - I’ve tried to implement a lot of the stuff Tim Ferris outlines, but outsourcing to date has been more work for me than it has been worth. I do try to be on an information diet and I’m a firm proponent of the 80/20 principle, however.

My mix basically translates to Getting Things Done + Daily Tasks. I use Things.app to do project planning on a weekly basis. Every day, I select or create approximately 6 tasks I need to complete for the day and mark them as “Today” in Things.app. I schedule them out and order them sequentially. I use GeekTool and a handy AppleScript I’ve modified (gtd.applescript.txt) so my withstanding daily tasks are always in my face on my desktop. I’d really like to have it as a dashboard widget too, but I haven’t taken the time to look for one just yet.

Any system you use requires relentless discipline. It’s really easy to fall off the productivity wagon. Don’t use a system just because it’s the latest fad - use it because you want to be more effective at what you do.

How do you get things done? I love to nerd out about productivity tips so let me know what works for you!

Friday’s Software Enlightenment #4 - Rumble Edition

| Comments

The 2009 Rails Rumble was a huge event! The results are simply stunning with great apps like Lowdown and hi.im. It really is amazing what can be built in 48 hours. If you get a chance, please head over, register and vote on the Rails Rumble Site

So without further ado, here’s some tools I found immensely useful in the creation of my rumble app. I’d really like to write a full post mortem, but in the spirit of Friday’s short list of links, here goes:

  • SearchLogic - excellent derived named scopes and search form capabilities.
  • AuthLogic - my favorite authentication system out their for Rails today.
  • Formtastic - a great utility for generating forms quickly.
  • Inherited_Resources - Jose has done an awesome job with this helper that handles your typical (and not so typical) RESTful controller actions
  • Stringex - useful for permalinking
  • under_construction - a handy javascript utility I’ve written to quickly note what design elements need to be implemented from a development standpoint.
  • serverjuice - Great for getting an Ubuntu VM up and running quickly
  • SpreadHead - although it required some adjustments in the way it handles routes, I really think this is a great way to get a quick CMS integrated with your site. It’s definitely useful to have some editable pieces of your application when there’s a code freeze in 48 hours. I currently use it for CMS partials (a way to have editable content inside a page), but I do not for individual pages themselves. There’s an issue in the gem version where the routes are added to the top of priority instead of the bottom. I’m hoping to help with a fix for this
  • tab_menu - I always seem to need tabs or a nice menu system, so I use this code pretty frequently
  • ThemeRoller - easily roll JQuery UI styling.

The combination of formtastic, searchlogic, and inherited_resources has really changed the way I code. I think a post on the power of these tools in combination with chronic

Some of these tools and more are available in the Enlightened Template I maintain on Github. There were some updates after the rumble. I hope you find it useful!

TripTracker Alpha Launch - Track Your Business Mileage

| Comments

The 2009 Rails Rumble was a huge event! I submitted a solo project this year for the 48 hour contest.

TripTracker was born. Small Business Owners: Did you know that the IRS will credit your taxes $0.55 for every mile you travel for business purposes?

As a small business owner myself, I realized how much I’ve missed in tax deductions by not recording these trips. It was just too much of a hassle. Now, with TripTracker, it’s a snap! I enter a few saved locations, and it does all the dirty work of calculating the driving distance for me. Now, I can just let TripTracker tell me how much I should deduct on my taxes.

Check it out! I hope you find it useful. Also, be sure check out the rest of the rumble applications - there were some fantastic submissions this year!

Focus on What Matters - Manage Applications With Concentrate.app

| Comments

concentrateapp.png

Do you find yourself checking your email when you should be coding? Reading Reddit while your test suite runs? Finally, comes an app that is off to a great start when it comes to focusing on the task you’re performing. Concentrate!

You can set up profiles based on the context of your action. My contexts are set up as follows:

Away

  • Sets Skype status to “Away”
  • Sets Adium status to “Away”

Blogging

  • Opens up MarsEdit
  • Opens up Things - I often track blogging ideas there
  • Closes my GMail Prism Instance
  • Closes Tweetie
  • Sets Adium status to Away as “Writing”
  • Sets Skype Status to Away

Code

Conference Call

  • Launches Google Calendar Prism Instance
  • Launches GMail Prism Instance
  • Launches Skype
  • Sets Adium status to Away as “On a Call”

GTD

Getting Things Done is a methodology for organizing tasks and projects. I practice it using the following workflow:

  • Opens Firefox
  • Opens Things.app
  • Opens VoodooPad - my personal wiki
  • Opens Jott in Firefox - when I’m on the road, I will call in actions as they pop into my head. Jott isn’t great at transcribing my messages but I can re-listen to them when I’m doing my weekly review, etc.
  • Opens my RescueTime Dashboard - I use this to analyze productivity and see what apps I’m using heavily

Marketing

  • Opens Firefox
  • Opens Gmail Prism Instance
  • Opens Tweetie
  • Sets Adium Status to “Away”
  • Opens Google Analytics in Firefox
  • Opens my Fat Free CRM instance in Firefox
  • Opens up the WWR Forums in Firefox

I will continue to refine this list and add to it. Having used it for over a week, I can say Concentrate.app has helped me become more efficient and focused when I need to switch contexts. There are some problems with it and Vimperator I think, but overall it has become a de facto tool. I hope you find it useful!

Friday’s Software Enlightenment #3 - JQuery Edition

| Comments

Happy Friday! This week’s enlightenment brought you by the lovely JavaScript framework JQuery. If you like unobtrusive and functional javascript utilities, you really have to check it out. A while ago, I converted from prototype and haven’t looked back. I even built a plugin to help with our development process called under_construction. Use it to overlay or hide elements of page that haven’t been implemented yet.

On an off topic note, I’ve been using RescueTime and Concentrate.app to help maintain productivity. A blog post on Concentrate.app is forthcoming

Friday’s Software Enlightenment #2: Product Management Edition

| Comments

  • Bezos on Business and Zappos - A MUST WATCH - this was perhaps the highlight of my week courtesy of The Ted. I think Jeff really nails it on what makes businesses so successful today: you must obsess over your customers. I just found the talk really inspiring and informative. Take the 8 minutes to watch and learn from one of the best entrepreneurs of our time.
  • IShowU.app - This looks like great screencasting software. Screencasts are an effective way to show your users what they can do with your application. They’re also becoming quite popular learning tools for developers.
  • DHH Talks to FLOSS - David Heinemeier Hansson talks on a popular and well-produced podcast on how he got into development. He talks a lot about development mentalities and the need for establishing conventions. While I don’t always agree with David, I related to him in a lot of ways specifically around his business motivations overpowering his development aspirations. I found it really interesting.
  • UserTesting.com - I’ve been waiting for something like this for a very long while. Affordable, simple and effective usability testing really is just about observing user behaviors and listening to what they’re saying as they navigate. I haven’t tried this service yet, but I plan to do so in the near future.

Friday’s Software Enlightenment

| Comments

I’m going to regularly post links, discussions, and tips I’ve found helpful every Friday.

  • Version 2.3.3 of Ruby On Rails is Released - includes improvements to JSON and a touch command that allows you to update the updated_at timestamp for associated objects
  • Timecop - a really awesome gem that makes it easy to mock time related functions
  • JQuery Rounded Corners - I might be a bit late to the party on this, but rounded corners are so Web 5.0. Seriously, though the browser support for this plugin is impressive. I also like the api.
  • Giles on “Magic” Frameworks - I hear from a lot of programmers outside of the Rails community that it does too much “magic.” Giles’ thoughts are extremely poignant. I look at it this way: you drive a car every day. You put gas in it, get oil changes, etc. I don’t know everything there is to know about what’s under the hood, and chances are, neither do you. You have common interfaces with the automobile and all the smaller details have already been manufactured and put in place for you. A framework is definitely similar. Would a mechanic tell you that you cars run on “magic”? If you don’t understand something, that doesn’t make it magic.
  • Huddle’s Thoughts on Bootstrapping the development of a web app - Although I have to disagree on the usage of Elance, Guru, or design contests, there’s some good tips here. I’ve rescued many projects for clients that attempted to use inexpensive resources like those found on Elance. There is a similar lapse in quality when you run design contests. Credible and reliable help in building your application is the best investment you can make for your online property.

Jonathan Follett to Conduct UPA Workshop

| Comments

Our design partner, Jon Follett will be conducting the workshop “Visual Design for Web Sites and Web Apps” for UPA Boston on Saturday, August 01, 2009 from 9:00 AM - 12:00 PM (ET). If you’re a developer looking for some design orientation, I think this would be a great opportunity for you to gain some knowledge.

If you’re a designer looking to refine your skills on the web, Jon is excellent at his craft in addition to being a great teacher.

So join in on the event. I’m sure you’ll take some learnings home with you. Registration