There were, by my count, over 250 breakout sessions at Dreamforce (see program). At first I felt sad that I couldn’t attend many of them. Then I looked at the content and realized that, to be honest, I was glad not to go to a lot of them. You see, a lot of the sessions are specific to particular audiences — verticals, like Healthcare and Manufacturing; job functions like Sales, Marketing and Support; and technical like Beginning Developers and Administrators.
I tended to stick to the Advanced Developer track and one called Backstage Pass, which was ideal for Salesforce.com junkies who always want more information about their favorite system. Day 3 provided plenty of content for this fetish, plus plenty of swag from exhibitors trying to offload their goodies before the expo closed. (I hope you liked your T-Shirts, Cara!)
Several sessions today focused on Salesforce.com’s application of the Agile Software Development methodology, which they call Adaptive Delivery Methodology (ADM). This is the ‘secret sauce’ that helps them achieve three major releases each year in a consistent and predictable manner, with the high quality demanded by an enterprise-class system.
At the core is the fact that release dates are fixed, but the scope of features delivered can vary. If something’s not ready (or not up to sufficient quality), it gets dropped from the release. Although, according to a friend of mine who used to work at Salesforce.com, the pressure certainly does mount in the month prior to a release.
Here’s their particular comments, placed against the normal Agile principles:
- Avoid technical debt that just delays the pain by having to ‘clean up’ poor code later
- Avoid spending time on features that customers don’t want or need
Build Quality In
- Perform small iterations, then test and get feedback
- Use continuous integration to test code upon checkin — they have 40,000 automated tests!
As a side note, Salesforce.com have the benefit that their software operates on only one database, application server and hardware — theirs! This makes things much simpler than for ‘normal’ software vendors who have a large matrix of platforms and versions of 3rd-party software that must be supported. Instead, the variability comes from having to test combinations of Web Browsers running on a variety of customer’s Operating Systems. Fortunately, they know exactly which platforms need testing because web browsers report this back to Salesforce every time a page is loaded. So, they use a huge array of Selenium tests to check that the User Interface performs as expected.
In all, the full suite of tests takes 8 hours to run, so they also have some ‘pre check-in’ tests and smaller sub-units of tests that can provide feedback to developers much more quickly.
- Hire good people and unleash their potential
- Empower the teams and allow them to self-organise
- Let the teams decide what to build, how to build it and how much to build in the time available
Optimize the whole
- Optimize both globally (across 60 teams) and within each team
- Each team is cross-functional and has most of the resources required to succeed, such as a Product Manager/Project Manager, Scrum Master, developers, Quality Assurance, documentation, usability and operations (some resources are shared across teams, such as the UI Design team)
- Optimize at the team level, not at the individual level
- Value and encourage innovation
- Let ideas and knowledge flow both vertically and horizontally
- Delay irreversible decisions as long as possible (as opposed to the Waterfall model that plans everything before development begins)
- Have ‘just enough planning’ to get started
- Make product decisions along the way — spend time on the prototypes, not the specifications
- Create a culture of Delivery
- Continually ask “What have you delivered today?”
- Build in small increments, get regular feedback
- Deliver something that customers can use every 30 days (it’s not released every 30 days, but it’s important to have releases so that other teams can build functionality upon it)
- Where features require more than one release cycle to implement, some features have been known to be released ahead of time. For example, some of the functionality for just-announced Chatter was actually ‘rolled-out’ in a previous release of Salesforce, but kept hidden from customers
Salesforce.com moved onto this methodology about 3 years ago, which they claim has led to nine on-time, high quality releases since inception. The move was done over a 3-month period to avoid letting it ‘drag on’ for a long time. When I asked a developer whether the methodology worked, they remarked that it was significantly better than the prior mayhem.
A final Dreamforce session was entitled Meet the Force.com Platform Development Team, featuring a panel of 7 developers. With very little presentation, the session was opened to the audience, who then proceeded to ask “When is feature X coming out?” To the full credit of Salesforce, the audience was also littered with Product Managers who were able to give honest answers (which typically ranged from “It’s not on the roadmap” through to “The code was just checked-in yesterday!”)
Of all the panel, however, my attention went to Simon Fell, whom I consider somewhat of a hero amongst the Macintosh community. Via his Pocket Soap website, Simon has released an array of useful Macintosh utilities such as:
- LeXiLoader: A Mac version of the DataLoader which Simon voluntarily updates whenever DataLoader is released (help vote for his Idea to have this product officially supported!)
- SoqlXplorer: A great SOQL query tool with a very graphical schema explorer
- Maildrop: Giving the ability to upload emails to Salesforce from Apple’s Mail application as well as Entourage
- …plus a few other nifty utilities
Ironically, while there was a whole PR contingent running around Dreamforce arranging executive interviews for the Press and VIPs, they were somewhat confused by my request to interview a ‘non-executive’ like Simon. Fortunately, I managed to catch him after the panel presentation and he gave me this interview:
And that’s why Simon is my hero.
The Bottom Line
- They concentrate on on-time delivery, even is the scope of delivered features suffer
- They do lots of automated testing to ensure quality
- Good ideas come from good people