Wednesday, September 18, 2013

Sharpen the Saw

Last week I had the opportunity to meet face to face with a group of colleagues from around the world, after a period of working together as a virtual team. I had the privilege to share some ideas I learned in the past few years. During my preparation I noticed some interesting overlaps and touch-points between these ideas. Here is a sketch these relationships between ideas, using Stephen Covey's 7 Habits wheel diagram as an underlying structure, while other books, concepts and disciplines as elaborate and enrich certain parts of it.
Stephan Covey's 7 Habits mapped to other, overlapping ideas
Covey's 7 Habits, and Friends

Here is the textual version:

1. Be Proactive


The first habit is all about learning to choose your reactions overcoming automatic patterns of behaviors based on emotional triggers. I think Christopher Avery did a great job modeling our typical emotional transitions when we deal with problems with his "Responsibility Process". 

2. Begin with the End in Mind

Covey's most morbid habit urges us to explicitly craft our own personal mission statement. We have one life, make it count. Well, having one life is sometimes used to justify some questionable actions (YOLO), but lets say the message is - make your life matter, don't waste it watching TV. Memento Mori rather than Carpe Diem.
Having read "Drive" by Dan Pink, it seems there's a virtuous cycle at play - tuning to a purpose in what you do, kindles your intrinsic motivation, making you more engaged and therefore likely to succeed.


3. Put First Things First

Covey's quadrants, categorizing tasks on dimensions of importance and urgency have been a corner-stone to any time management system. Notable in that area:


4. Think Win-Win + 5. Seek First to Understand, Then to Be Understood

Both relate to NonViolent Communication: seeking first to understand is all about emphatic listening, while thinking win-win could be thought of as aimed to address the needs of both parties assuming abundance rather than regard realty as a zero-sum-game (in which for me to win you'll just have to lose).

6. Synergize

A Hyper-Performing Team is a whole, being more that the sum-of-its-parts. To boost your team coaching skills, here are quite a few good sources of inspiration:



7. Sharpen the Saw 

This diagram and blog post is a result and a part of an ongoing, continuous search for new ideas and deeper understanding.




I suppose this may be over simplistic, and based only on some of the things I personally encountered so far. How would you improve it? What are you missing here?

Update: I started A post series introducing Covey's 7 Habits.
  

Thursday, August 29, 2013

Image Formats: a Quick Guide for the Perplexed


From time to time I find myself explaining the differences between some of the common image formats, and when you'd better use each. I thought it would be useful to post about it, especially since I'm sure I'm going to learn something new in the process.

Raster vs Vector

Raster and Vector images: zoom in
Most commonly used are Raster image formats, such as bitmap, jpeg, gif and png. Raster means, there are pixels arranged in a grid which makes sense because most if not all display devices are eventually made of grids of pixels. However, Vector formats keep the image represented as geometric shapes, rendering to pixels only when actually displaying. This way, there's no low resolution problems. Think of flash graphics, or PowerPoint, or PDF (when not made of a scanned document) - you can zoom in as much as you want, and the curves remain sharp. These formats are often used for print, by designers, CAD tools, games, etc.

So lets focus on the raster image formats.

Bitmap (.bmp)

Bitmap is as simple as they come - uncompressed. The data for each pixel is stored in a pixel array, according to the defined image color depth (from 1-bit per pixel which is just black and white to 32-bit which supports over 4 billion colors, and even transparency information). Being that simple, almost anything can display it, so that's the up side. File size is another matter - bitmaps can get huge. Ever got a 5MB email just because someone dumped a screenshot in it?
Usually bitmaps don't contain transparency data, and even when they do, most applications don't support displaying it properly - so for most practical means, it's fair to say bitmaps don't support transparency.

Graphic Interchange Format (.gif)

GIFs are limited to 256 colors (or 255 + transparent pixels). The image data is compressed in a loss-less algorithm - meaning the quality of the image isn't damaged due to the compression. If the original image contained more colors, the first conversion to GIF will reduce the quality, of course (this effect is called "posterization").
These attributes make GIF a light weight and widely supported image type that works well for simple images, logos, diagrams, cartoon style drawings, etc - but not for photos or graphics rich with gradients.
Oh, and GIF can be animated, too.

Portable Network Graphics (.png)

GIF was patent protected, and legal disputes triggered the development of PNG as an alternative. And a good thing too - it supports rich color, and a full alpha channel - and typically compress even better than GIFs unless the image is very small. Wait... what's an alpha channel? Well, remember how GIF can have transparent pixels? In PNG, each pixel can have any level of transparency, which is great for combining images. However, PNG doesn't support animation.
Note that while it can support photos, it's compression works best for images with large blocks of solid color, similar to GIF.

JPEG (.jpg, .jpeg)

Designed for photos, this is the default standard file type most digital cameras produce. Photos are assumed to have some unstructured noise in them, and typically low contrast color transitions. These attributes allow using compression which is lossy - when you save an image as a JPEG, some noise may be added to it. The more noise you are willing to take, the stronger compression you can have.
The compression uses the same math that's in MP3 - discrete cosine transform (DCT), which is similar to Fourier transform. In a nutshell, the image is broken to 8x8 pixel squares, and each is represented as a combination of frequencies (or cosines). The amount of noise can be controlled for trade-offs of size versus quality.  
No transparency or animation.

The Cheat Sheet

Format Extension Best used for... Compression Transparency Animation
Bitmap .bmp Anything if you don't care about size none none none
GIF .gif Simple graphics, logo, icon, silly cats, limited colors lossless boolean yes!
PNG .png Most graphics lossless full none
JPEG .jpg Photos lossy (noisy) none none

Useful Links

To learn more, here's a good start: Image file formats (wikipedia)
Cool free service for image size optimization: kraken.io/web-interface

Tuesday, July 30, 2013

Collaborative office space

In preparation for some changes in our office layout, I was interested to do a little research on various ideas on the topic.

Caves and Common

In Agile Software Development (2nd edition) chapter 3 (and 3.1), Alistair Cockburn describes a possible office layout - with the team room (programming room) having a central cluster of tables where pairs sit facing the center, with some more private areas on the side of the room. This is known as "Caves and Common". There's research backing this up in the book, rephrasing the Allen Curve (communication exponentially drops with distance) as the "school bus rule".
That's the typical agile team room (blogged by Martin Fowler).
This is sometimes also called a War Room.
Another blog that argues for this setup with lots of references: The Ultimate Software Development Office Layout

Inward facing U-Shape

Another setup. Well, it probably goes with an open space for multiple teams. Cool idea of joining a whiteboard and special projector. Each team member can share their screens on the team board with a single button press.


U-Pod

Martin Fowler blogged about another option of a U shaped space, where people face out side. While it is easier to roll over towards each other, it is harder to find a place for a team board. And avoid the corners, bad for pairing.
This is sometimes referred to as "The Bullpen".


Half Height Cubicles

Richard Cheng recommends half height cubicles. His slides show some additional options, considerations and aspects (I think he's missing the point of avoiding the corner made by Martin Fowler). In context of his slideshare, I think this is evangelized as an improvement to the previous single person cubicles. 

The Bionic Office

Right... Cool, perfect for focus and personal effectiveness, but totally optimized for working alone, inhibiting communication and collaboration.
After the first wow effect, agile teams optimize for team results rather than individual performance.

Overviews

Dafydd Rees (the programmer) shares his experience with different arrangements covering more or less similar setups.
InfoQ cites Mike Cohn on Workspaces for Effective Agility - not so much about the physical layout, but some aspects to take care of.

My Conclusion

There are many variants, and some would be more effective than others depending on context, individuals, team size, company culture and office constraints. You'd want to consider:
  • Ease of communication
  • Ability to focus (reduce distractions)
  • Team ownership of the space (use of information radiators)
  • Adaptability when needs change
Oh, and don't sit in an L shaped corner if you're ever going to pair...

What's your experience with various office setups?  

Update:
A short clip case studying the Stanford design school, and their concept of the impact of the work environment on learning, engagement and teamwork.

Wednesday, July 10, 2013

Can you copy a culture? The NUMMI story

In 2010 I came across a brilliant radio show of This American Life - episode 403: NUMMI.
It tells a story that's taught in business schools, of a joint venture by General Motors and Toyota - in 1984 these competitors decided to build cars together, each for their own reasons. NUMMI is the name of the factory, it stands for "New United Motor Manufacturing Inc".



Act one tells the miraculous story of this GM factory in California - it was considered to have the worst work force, always striking, struggling against management, with no work discipline what-so-ever: drinking on the job, drugs, gambling. Then, Toyota stepped in and transformed this plant into a Japanese style plant, using the Toyota Production System (TPS) principles. The real miracle is that it worked - and that 85% of the work force was the same. This a truly inspiring story of human potential and how systems can be designed to bring the best or worst of of people.

Act two is a different story. GM was for decades losing ground to Toyota. It had every reason to want to learn whatever they could from NUMMI and improve their quality across their other plants. This didn't happen - at least not fast enough. In 2010 GM went bankrupt. This part reveals some of the reasons and dynamics that led to the tragic outcome.

I recommend investing an hour to listen to it. Act one tells you how to get it right, and it is really emotionally moving - the interviews with employees who went through the transition reveal NUMMI deeply changed the lives of many. It also describes some of the key aspects of the TPS and how it was successfully brought to the US.  Act two  is a handbook for nearly everything that can go wrong when you try to change an enterprise.

What I like about this radio show is that it demonstrates so well that the Toyota Production System is not a "business process", or "best practice" you can see and replicate. It is a culture, with it's own values. It is not something you can just perform, it is rather something you can choose to become.

Agile transformation often suffer from similar difficulties - you can follow the rituals, but if you don't get the underlying values and mindset, you just end up creating "cargo cults", or simply resistance.


I'd like to thank Elliot Holar who shared this episode with me soon after it was aired - aside from this specific episode, I became quite a fan of This American Life. They rock. Thanks, e.


Tuesday, June 25, 2013

Absolute Teamwork

I've been interviewing a number of candidates for our team recently. Almost every CV contains some pseudo-mandatory clause about great teamwork skills. I was wondering what teamwork meant for these people. So I asked. Too often, it doesn't sound much like a team.

My reference for the concept "teamwork" in the past year and a half is a team called "the Smurfs".  I was fortunate to have served as their scrum master for a few months when the team was forming after joining two teams together, and held a management role throughout the long project.

Things I love about Smurfs

Helpfulness

The team has a distinct culture of asking each other for help and being immediately available to provide help. It's essential for doing peer code reviews, for getting new team members on board and for knowledge sharing. A special role of an "on duty smurf", a fire fighter dealing with customer issues and test failures for a whole sprint, allowing the rest more focus, is  unlikely to have been possible without this helpful spirit. 

Respect

The team continuously demonstrated respect for each other. One aspect of it is that being passionate about the work led to passionate discussions. These were not ego driven, "my idea is better than yours" type of discussions, but rather real exchange that actually included listening. I could see it in technical design discussions, and in retrospectives alike.

Experimental Approach

A few examples:

  • When I stepped down from being a scrum master, the team tried to distribute the SM role between team members despite the consistently ominous warnings by non other than Jim "Cope" Coplein. It was a grand failure, many lessons learned, and a quick and successful recovery by identifying their next SM
  • The team kept trying out different new tools to support it's work - dashboards, testing techniques, clever code coverage measurements, experimental debugging techniques 
  • Being in the context of an enterprise level R&D, other teams benefited from the team's knack for improving tooling - many improvements to the main issue tracking system were made based on their feedback, and a whole new tool was introduced that supports code reviews, especially for distributed teams
  • A rich physical task-board (see prezi!) with many cool and useful ideas  
  • Convinced the office management to bring down a wall for us, to have proper space for a daily standaup
  • An evolutionary approach to discover how to deal with different types of work, specifically customer defects (described in my talk I gave at the Agile Practitioners 2013 conference)
  • Acceptance Test Driven Development (ATDD) - the whole way we define our stories was modified based on ideas a few team members brought from an Agile-Testing workshop 
  • Working together - swarming on work, by priority, was yet another experiment early on, that turned into a habit


It all boils down to safety and trust. Without a sense of being trusted, people are less likely to help or ask for help, and to experiment individually and as a team.

Last, but not least: fantastic results!

Besides the dramatic improvement in the response time to customer issues, the improved test coverage (quantity and quality increased), and quality - a new and exciting set of features, nicely balancing highly sophisticated capabilities with a rather straight forward user experience.

Thanks

I'd like to acknowledge and thank the individuals who demonstrated to me what's teamwork.
The Smurfs team in this project are (in alphabetical order):
Dganit Keidar, Gad Salner, Ichai Luzon, Idan Zohar, Marwan Jaber, Michael Adada, Oded Nehama, Ofir Laviad, Ortal Balter, Rosalind Eidelheit and Yaniv Mualem.

Strongly affiliated and supportive of this team, locally: Assaf Appel who served as the Product Owner, Gadi Benedek, Asaf Broide and Lior Yaffe, together with a good number of people from the administrative staff. From Germany, we enjoyed the further support and collaboration with Andreas Goermer and Oguzhan Oezkut. And speaking of safety and trust, there's a big doubt if things would look the same without Christian Gengenbach, our VP.

The Smurfs continue to their next project in a different format. I'm certain they won't settle for anything less.


Thursday, June 13, 2013

Re: Is it Safe to Fail?

Amr Elssamadisy (@samadisy) recently blogged, asking Is it Safe to Fail?
I strongly agree with his claim (and I paraphrase here) that the "skill of failing" is an essential factor in a team's ability to learn and improve. 
Interestingly, Amr identifies three categories in which this skill is cultivated: culture, individual human dynamics and agile practices:
  1. Leaders create a culture that rewards small failures and the successes that come after them. They celebrate the successes and failures and lead by example.
  2. Individuals understand that failure is a milestone the road to success. They have experienced it multiple times and are not intimidated by it.
  3. Teams use software development practices that make failure SAFE.
While Amr elaborates on the third category, of practices (such as TDD, TDR/BDD), I want to explore a few options on the first category. What could be the elements that support such a culture? It seems to me that the second category emerges out of the other two over time.

Cultivating a Learning Oriented Culture

How can leaders cultivate a learning oriented culture, one that expects such failures?
Here are a few concepts that with proper teaching, coaching and leading by example, can serve as foundations to such work environments.

Responsibility Process - out of the Blame Game

Christopher Avery (@christopheraver) and others developed the Responsibility Process. In a nutshell (seriously, I can go on for weeks about it), this is a psychological model about how human beings deal with problems. Being aware of it, one can acknowledge the tendency to react out of a blaming mindset, and choose to hold on until a better, more effective, state of mind is reached. The model describes a number of distinct mental states that are normal for humans to have, but might not be ideal to be in when trying to take action. Responsibility is the desired mental state - in which one has learning capacity, resourcefulness, eagerness, energy and courage.
The model is a powerful tool for self awareness and mastery, but better yet - it can be a great way for a team familiar with it to have a shared language to make working agreements that support learning, trust and safety.

Nonviolent Communication

NVC is the brain-child of psychologist Marshall B. Rosenberg. It is aimed to show an alternative for the highly judgmental and competitive education most of us had.

During Agile Israel 2013, Bob Marshall explained violence using the acronym FOGS.
Violence is using or triggering one of the following emotions in others, to make them act in a certain way:
  • Fear
  • Obligation
  • Guilt
  • Shame

With this definition in mind, consider that many processes are violent due to their implementation. Why should we care? It might be the wrong way to reach our goals, to meet our needs.
Bob went on to describe NVC as a 4-step process, with a pre-requisite of empathy which is essential for diffusing a conflict situation. Try to understand the other side in an explicit way (or fake it...). The next steps are:

  1. Observation - what are the facts
  2. Feelings "how did it make you feel?" 
  3. Needs - violence originates by needs not met. What needs that are not being met cause those feelings? (or needs that were met, for positive feelings)
  4. Request - "would you be willing to..?"

A First Glance Comparison of the Two

I thought of introducing The Core Protocols as another culture hacking approach, but it suddenly hit me how similar NVC and the Responsibility Process are. I'd like to dwell on it for a moment.

Violence in Rosenberg's world is basically all that the "non-responsible" positions of mind are made to deal with. These are all coping mechanisms against the abundance of violence others emit. But this is poor protection - the aggressive party gets to "win" by triggering Shame or Obligation, forcing someone to action with fear. However, a person reacting out of Responsibility can distinguish between the stimulus (observation) and her own emotional state (feelings) and confront her own wants (needs) before picking a response.
The key difference (based on my very limited knowledge of NVC) is that while Avery's Responsibility is more about one's own state of mind, NVC is about dealing with others while dealing with ones own state of mind and creating an environment that supports the other to reach a Responsible state of mind.

Wait - How does it Relate to Safety?

Assuming the similarities I find between NVC and Responsibility aren't too far off, introducing such concepts (teaching, coaching and continuous practice and demonstration) to any community would raise the levels of trust and safety, and therefore of healthy, effective, honest and open communication. Roughly I'd say Responsibility is a tool for the individual to be more resilient and brave (inherently safer) while NVC is designed to reduce the levels of violence, therefore making it safer.

Thanks, Amr, for raising the topic of safety as an important factor for effective teamwork. It is also an ethical issue - there's little joy at work if you don't feel safe. But if you had to choose between implementing processes and practices that might generate some safety versus changing the culture - what would be more effective and long lasting?

Update: Amr recommended this blog post explaining Tech Safety - I love the concept, though the focus on the word safety might create an impression that it is not about quality, joy and respect for people. It is.

The Joy of Social Networks

In my post about the Agile Israel 2013 conference I mentioned Bob Marshal's keynote, and his principle of "Joy for All". I wanted to link it somewhere, but couldn't find more. So I found myself having the following twitter conversation with him:
  1. Guy Nachimson
    Guy Nachimson ‏@guynachimson18 May

    Did you ever blog of your "joy for all" guiding principle? I can't find reference to it as such
  2. Bob MarshallBob Marshall ‏@flowchainsensei19 May
    I don’t think so, directly. You can find the roots of it in e.g. Rosenberg’s spirituality of NVC
  3. Guy NachimsonGuy Nachimson ‏@guynachimson19 May
    thx for the pointer. Not sure I relate to that as I did at , but I'll give it a shot
  4. Bob MarshallBob Marshall ‏@flowchainsensei19 May
    I’ll take it under advisement for a future blog post :)
    Expand

Guess what?
Today, Bob posted: Hyper-joyful, quoting Ackoff, Seligman, Deming and Rosenberg to support his debate with the prevailing assumption that work isn't supposed to be fun. It's a call for focusing on Joy at work rather than productivity. A joyful environment underlies hyper-productive teams.
Culture trumps Process, right?