Wednesday, October 5, 2016

5 Step Recipe for building Communities of Practice

As part of organizational transformation journey, CIOs today need to move from hierarchical models to self organizing communities to deliver IT, and there is an even greater need to build and sustain "Communities of Practices" for achieving the same. If you are an internal change agent responsible for building these communities, you can learn about the 5 step recipe to building and nurturing these communities in your organization:

But before we kick-start, let us try to understand what really is a Community of Practice?

Communities of practice (CoP) are groups of people who share a concern or a passion for something they do and learn how to do it better as they interact regularly.

Typically these groups have a shared domain of interest, shared competence, and learn regularly from each other. They engage in joint activities and discussions, help each other, and share information; they are practitioners who share experiences, stories, tools, ways of addressing recurring problems — in short a shared practice

Below is a simple 5 step strategy to kick start and nurture your Community of Practice:

1. Establish a Sense of Urgency and leverage the Strategic objectives

Corporate honchos will typically lay down the current / future areas of focus for the organization. These are typically called as the Strategic Capabilities or future growth areas or similar sounding terms. 

The key to starting a community is to leverage these strategic objectives with an inbuilt sense of urgency, and find a key sponsor (read as TOP DOWN Support), and identify the contributions with this sponsor, as to how the community can add Value, and then focus the discussion and activities around these.

The BOTTOM UP support is always easy to find, once the Sponsor has been identified, who can then help in spreading the message across the enterprise. It is never a question of how to find the bottom up interest, but more a question of 'how to engage and guide' the early adopters and steer their passion.


2. Gather 'early' Adopters and "Run"

Start with whoever shows up and accept that there will be passionate people (few initially), but always encourage and accept different levels of participation. You will realise that the strength of participation varies from each individual. The ‘core’ (most active members) are those who participate regularly. There are others who follow the discussions or activities but do not take a leading role in making active contributions. 

Then there are those (likely the majority) who are on the periphery of the community but may become more active participants if the activities or discussions start to engage them more fully. All these levels of participation should be accepted and encouraged within the community.

There is never a critical mass required to start a community. So RUN with whoever shows up!


3. Partner with the internal and external Ecosystem

As a community guide, you will/shall/need to partner with the internal and external ecosystem for your organization.

The internal ecosystem would include your Support functions - typically Human Resources - Learning / Training departments, and the internal facilities, who can provide the required logistics, marketing muscle, sometimes manpower too and really make your community endeavours as a key part of their learning offerings. It is best to create this win-win combination to sustain your communities. 

The external ecosystem is key and would include partnership with the industry forums, and speakers, wherein the community members interact, broaden their expertise, and learn and share their stories, new learnings and upcoming trends. The key is to provide an engagement channel with your Community SPONSOR, on how to funnel the participation and share these learnings internally without getting sucked into the legal and compliance partners.  The culture of your organization may aid/resist this step-up.


4. Scale -  Horizontally 

In order to generate initial buy-in across a wider spectrum, it always makes sense to scale horizontally first, so that you can achieve critical mass for your community. This allows the members to contribute and break the ice, and helps in the initial stages in collaboration for the 'core' team, as each member brings some additional value to the conversation. We call this strategy as the - Go Wide move

It always helps to create a rhythm for the community with regular schedule of activities that brings the participants together on a regular basis, and combining familiarity and excitement, by focusing both on shared, common concerns and perspectives, but also by introducing radical or challenging perspectives for discussion or action.

5. Scale -  Vertically

Post the initial buy-in, and few first steps, there are always challenges of - What next? Who runs? When? How?

Try Vertical Scaling! - which means going deeper into the sub-topics of interest / work streams within a common umbrella, focusing on multiple aspects: roles/functions/location/on-line/offline medium

As the community needs to be refreshed every few seasons and undergoes an ownership transition, which will happens as you scale vertically now, it is OK to disengage the earlier passionate core and let a new 'core' emerge. Other options include introducing Game mechanics in the community, and allowing for non monetary rewards and publicity for the passionate volunteers.

In the end it is the Passion that always rules!

The key to building successful communities is to provide an enabling platform and a safe environment for people to share their stories without any judgement or fear of failure.

I would definitely be interested to hear if you have used these or additional steps to make your communities a success !!


Photo Source: http://bit.ly/2d39F6R

Monday, June 29, 2015

Try these 3 strategies to FIX your DevOps problems!

In my previous post, we saw the Top 3 DevOps challenges faced by organizations today. So let us review how organizations can address these challenges by leveraging the power of systems thinking, feedback loops and cultural transformation at the core, to claim the real promise of ‘agility’ for the customers and stakeholders




TOP 3 SOLUTIONS


·      Build Ownership


The goal is to foster win-win relationships, where the dev and ops team start thinking as a SINGLE UNIT, responsible for end customer delight! This requires the organizations to align the Goals for both the groups and provide the ‘right’ environment for collaboration.

Organizations which understand systems thinking, can help the Dev and Ops teams visualize the FLOW (from concept to cash), and are able to articulate the importance of cycle time, while error proofing and preventing downstream defects (aka. operational headaches).

These teams typically use Value Stream Maps, to share the areas that slow them down (or identify bottlenecks), while building a shared understanding of the complete end to end system. These exercises allow the teams to build empathy for each other’s roles and share the pains, thereby allowing the silo’d groups to start to trust each other and build better relationships over time.


·         Build Shared Practices


The long divide between Dev and Ops can be bridged by amplifying the feedback loops at every step in the end to end delivery cycle and sharing the knowledgebase and increasing transparency across both the worlds.

Organizations typically start this journey by treating Infrastructure as Code, where there is a single repository of truth and everything is version controlled. The teams start thinking about making each step of the highest quality and incorporating feedback from multiple levels – application data, process data, infrastructure dashboards, and business metrics – to highlight pain points early and design shared solutions around the problems. Refer the diagram below highlighting the areas for embedding and/or extending the teams and crossing the systemic boundaries.

Organizations can be seen experimenting with embedding Ops and Dev team members across each other’s groups, which allows for increased empathy (example – Design for Operations), learning’s and increased collaboration.

                                                                                        Source: DevOps Patterns Distilled (Velocity London 2012)


·         Build a Learning Culture


The best ways for bridging the cultural gap between dev and ops is to build a learning culture. Organizations which embrace the learning culture are good at communicating a compelling reason for the change (primarily business outcomes), measuring the new behaviours and giving feedback, creating “triggers” in the work environment that remind teams what needs to be done, and building communities (CoP’s) that support this shared learning

The leadership encourages learning from failures, and is happy to conduct experiments and take risks, promoting a healthy culture of constant innovation while aligning team goals and changing human resources policies.


In the end


Dev-Ops is a long journey and it begins with building a “we” culture among the development and operations teams with shared goals and shared incentives. The improved communication and collective ownership fosters an environment of trust, leading to sharing of ideas, tools, processes and everyone focussed on delivering business value at the end of the day.

Let me know what other solutions you have practiced with your DevOps teams.

Sunday, May 31, 2015

Top 3 challenges in your DevOps journey

The 2014 State of Devops survey report clearly shows higher organizational performance linked to the performance of the IT group and it's DevOps practices. But most organizations are still struggling in their IT-DevOps journey  - "only 21% of those familiar with it are using it". In the DevOps journey the main objective of "Collaboration between the Dev and Ops" faces many challenges! Let me attempt to highlight the Top 3 challenges faced by most organizations.


TOP 3 CHALLENGES 

  • No Shared Ownership


Most programs typically have Development and Operations as separate teams, with conflicting goals.

The top down goals for development teams are to build features (potentially shippable increments) at short regular intervals so that they can be deployed, with all incentives promoting 'faster' build cycle, versus the operations team goals favor operational stability with changes minimized, in order to maintain existing system reliability and high availability, with incentives for reducing operational costs.


These conflicting goals setting lead to development teams “handing off” the code to operations after development, and operations "pushing back" almost every time.

The overall impact is that the feature 'go live' date is delayed, with both the groups lacking "shared ownership" for reducing the overall feature delivery cycle time from an end customer view point.


  • Physical separation


Development and Operations teams are separated by distance, and mostly do not share the same physical location or work area. Most organizations will have centralized operations teams, possibly across time zones for larger enterprises.

The silo'd physical structure is also carried in the silo'd organizational structures with different reporting heads for both the teams, thus ensuring that local optimizations rule the day, with the Operations team members managing and running multiple applications, in closely guarded areas, with restricted access or interaction opportunities with the Development teams.  

How can you relate to someone whom you have never met face to face and never talked? bye bye collaboration !!


  • Cultural differences


Cultural differences are visible in the behavior and actions of both the development team and the operations teams. 

The lack of trust and transparency on both sides is what manifest in the communication gaps on both sides, with the development team having minimal visibility on deployment activities and feedback on production systems (read  infrastructure metrics), and the Real business metrics and similarly the operations teams having minimal visibility on what is the expectations on the features wrt.  scalability, run books, or reliability that they should care about to maximize the applications potential and operate as expected by the development team. 

The lack of shared evidence and the missing Shared ownership clearly comes out and creates a sense of mistrust and results in overall delivery delays.


“The developer and operations divide in IT is almost like humidity at times. You can’t see it, but you feel it,” - This quote from the Starabucks devops post sums the challenges....  

what are the challenges do you see in your devops journey?


Look out for my next post which will try to address possible solutions for these challenges...


Friday, October 31, 2014

Step by Step guide to installing Robot Framework

Robot framework has been a little tricky for most folks though now provides an installer for windows, but still it is best to know the detailed steps if you do not wish to use the Installer.

So let's get started -

Installing Robot framework - requires Python installation first as a pre-requisite.

All steps below for Windows OS (32/64 bit)

Step 1. Install Python version 2.7.8 
(supported Python version for Robot Framework version greater than 2.7)

https://www.python.org/downloads/
Installer Files:  python-2.7.8 - for 32 bit / python-2.7.8.amd64 - for 64 bit

Ex. Installed at c:\python27\

Update PATH environment variable for Python -

C:\Python27;C:\Python27\Scripts;C:\Python27\Tools\Scripts

**Verify Python installed and the path set
Run command:
cmd C:\>python -help
Lists python command line options


Step 2. Install setuptools 7.0
(Easily download, build, install, upgrade, and uninstall Python packages)

https://pypi.python.org/pypi/setuptools#installation-instructions
File: ez_setup.py

Run command :
cmd C:\>python ez_setup.py
.......
"Installed c:\python27\lib\site-packages\setuptools-7.0-py2.7.egg"

**Verify Setup Tools folder and files available -
setuptools-7.0-py2.7.egg file created under ..\lib\site-packages
C:\Python27\Scripts\easy_install2.7


Step 3. Install pip
(Python Package Manager)
https://pip.pypa.io/en/latest/installing.html

File: getpip.py

Run command :
c:\Python27>python get-pip.py
Downloading/unpacking pip
Installing collected packages: pip
Successfully installed pip
Cleaning up...

**Verify pip folder and files available -
C:\Python27\Lib\site-packages\pip
C:\Python27\Scripts\pip


NOW you can install ROBOT FRAMEWORK finally !

Option 1 - Install Robot framework using pip
https://pypi.python.org/pypi/robotframework

Run command :
C:\Python27\Scripts>pip install robotframework
Downloading/unpacking robotframework
.........
Successfully installed robotframework

**Verify pybot.bat created under C:\Python27\Scripts

** Verify Robot framework installed
C:\>pybot --version
Robot Framework 2.8.6 (Python 2.7.8 on win32)

Option 2 - Install Robot framework using the Windows installer
https://pypi.python.org/pypi/robotframework

Pre-requisite - Python installed
Installer Files: robotframework-2.8.6.win-amd64.exe  / robotframework-2.8.6.win32.exe

Option 3 - Use the Stand-alone Robot framework JAR package
Robot Framework is also available as a stand-alone robotframework.jar package.
This package contains Jython and thus requires only JVM as a dependency.

Maven Central -  http://search.maven.org/#search%7Cga%7C1%7Ca%3Arobotframework

Assumes java installed already
** Verify Java installed
cmd c:>java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

Pre-requisite - Python installed

File: robotframework-2.8.6.jar

Run command:
cmd C:\dev\robotfx\jar>java -jar robotframework-2.8.6.jar

** Verify Robot framework installed ...

robotframework.jar - Robot Framework runner.
Usage: java -jar robotframework.jar [command] [options] [input(s)]


Hurray, you are NOW READY to use the Robot Framework for writing your tests !!

Photo Credit: https://www.flickr.com/photos/zedworks/

Thursday, September 11, 2014

Top 5 Agile project Myths – Smashed !


Catching a glimpse of a snake charmer on a busy Indian metropolis, is a big myth that many foreigners visiting India still cherish (wishful thinking you might say!). But the reality is that snake charming is illegal in India (India Wildlife Act) and has been for a number of years, although snake charmers do still exist and are now an ‘elusive’ sight. But the myth still exists and something similar is the case with the agile projects and the myths surrounding them.


If you take a look at the the annual state of agile surveys for last few years, they have been throwing similar results wrt 'Concerns' about Agile (read as Myths – see below Reference1), reflecting the dismal failure of the agile enthusiasts to be unable to bust the folk tales surrounding the agile projects delivery. This post hopes to therefore Smash the Top 5 agile project myths (popular faolke tales), with a pinch of sugar/salt (take your pick) for added flavour.


Source: Reference 1

Myth1– Agile projects do No Planning

The traditional projects have a Big plan upfront, and planning is highly visible, with a complete plethora of activities, draining the energy for a couple of weeks\months, and resulting in a sometimes scary GANTT chart.

But Agile projects instead focus on Continuous planning, and planning is therefore invisible!
Well you may ask how exactly that is achieved.  The answer lies in the 5 levels of agile planning (at multiple levels) which includes the following -
1.       Product vision plan
2.       Product roadmap plan
3.       Release plan
4.       Iteration (Sprint) plan
5.       Daily plan



Source: Reference 2
These 5 levels of continuous planning allows the agile projects to do continuous risk identification, assessment, and risk burn down via the daily scrum / scrum of scrums among others. The agile project teams are able to visualize these risks using the risk burn down charts, and able to highlight to the stakeholders about the potential upcoming pitfalls.

Myth 2 – Agile projects are Not Predictable and lack Transparency

The traditional projects typically provide an amazingly detailed Big GREEN cover report, with deep RED inside (aka. The Watermelon Report) for those who dare to dig deeper into a project health and find the darker side of reality.

But Agile projects provide Big Visible Dashboards on a real-time basis, which are visible to anyone who cares to look. The charts could include BIG Visible Burn Down charts, Release Burn up charts - showing possibilities of current state and the future trends, allowing trade off decisions to be made early in the project lifecycle. For teams looking at continuous improvements, the CFD (cumulative flow diagram) and other technical metrics indicating the project health and quality indicators complete the project dashboard, thus providing complete transparency and predictability.



Myth 3 –  Agile projects have No Architecture and lack design

The traditional projects typically follow a Big Design Upfront model (BDUF) resulting in the creation of Big Balls of Mud (BBM) and extremely high maintainability costs, primarily due to the high cost of change inherent in the muddy architecture.

But Agile projects tend to let the architecture evolve and follow the emergent design model. Since architecture is indeed the ‘hard to change stuff’, agile projects tend to have as little of that stuff, and take guidance from the enterprise architecture policies and the application architecture constraints.  The design spectrum diagram below highlights the BDUF to cowboy hacking approach and the agile projects fall in the middle.



Source: Reference3

The Ambysoft surveys indicate that 77% agile projects did perform high level initial architecture envisioning and are focussed on reducing technical debt more mercilessly, using the engineering practices like TDD, continuous refactoring and harvesting patterns for reuse.

Myth 4 –  Agile projects have No Documentation

The traditional projects produce Big Bulky Documentation (BBD) for every stage in the software life cycle, most of which is internal and tends to get stale quickly, smelling of wasted time and efforts.

But Agile projects tend to write just enough documentation which is fit for the purpose for the team/project needs. The agile documentation could take many forms and occur at multiple stages in the project lifecycle. The collaborative approach of the agile teams includes using - wiki’s /word doc / simple sticky notes/ big physical boards – to communicate and document lightly the project story including the technical design and requirements elicitation discussions.



Source: Reference 4


Myth 5 –  Agile projects have No engineering discipline

The traditional projects, which produce big balls of mud, have a tendency to end up forcing the technical excellence as a post release activity (“let’s clean up the code now that we have released to production” – is a common pattern).

But Agile projects always pay continuous attention to technical excellence, since agile teams know that a good design enhances agility and helps in the longer term maintenance. The agile teams accept change and have much simpler design thanks to the engineering practices, like following team coding standards, having collective code ownership, writing unit tests, practising continuous Integration and doing pair programming, while following test driven development.


Source: Reference 5

The Ambysoft surveys clearly indicate that the agile teams follow high engineering discipline, since     - 72 % - write unit tests, 55% have coding standards, 58% do CI,  47% do refactoring,  38% do TDD


....and so the search continues for the elusive snake charmer. Let me know if you have seen one recently...

References:
  1. 8th Annual State of Agile Survey
  2. Mike Cohn, Agile Estimating and Planning, Informit, 2009
  3. IBM Evolutionary Architecture and emergent design
  4. Agile Modelling
  5. Agilitrix
  6. AmbySoft Surveys
  7. Photo credit




Sunday, June 1, 2014

Mr. Product Manager: Are you ready for the brave new Agile world ?

This was an interesting question, which got me thinking to rant out on the state of product managers in the Scrum India meetup in 2011.

The fact is that after couple of years later, I still see that the product management is not ready and not ready to embrace the new world. So here's my wake up call again for them (from my archives) and possibly make atleast some of them embrace the new agile world now. You can hear my rant (pecha kucha style) in the video below. Feel free to drop me a note on your experiences.

Thursday, May 22, 2014

Agile Balanced Scorecard - Does it exist ?

It is indeed a difficult question to answer!  The "Agile" Balanced Scorecard may or may not exist today (the literature published is pretty scant on this), but if you are looking for developing this scorecard or modifying your existing Balanced Scorecard for your organization, then you may want to watch my video below in the Agile India Kerala 2013 conference titled - Balanced Scorecard for the Agile Enterprise

Hope you enjoy the video, and leave me any feedback \ comments.




ShareThis