Saturday, November 8, 2008

Combating Rogue Development

Following on from the previous post - The Cranky Product Manager's Imposition: WTF Refactoring?

Scene: War Room. 2 days until Code Freeze.

LEAD DEVELOPER:
So, unfortunately, we’re going to have to pull FavoriteFeature out of the release in order to meet the schedule.

THE CRANKY PRODUCT MANAGER:
Huh? That feature’s been in the product for 3 releases now. Customers love it. Why do we have to pull it?

LEAD DEVELOPER:
Well, we had to refactor the code, but unfortunately we just don’t have the time to write unit tests.

Fast forwarding...

LEAD DEVELOPER:
Well, I, uh…. Well, …while the guys were in there modifying, you know, the CODE, well, they, uh, figured they could, uh…, well…, add some stuff to create some WICKED cool Hologram broadcasting stuff. It affected the old tests.

THE CRANKY PRODUCT MANAGER:
(pause)
First, Hologram what? That’s not in the backlog!

LEAD DEVELOPER:
We thought it would be cool.

This is a situation or something similar that happens too often. Engineering wants to do something "cool" and may at best slip the release date. At worst, as in this example, product quality and features may be compromised. What is a Product Manager to do? The development effort happens at too many levels and areas to keep track of and still performing all the other Product Management functions. So what can be done about this?

Several things, the choice of which depends on your development atmosphere and program maturity.

One of the buzzwords gaining traction since 2001 is "Agile Development." Agile development encourages frequent inspection and adaptation. It is a leadership philosophy that encourages team work, self-organization and accountability. The weekly team meetings may have revealed that the "unit tests" were failing well in advance of code freeze. There is also less of a reliance on a true code freeze. Features are implemented in small bite size and scoped chunks over iterations. These iterations last from one to four weeks. Because of the frequency of these iterations the code / product has less of a chance of deviating too far from the code's projected path. It also has the ability to change direction and focus as the market needs evolve.

Agile development emphasizes people and interactions over tools. The original incarnation was to use sticky notes on a white board or wall. With time, tools became an inevitable out growth. They do help automate and manage the process. Also, sticky notes do not work for remote teams. Free tools such as Agilefant and XPlanner can be used from the open source community. (http://www.agile-tools.net/) If you have the budget, subscription based services can be had from Rally Software or VersionOne. There is a whole ecosystem building up to support this development need so I won't belabor the point.

Agile development can be a bit of shift in thinking for some development teams. Another approach is to modify the code check in process and have the development team itself monitor what is being produced. One model that I have seen used with good success is a two tiered code submission process.

Individuals work in their own private "sandbox." When the feature they are working on is complete they check that in to a sub-system location. A sub-system integrator (SSI) takes the code that was checked in and builds it as a unit. Regression tests can be run on that unit before it is checked into the main code base or 'head'. The whole purpose of this exercise is to ensure that the main code line remains stable. Members of a subsystem team can be rotated through the SSI role. This way everyone gets the responsibility for ensuring sub-system's stability and no one is ever always the policeman.

With code in various stages of development, acceptance and testing it may sound like a management nightmare. It does not have to be though. Establishing a holistic approach to software development can smooth out potential problems and keep everyone informed as to the release's status. Treating the process of specification, development, testing and deployment as a continuously repeating cycle frees teams up to focus on what goes into the software rather than how to get the software out. This is referred to as Application Lifecycle Management (ALM). Now instead of treating each piece as a separate entity if you can tie them together the entire team is aware of where the code is in the development cycle and what is in the product.

Referring to the CPM's example from above and using a rudimentary example to finish the story out; a specification is created with some identifier. This is agreed upon with engineering and work begins. The code, when ready for testing, is checked into the release branch using the earlier assigned ID. A flag is set to indicate the ID's status as "checked in." This can be seen by the various team members (i.e. Prod. Mgr., QA, docs, etc.) The other members can then begin taking care of their part of the development process. As they complete their functions associated flags are also set until finally the feature is deemed complete. Repeating this process for all the features assigned to a release finally culminates in the release with known entities. No last minute surprises should occur.

Of course, this is all in a perfect world and everything works flawlessly. I have also managed to shorten book length topics to a single paragraph or two. I would be interested in how you have managed to reign in rogue development work? And what was the effect on the team's creativity? Let me know.

Thursday, November 6, 2008

Jumbled Thoughts

Today's entry is about writer's block. We all get it. Sometimes because we don't have anything to say. My problem lately is I have to much to say but it all cannot come out in a coherent manner. So like 2 large individuals trying to pass through a doorway at the same time it gets stuck.

Combating this situation today I went for a bike ride at lunch. After 25 miles things started to break free and by mile 30 I was starting to get the makings for a decent commentary.

The break through in my log jam came by thinking about two posts nearly simultaneously. Brad Feld's "Running and My Professional self" and Taylor Graves "Layoffs." What do they have in common? Nothing until they wind up in my consciousness.

Here I was exercising while during a stint of unemployment. I was trusting that clarity would come as it has so often in the past. The past few months I have been not allowing myself the usual lunch time ride. My thoughts were that this was a guilty pleasure that I couldn't afford. Today I took it because it was obvious that nothing was happening on my end this morning. My hope was that the fresh air would clear my head like Brad's runs. The fact that it took so long showed how out of practice I was at clearing my head.

Taylor's post was good because it struck a cord that someone still so early in her career could have a positive and mature outlook on her situation. I am not sure I could have been so positive 10 years ago. Today, after several months of fruitless searching I am still relatively up beat and optimistic despite everything that the economy seems to be throwing at me. While I found her post refreshing, it tended to put some pressure on me to get my act together. Then, in that Aha moment I had remembered, I got my inspiration.

My mind turned to yet another blog post by the Cranky Product Manager. She was ranting about code refactoring and product features.

Having been in her situation, I can sympathize with her. Witnessing the impact on the product quality and team moral I applaud her upfront method of calling BS. What now? Well, the tactical implications are the lead is probably going to be pulling a few all nighters or the schedule may slip. It depends on how hard line she gets. My guess is that they schedule will slip over her dead body. (I cannot wait to read about the carnage)

This may or may not be the first time this has occurred on her team. It sounds like a seed of doubt has been planted and future excuses are going to be easily dismissed. Are there things that can be done to restore happiness in development land?

Let me know your thoughts.

I meanwhile will share mine in tomorrow's post since that bike ride was so good at getting things sorted in my head.

Wednesday, November 5, 2008

Defrag 2008

Defrag08
Defrag 2008 delivered on the promise to “augment the pace at which we achieve insights on raw data.”

Being a casualty of today’s economic climate (aka unemployed) I have been following the web advances and coming up to speed on Web 2.0 and beyond with my extra time. Due to location and a last minute ticket from Ross Mayfield (@Ross) with SocialText, I was able to get a front row seat to some very eye-opening information. It certainly fed my data addiction for two days.

Charlene Li gave an enlightening presentation on Harnessing the Implicit Value of the Social Graph. Starting off with a statement like “Social Networks will be like air” can get your attention. Charlene then went on to show how traditional corporate “Walled gardens are breaking down.” Later in the presentation as she was looking towards the future and making use of the technology we have available to us she encourages the audience to “Prepare for the demise of the org chart.”

I would ordinarily say such lofty ideas are great, but we are a long way from realizing them. Ordinarily that is, except, I happened across a blog on Obama's Seven Lessons for Radical Innovators by Umair Haque today. Umair independently validates Charlene’s ideas by pointing out how Barrak Obama did just this; “By tapping the game-changing power of self-organization. Obama's organization was less tall or flat than spherical - a tightly controlled core, surrounded by self-organizing cells of volunteers, donors, contributors, and other participants at the fuzzy edges.” This was very similar to the notion that Charlene was expressing.

Rich Hoeg and Neeraj Mathur illustrated how their Fortune 500 companies can be seen as leaders in the new social web era. Both individuals are in the process of establishing extensive social networking operations inside Honeywell and Sun respectively. This network enables their companies to leverage the collective brain power they have access to in order to efficiently perform their corporate functions. Having come from such an environment, I was truly impressed that these large corporations could be so forward thinking. It gave me a boost to be free of my previous employer and hope looking forward to the next one.

The opening presentation - Strategic Intuition and Defrag by Professor William Duggan from the Columbia Business School and author of Strategic Intuition was entertaining and informative. Prof. Duggan used examples from history to show where the “Aha” moment comes from. He pointed out that Carl von Clausewitz gave us four steps to get this which are:

  1. Use examples from history – how did someone prior achieve greatness?
  2. Presence of mind - Enter the situation and clear your mind of all preconceptions (what the solution is etc.)
  3. Flash of insight - shows you what to do. With a clear mind you now know what is needed.
  4. Taking off and putting flash into action.

Professor Duggan also pointed out that “great artists steal” using examples from Picaso and Thomas Edison. He also related these individual’s accomplishments to the above steps in order to achieve the Aha moment. In summary, steal a concept that was used earlier and apply it to your need today. For example, Larry Page (Google) developed Page Rank. This idea is an adaptation from an earlier concept of using academic citations and how often they are cited to rank university researchers. From this, why not apply to web pages?

The final presentation of note was Brian Oberkirch’s “Under Sousviellance: Personal Informatics & Techniques of the Self.” This was informative because Brian showed “What happens when you can make those invisible life patterns visible?”

Brian presented viewing the web as a stream of data as opposed to distinct web pages. Objects in the world are being automated and enabled to “throw off data.” Many services and ideas are coming about with how to more seamlessly make use of this data. Brian cited and gave many examples of such companies and devices like:

  • Feltron.com - Annual report for himself, very interesting minutia
  • Plodt.com – Chart your life using Twitter
  • Xobni - email analytics
  • Dopplr - business traveler tracking and carbon footprint information
  • Fuelly - track data for your car
  • RescueTime - Ridiculously easy time management

These services and many others like them begin putting much information about you and your life out in the open. It raises a host of questions along with providing a wide array of services.

So when you have a quite moment, think about your past year. What would you do if you new how many web pages you visited, how many miles you traveled, how often you communicated with a loved one. Now, with that information, what would you do differently in your life going forward?

Did you have any revelations?