# Sunday, 21 November 2010

"How can I add a picklist field?"
"Can I modify this report?"
"Would you please update the Lead trigger to de-dupe by email address?"

Salesforce Administrators are faced with these, and many more questions on a routine basis. Salesforce.com CRM provides sufficiently granular access permissions to control precisely what an end user can and cannot do. As end users click around Salesforce, the general rule is "If you can do it, you probably have permission". However, the same thing cannot be said for System and Delegated Administrators.

Once a user is given administrative access to application settings, then more training and monitoring must be imposed. In short, a "change management process" must be implemented.

There are a number of business drivers for a change management process:
  1. Compliance - Your industry may require that certain changes be reviewed, approved, documented, and deployed in a methodical way
  2. Productivity - The smallest change in a user interface can result in hours of lost productivity if users aren't given advance warning or training
  3. Reliability - Prevent the deployment of changes that may break existing workflows or processes

Change management processes attempt to answer all or some of the following questions:
  • Who approved and/or made the change?
  • Why was the change needed?
  • When was the change made?
  • How was the change deployed?

A change management matrix can help identify how each type of change should be managed.

Steps for creating a change management matrix:
  • Create a list of common Salesforce changes in a spreadsheet
  • Define a spectrum of change management categories (For example, red/yellow/green lights)
  • Periodically sit down with all Sys Admins, Developers and Approvers and review how the organization should respond to each type of change category
  • There will always be exceptions. Add an "Exceptions" column to the matrix and document them
  • Train admins on the use of built-in auditing tools to ensure compliance with the CM process

Sunday, 21 November 2010 13:07:15 (Pacific Standard Time, UTC-08:00)
# Sunday, 13 June 2010

Jazz - A Software Development Methodology


What
Jazz is a software development methodology for the ongoing creation and improvisation around several small apps distributed on open Internet platforms (the "cloud").


Why
Contemporary tools, languages, and distribution platforms of the 21st century make it feasible for software to be created, delivered, and performed similarly to Jazz music of the 20th century.

Software, like music, may be consumed repeatedly throughout the day by audiences.

Software has become ubiquitous and essential to people's everyday lives.

Audiences increasingly are demanding to know more about the personalities and teams behind their favorite software applications.


What (Apps)
Jazz combos seek to build a repertoire of several small apps, as opposed to developing and supporting one large app. Jazz is most suitable for Developers distributing applications through online stores (such as the Apple App Store, Google Marketplace, or Salesforce AppExchange).

The repertoire should consist of at least 10 apps.

Not all apps are for commercial distribution (such as contributions to open source frameworks and proof of concept apps used for marketing purposes).

Only 1 in 10 apps within the repertoire will achieve any significant amount of notoriety or market adoption.


Who (The Combo)
Apps are initially composed by a single person, which are then rehearsed and performed by combos of up to 5-7 people. Apps are occasionally composed by 2 collaborators.

Apps are consumed by audiences (customers).


Where (Spaces)
Jazz is composed, rehearsed, and performed in 3 distinct "spaces".

Composition and practice are done in solitude (home, coffee shop, the beach) but always connected (anywhere with Internet access)

Rehearsals are done with a group about once per week in public meeting places

Performances are ongoing. They occur both virtually and physically. All audience interactions are performances (this includes app store listings, webinars, support, and customizations)


When
Jazz is not a 9 to 5 job. However, ongoing performances are typically supported by someone during working hours.

Jazz Developers dedicate at least 3 days per week to uninterrupted work (composition and improvisation) and at least 1 day for group rehearsals (meetings) and audience interactions (support and review of customer feedback).

Compositions may take 1 day or 1 year to write. It should take no more than 2 years to accumulate a repertoire of 10 apps.

Team members are often given "the floor" during performances to lead and improvise within a composition. Improvisations are short creative cycles within the overall structure of a composition.


How
Each member of a Jazz combo owns and maintains their own instruments (tools) that best support their function within the combo.

Academic mastery of instrument and language are assumed before confidence in composition and improvisation can be achieved.

Jazz combos are unified in language presented to audiences, but individually use languages specific to their instrument or function.

Jazz encourages the sharing, remixing, and reuse of ideas through use of creative commons licenses.

All individuals are given public recognition for their contribution to an app.

Performers may practice up to 10 hours for a 1 hour performance (10:1 ratio of effort, unit tests behind released products).

The best performances are achieved through mastery of instrument, confidence in skills, and relaxation of mind.

The result is more important than the means. Don't over think the process to achieving a good performance.

Improvisations often rely on audience feedback to determine the path of a performance.

The Jazz combo may dynamically adjust composition structure during a performance through subtle communication to support an improvisation that may lead to new discoveries or increased levels of audience feedback and participation.
Sunday, 13 June 2010 13:04:29 (Pacific Daylight Time, UTC-07:00)