Monday, November 30, 2009

Living Agile: 90 Day Action Plan

So, in breaking out of the post summer slump, our board at Twin Technologies had the executive team create 90 day action plans. I posted mine, and was surprised at how comfortable it was to create. Then, it hit me.. 90 day action plans are just a form of Agile planning.

I've always kept lists of tasks on 3x5 cards as well as various text documents that become intertwined over time. Whenever I start to feel like I am not focused, I return to the cards and find something that seems high priority to me. As a Scrum Master, the correct path should have been obvious, but sometimes we are blinded.

A 90 day action plan is simple to create. I used a Google Docs spreadsheet as my platform:

1. Create a new spreadsheet
2. Create two tabs - Goals and Actions
3. List high level goals you feel you can accomplish in the next 90 days on the goals tab
4. Prioritize these goals
5. List high level actions for goals
6. Create small action "tasks" for actions you plan to work on in the current week
7. Track status (%) against done.

In each goal and action there is an identifier so I can reference between tabs. I also have a column for marking predecessor tasks. You'll notice that this is very similar to a typical Scrum project:

1. Create backlog
2. Prioritize backlog
3. Estimate high priority stories
4. Determine what stories in the backlog can be tackled in the next sprint
5. Create tasks for accepted stories and give detail estimates
6. Track status (%) against done

The same benefits exist:
1. Ability to point to what goals suffer if other goals become a higher priority
2. Ability to self organize
3. Detailed reports can be generated against status daily
4. Reprioritization and goal changes are encouraged and expected

These are just a few. It took me about 30 minutes to create my 90 day action plan, and I encourage you to spend 30 minutes trying it out as well. I find myself more focused and really getting things done!

Tuesday, July 14, 2009

Digital and Social Media Presentation

I suggested a topic for 360|Max. I think it is important to discuss how digital media is undergoing a change that is directly related to the popularity of social media. This trend will change the way you think about your media experience and how you view television (really what you view it on). Go vote: http://tinyurl.com/nwschp

Sunday, July 12, 2009

My Adobe ColdFusion 9 and ColdFusion Builder Article is Live

I had the pleasure of writing an article to be released with the Public Beta of CF9 (Centaur) and CF Builder (Bolt). I decided to write about SOA and how CF9 and ColdFusion Builder change the way you currently develop your service tier. Hope you enjoy it!

Reinventing SOA in Adobe ColdFusion 9 beta and ColdFusion Builder Beta

Other great CF9 and CF Builder articles:

Introducing Adobe ColdFusion 9 Beta (by Ben Forta)
Introducing Adobe ColdFusion Builder Beta (by Ben Forta)
Introducing ORM in Adobe ColdFusion 9 Beta (by Mark Mandel)
Getting started with ColdFusion Builder Beta (by Simon Free)

Thank you Adobe

I've been an Adobe fan for years, first got started with Photoshop back in version 6 and I've seen it through CS4. I was pretty stoked a few years ago when another product I've been with forever was purchased by Adobe: ColdFusion. Being a CF Junkie since the Allaire days, seeing it through Macromedia and the Adobe acquisition, living through the yearly '<insert company here> is going to discontinue ColdFusion' threads and generally enjoying being a Team Macromedia member and now an Adobe Community Expert for ColdFusion, I'm happy to announce that public betas of both ColdFusion 9 and ColdFusion Builder are being launched right at this very minute.

There have been quite a few announcements of new features coming out in ColdFusion 9 (codenamed Centaur) so I'll just hit a few of the most exciting to me:
  1. CFaaS (ColdFusion as a Service) - ColdFusion core services are available via web services such as PDF document management, email, charting and image manipulation.
  2. Enhanced CFSCRIPT support - that's right! The tag functionality we have been been breaking out of script for is now available in cfscript! No more switching back and forth... use script when it makes sense for the entire process, not just bits and pieces.
  3. Implicit getters and setters - I just cannot say enough about this feature. Thanks Adobe!
  4. Lots of changes to CFCs - too many to list, just go check the docs.
  5. Caching improvements - granular control of objects and page fragments to disk or memory cache.
  6. Portlets - Government shops will love this one. You can now expose ColdFusion applications as portlets in leading JEE portals.
  7. Desktop server manager - AIR app lets you manage multiple servers from the same console (even supports clusters).
There are a few other features that are cool as well, go check them out (links at the bottom of the post).

Now to the second release of the night - I've seen quite a few ColdFusion IDEs - having worked in ColdFusion Studio, Homesite+, instructing in Dreamweaver and rocking the house in CF Eclipse, and now I'm proud to have gotten to take a sneak peek at ColdFusion Builder, the first code centric IDE for ColdFusion put out by the parent company since Homesite! I have to say, it's very cool and very handy. It is built on Eclipse, so one IDE to rule them all. Code generation has been moved out of Flex Builder (now Flash Builder) and integrated into CF Builder. You can connect to CF exposed services right from the IDE, generate AS3 code, start and stop servers and <drumroll>STEP DEBUG</drumroll>. CF Builder also provides code hinting and insight the likes of Flash Builder :). It even supports code refactoring, meaning updating a function name in a CFC will update all references to that function within your project!

I'm pretty excited about this release. I was glad to see the release provides more under the hood performance and functionality than widget-type tags. Go see for yourself:




Now the fun bits:
ColdFusion 9 Public Beta
ColdFusion Builder Public Beta

Developing Applications with ColdFusion 9
ColdFusion 9 CFML Reference
Installation Guide for ColdFusion Builder
Using Adobe ColdFusion Builder

Thursday, June 25, 2009

Mixing it Up: Defining the Corporate Solution

At a high level, solving the corporate issue can be accomplished by performing the following:
  1. Identify what networks to monitor initially
  2. Define what criteria makes a node the most influential for each network
  3. Identify the most influential nodes within each social network
  4. Identify which nodes belong to more than one of the networks
  5. Also, allow an entity to define what networks have more weight than others
  6. Rank each node according to influence across entire set of networks
The end user perspective is a bit more challenging but necessary since this is the dataset we need to crunch to perform the aobve. I will begin to tackle that in my next post.

Wednesday, June 24, 2009

Mixing it Up: Corporate Perspective


More and more companies are beginning to understand the importance of social networks within their marketing campaigns. I received an email from buy.com this morning with an extensive Twitter campaign. In the case of buy.com's campaign, they focus on existing buy.com customers to extend the invitation and then pull them into Twitter and furthermore require them to become a follower of @buy_com. This enables buy.com to grow within the Twitter network and push new campaigns, as well as have their followers tweet to their own networks.

Now, once they have the followers and retweets, what next? How do they keep their message from being diluted, lost in the shuffle, or from becoming Spam? Companies need to determine the most influential nodes within their network to ensure targeted campaigns that reach as many people as possible but do so in such a manner that the message is not diluted or Spammy, but come directly from a trusted member of the social network.

How do we determine the most influential people within a social network? Well, we can easily define who within our network is connected to the most people. Consider the following image:

While two members of this network have 6 connections, the highest number of friends within this example, they are probably not the most influential. The person in the middle of the graph with only three connections is the sole link between the two subgroupings. This does not necessarily make them the most influential, but is meant to illustrate the concept that more connections does not mean more influence. Even with this determination, many more factors need to be taken into account.

There are several algorithms that are helpful in targeting the key influencers within a social network (beyond the scope of this posting). One limitation of running these algorithms within a network is that they fail to take into account the connections between disparate networks. Defining what edges are key influencers within Twitter that are ALSO key influencers within Facebook is an awesome tool for an advertiser within a corporation. If we can break down the barriers between the individual social properties, the possibilities are endless.

User stories:
  • As a company I can determine key influencers that bridge multiple social networks so that targeted advertising reaches as many trusted nodes as possible
  • As a social network I can determine key influencers within my own network that are also key influencers within a competing network so that I can bring more nodes into my own social property

Mixing it Up: End User Perspective

In continuing my open source social network project transparency theme, I'm going to post two perspectives with several use cases. The first perspective I'll post is the end user.

As a user of multiple social networks that understands that there exist tons of other networks I currently do not belong to, I have a hard time deciding where to spend my time and effort. The two I use most heavily are Twitter and Facebook.
  1. Twitter - Allows me to connect with my followers on mostly non-personal conversation, instructional items and interesting tidbits as well as find others with similar interests.
  2. Facebook - Allows me to connect with trusted friends and colleagues and post personal comments and updates.
These networks take time and effort to upkeep and there may be great social circles I am missing out on just because I do not know I already have a following on them which would allow me to test the waters without having to invest time building up a circle of followers.

Currently, I can import contacts from other social networks and online services, however, until I create an account I have no idea.

User Stories:
  • As an end user I want to be told that a friend in one social network belongs to another social network that I am a member of so that we can connect in multiple mediums.
  • As an end user I want to be told that a friend in one social network belongs to another social network that I am NOT a member of so that I may join and connect in another medium.

Tuesday, June 23, 2009

You Need to Mix it Up

From Thesaurus.com:

'..in a mixture, the combined elements lose their individual identities and are fused, blended, or compounded in the result; in a mix, the elements, though combined, retain their individual identities.'

My next opensource project is currently in the planning stages. The idea is to help identify the connections between diverse social networks. I plan to run this project in the open (think 'transparency') so I can learn from my mistakes as well as get input from the Internet community as a whole. More to come over the next few days...

Monday, June 22, 2009

Understanding User Stories

I recently had a co-worker ask me the best way to go about creating user stories, so I pushed them to a presentation by Mike Cohn. The presentation listed the framework to be applied as well as some theory. The response was "Yeah, we know all that. How do we get the Product Owner to write the stories, or how do we help them write the stories?"

This got me to thinking and after an hour long conversation I think I have some ideas to share:

1. Scrum Product Owner Training is a must, but not always feasible depending on the client environment.

2. Don't expect to hand off the process to your Product Owner. Explaining the process in detail might excite some clients, and be off-putting to others.

3. Before the Product Owner and the Scrum Master know how the other works, I find it easiest to start with Feature Groups and work them down into user stories one at a time. Feature groups define the higher level items that exist within your project/product. Each Feature Group may then be tracked to show progress against requested functionality. Starting at Feature groups allows the Scrum Master to get the ball rolling and soon the stories will flow faster than you can write!

4. Don't Talk Tech! User Stories should be written to solve the 'What' and even 'How', but are not meant to define the underlying implementation. In most cases tasks will define the implementation.

5. Make sure the Product Owner and Scrum Master have time alone to prioritize the stories. Bluesky sessions with the extended team are very beneficial, but block progress on prioritization.

6. Ensure your Product Owner is empowered. If they are not empowered, the user stories process will fail. Prioritization will be undermined. Use the transparent nature of Scrum projects to determine and call out risks with the Product Owner.

7. Especially early on, write the user story framework down and refer to it often: 'As a ____ I can ______ so that _____.' Don't forget the 'so that' as that becomes imperative in the ongoing prioritization process as well as provides clarity for the team.

8. Don't insist that the Product Owner speak to you in user story form. Take notes as the Product Owner talks and then work with them to write the official stories. The process will improve as iterations pass.

Hopefully this helps someone out there who is struggling with a client who is new to Scrum, or who is having a hard time getting the juices flowing!