Category Archives: development

New Article – Things Change (And So Should Processes)

I wrote an article for Better Software magazine for the July/August 2013 issue about innovation in processes. The PDF of the article is available here: Things Change (And So Should Processes) and you can download the entire magazine here: Better Software July/Aug 2013.

Many teams struggle when a process lets them down because their unique situation and mix of people, technology and target market don’t fit a generic process. It’s also surprising to find out how old many of the popular processes we are trying to follow are. The technology we are creating has changed a great deal since the 1990s, so why are we surprised when processes created in the ’90s let some teams down?

Instead of feeling guilty that they aren’t following the crowd and doing what the experts tell them to do, I encourage teams to take pride in their innovation not just in technology, but in how they create powerful processes for themselves.

Three Keys to Mobile Application Design – Part 4 Conclusion

In Part 1 of this series, we looked at mobility and app design. In Part 2, we looked at social aspects. In Part 3, we looked at gaming and entertainment features to consider with mobile app design. In Part 4, I conclude with some final thoughts, a simple example, and three people who inspire me.

Conclusion

What is it about some mobile applications that we use over and over, to the point of addiction? What is it about others that we seldom use? I’ve found that a mix of mobility features (and usability!), social features, and gaming/entertainment are some of the reasons why we keep coming back. We enjoy the experience of the application. It is easy to use and helps us solve problems or reach goals while we’re on the move. It helps us feel connected to our friends, family and coworkers, so we never feel alone. The app helps us quickly access information we need. It is entertaining, so we enjoy spending time in the application, and feel drawn to it when we’re away from it.

Our mobile devices have a lot of applications on them, so we have a huge amount of choice on where to spend out time. To keep people coming back to use your application, consider using the mix I’ve recommended above. To figure out that mix, make sure you observe people (but don’t creep them out!), ask questions, and spend time away from your desk in different contexts. As I mentioned in an earlier post, when I ride public transit, I feel like I’m surrounded by people using tablets with e-readers, people texting on mobile phones, or using social networking services and commenting about their trip. Others are watching TV shows or movies, or simply listening to music. When I’m in an airport, I jostle with others flocking to power stations prior to boarding the aircraft. In a restaurant or coffee shop, the people around me are staring into their screens. I observe what they are doing, but I take it a step further. If the moment is right, I strike up a conversation. Many people are happy to demonstrate their device and the programs they use, and tell you what they enjoy about them, and where they use them. As a designer (and tester), this kind of information is gold.

I also look for apps that demonstrate good mobile design, and look at what they have done well. One that has caught my eye in the enterprise space is Rypple, now owned by Salesforce. It’s a talent management app that has a mix of the three keys: mobility, social interactions and gaming/entertainment. It is easy to use anywhere, and has features to keep drawing you in. In the mass market, I look at popular games like Angry Birds, and social networking apps. What motivations to people have to use these apps? What do they do well? Conversely, what are people complaining about? Do they crash too much, or are they too slow?

Putting it All Together

Let’s try applying this thinking to a simple app. Imagine you are designing an app that provides a listing and related information for local coffee shops. Here is a brief listing of features that can help tie together a good user experience that will keep people coming back for more:

1. Mobility:

  • map integration
  • information: ratings, etc

2. Social:

  • camera and photo integration
  • social media support
  • people need to take pictures of their food and drinks so they can post them and chat about the experience with their friends!

3. Gamification:

  • unlock premium content after usage – ie. after visiting all the shops listed in the app, or for multiple visits
  • look at coupon or other deals to integrate with after app usage, or other ways to co-ordinate with local businesses for cross-promotion

A word of caution: be sure to implement these features in a way that will resonate with your user community. Make sure your mobility features work well, don’t mislead your user, and don’t have irritating defaults, such as always defaulting to their home address, even when they are traveling. With social, don’t just copy what is out there and popular and think people will like it. Take time to model the existing social connections your app users will have, and make sure your app plugs into and enhances that. With gamification and entertainment, don’t put in childish rewards for an enterprise app, or app aimed for adults, or people will just think it is lame. Again, model the space and find out intrinsic motivations, and take the context and users into account.

Good Design References

These are some abstract ideas to help you model and create your app. For implementation ideas, I look to people who specialize in mobility and are pushing the technology. Here are some people I look to for help, innovation and inspiration:

Luke Wroblewski
Brad Frost
Josh Clark

The always excellent Smashing Magazine has a fabulous piece on gamification: Gamification and UX: Where Users Win or Lose with tips on where to use gamification, and where not to use it. Smashing Mag also has a lot of great mobile design information here: The Elements Of The Mobile User Experience .

I hope you find these ideas useful as you design your own mobile apps, or work to help others. Happy app designing!

Three Keys to Mobile Application Design – Part 3 Gaming and Entertainment

In Part 1 of this series, we looked at mobility and app design. In Part 2, we looked at social aspects. In Part 3, we will look at gaming and entertainment features to consider with mobile app design.

Gaming and Entertainment

We spend an enormous amount of time playing games or using entertainment apps and services on our mobile devices. When I ride my local commuter train, I see people using e-readers on tablets all around me. I also notice people playing games on their smartphones. When I am on an airplane, there are people all around me with tablets or smartphones reading, playing games, watching TV shows or movies, or simply listening to music.

Entertainment and games tap into a different part of our brains than other activities. We enjoy them, and we find them addictive. They appeal to our emotions: a TV show or movie give us a brief respite from stresses in life. A book requires our imagination, but it too helps provide a break and triggers creative thoughts as our brains fill in the visuals of the story for us.

With games, we feel challenged and a sense of accomplishment when we complete a level or finish a quest. We will spend hours doing repetitive actions in a game so we can get small rewards within it. In a social application, we tolerate repetitive tasks, such as uploading all of our vacation photos, because the intrinsic value overcomes our feelings of boredom or frustration. We know that our friends and family will enjoy seeing them (as will we) and that they will spark comments and conversations.

Contrast this with tasks that we encounter at work. We often procrastinate over repetitive or tasks we find boring, because there is little motivation for us, or the reward won’t be realized in the short term. Application designers and process wonks have noticed this contrast, and have begun to apply game-like processes to applications. There is enormous productivity in gaming and entertainment applications, so how do we tap into that for our corporate apps?

One movement that has become popular lately is called Gamification. Gamification involves imposing game-like structures on work tasks to help make work more entertaining, and help workers become more productive. Another concept is game theory which uses mathematical models to study decision making. Understanding both concepts can help us as we design apps.

Here are a couple of concepts to think about when designing your mobile app:

  • Gamification (provide incentives to use the app, or to take some of the tedium out of repetitive tasks)
  • Interactivity, media, other features of entertainment (tap into emotions)

Gamification can be as simple as providing rewards in an application after you complete a certain number of repetitive tasks. It might be a visual representation, such as note that says: “good job” or a graphic equivalent of a gold star. More sophisticated implementations may unlock new features or content in the application for you, or provide a media break, such as a short video that is entertaining, but provides information that users will find useful. When thinking of a game in this context, think of games that have quests and achievements, where players repeat tasks to score points, or acquire goods or credibility within the game. Some app developers are even looking at enormously popular social games and modeling their entire workflow in a similar manner.

Interactivity, media, and other forms of entertainment are features that allow us to tap into people’s emotions. We like nice colors, sounds and things that move. Features that stimulate our senses (see, hear, touch, smell, taste) tend to evoke emotions. (I haven’t figured out how to appeal to taste and smell with apps, at least not yet. 🙂 ) A clean design with great graphics and appealing colors will evoke an emotion. An app that provides tactile feedback to help train you to work with it in certain ways helps us understand concepts more quickly, and reinforces emotional responses. A bit of video or sound can go a long way. On one app I worked on, we replaced long paragraphs of text with short videos where a professional speaker provided the same content in an entertaining way. They were easier to consume and understand, and fit the devices better since they reduced scrolling and eye fatigue that we experienced with the wall of text effect.

The devices themselves provide a lot of affordances for gaming and entertainment:

  • Game-specific animation and graphics libraries
  • Media: camera, video and sound recording and playback
  • Rich graphics support with high resolution screens
  • Networking to connect to information and different people
  • Natural User Interfaces to support touching and gesturing
  • Movement sensors to support different kinds of inputs or control

Gamification of tasks, and adding entertainment features can help with serious applications as well. One aspect is to reward the completion mentality. When I do chores around the house, or work on my car, I sit back and admire my work when I’m finished, and bask in the sense of satisfaction for a job well done. This is more difficult with knowledge work. It is virtual, so I can’t sit there and look at the job I completed. We can put these affordances in our apps. Furthermore, if there is a sense of reaching a level and getting some sort of completion notification, I may stick with a task and finish it, rather than procrastinate or engage in distracting activities. A user might just spend a few more minutes with your app if they feel they can get some sort of reward for completing a level or a task.

I also like gamification and entertainment features to help inject some variation to keep people interested. lately, I’ve been advising a startup that is developing a mission-critical app. Gamification is incredibly important here because the information and activities in the app are very important, and the people using the app need to be brain-engaged and paying careful attention, or learning something important. If the same old same old pops up in the app all the time, people will just tune it out and click to dismiss, much like we do with terms of service or end user license agreements. We do what we can to dismiss it and do something else. (I remember a popular personal firewall program that popped up with so many messages, people would just turn it off.) Variation and interaction is important to hold our attention, and so that people with different learning styles can synthesize and retain information.

Gamification and entertainment also entice people to use our apps. Many people have over 100 apps on their smartphones or tablets. The difference between them using our app or a competitor’s app can come down to how well we entice them to use our app. If there is little to entertain them, there are no rewards, or no sense of completion when working through the app, why would they swipe three screens over to start our app, when they can use a similar app that is on their home screen?

Charge Extra for Cheating

There are also revenue opportunities to upsell premium content. One app that I designed unlocked premium content at various levels of completion. As a user worked their way through a workflow, premium subject matter expert content was made available to them. After so many steps of activities or completion, consider providing something to reward the users. However, I advise allowing people to cheat. Let them unlock the premium content without going through all the steps, but for a premium price. That appeals to our laziness, and instant gratification culture, and you can charge a lot more money for these sorts of features than you can with apps themselves. Just look at popular game platforms. They have enormous markets related to buying things that are unrelated to the game or quest. You can buy a shield, or different armor for your character, or pets, and other status items just like in real life. A user might only be willing to pay $0.99 for a game (or get a free version), but they might spend $20.00 accessorizing, or for getting other premium content. Look at how popular gaming platforms have their own marketplaces, and the kinds of things they sell. These items appeal to status (I can brag socially about it, or have status over other players because I am unique), and to intrinsic motivations that users may put more of a dollar value on than our actual app. There are even eBay and online classified services that allow you to purchase virtual currency, or a player that is at a higher level of game play that already has worked through many levels within the game. Some people will pay a premium for shortcuts, so tap into that.

The key point here is that we have a lot of choices in the apps we use, so we need to put in mechanisms into our apps that draw people back into them. If we don’t provide incentives to use the app, they may go to an app that is more entertaining and rewards them for repetitive tasks, or is simply more enjoyable to use. Furthermore, if app usage and the information in the app is important, you don’t want them to tune it out. If you want people to keep going back and using your app more and more, you will need to figure out how to tap into gaming and entertainment.

Stay tuned for the conclusion of this series next week.

Three Keys to Mobile Application Design Part 2 – Social Connections

In Part 1 of this series, we looked at mobility and app design. In Part 2, we look at some social aspects to consider with mobile app design.

Social Connections

Mobile devices provide an interface to the internet, but more specifically, to our relationships. Coworkers can contact us when we’re on the move, and we can stay in near-constant contact with friends and family. Social connections help us keep in touch, and often provide the quickest, most up-to-date information on current events or developments in our communities.

Social connections are important, and can be powerful tools, even in enterprise or business apps. We’ve all heard about the massive growth of social applications in the consumer market, but social connections are important for productivity as well. Our professional social circles provide quick access to information to help solive problems, discover important news, or for recommendations on products and services. Social connections also create cohesion and improve our relationships at work in ways that dress up days and team building activities fail to do.

Here is an example: a few years ago, I was working with my friend Ken March. We were getting tired of our individual music libraries that we were listening to, so we decided to share our music with each other. We discovered others who had also shared music in the office, and we expanded our listening. We started chatting about music when we ran into each other in the office, and teasing each other about guilty pleasure tastes. Ken decided to set up DJ software so we could create playlists, and he also set up an IRC (internet relay chat) channel so we could instant message each other about the music we were listening to. With IRC, you can type in short text messages either to the entire group who subscribe to the channel, to one other person, or a sub-group, depending on how private or public your communication needs to be.

Ken expanded the application so we could create playlists and control the DJ software using commands in IRC. We could also use the Unix “say” command to broadcast messages using Text To Speech. Ken also added in extra hidden commands that allowed you to temporarily block a certain genre of music if you thought it was getting over played. If someone made a request and someone else had blocked it, the system would block it and provide humorous messages. We had a lot of fun with the system but soon learned it was a great channel for work or technical questions.

It turned out that the IRC chats were rarely about music – we found it to be a great channel to talk about work. We could ask for help, or keep people apprised of what we were doing on other projects. Instead of walking over and interrupting someone who was busy, the messages could be ignored and then read after a period of focused concentration. Once you were no longer busy, you’d catch up and answer the questions, and set up any follow-up meetings or face-to-face meetings.

The group expanded from the IRC server to getting together for lunches. We shared ideas about work, and learned about each other’s families and backgrounds. When one team member’s wife became ill, we were able to offer them support and help them when they were telecommuting. One team member and I found out we were both interested in game theory and estimation with uncertainty factors, so we spent some time on our own collaborating. We all ended up contributing to each other’s work in various ways, and we all enjoyed a boost in productivity.

Something appealed to us in that relationship that we developed. It touched an intrinsic sense of belonging, of collaborating and building something worthwhile. If one of us worked over time, it could feel incredibly lonely without our work buddies there with us virtually. Even worse, you lost contact to quick and easy information that could help you solve problems more quickly. Eventually, most of us moved on to other projects and other companies, but we all remained friends. We all miss that simple social program that helped us communicate, keep in contact and help each other out.

What were the keys for this simple application’s success?
1. It was entertaining
We could listen to an interesting variety music which helped make our day more enjoyable. The group input into the music selections kept them interesting for us. Some people had a great sense of humour and it was enjoyable to read their posts to the group.
2. It was social
We felt like we were part of a group, and we got to know each other better, which helped us work better. We were also able to share information at a much deeper and richer level than the brief daily standups we saw each other in.
3. It was fun
Once in a while over the course of the day, would also share funny cartoons, or youtube videos once in a while to add some levity. Once we got to know each other better, we would tease each other a bit, or send a silly broadcast message to try to cheer up someone who was feeling down that day.
4. It helped us solve problems
Each person using the program had a different background and expertise, and they had different experiences and access to information within the company. Many problems could be quickly solved with a message on our music channel.

Easy access to social relationships are an integral aspect of mobile devices and apps. When we’re on the move, we’re often alone, and these devices provide access to people so we have company. If we’re alone in a strange city, we can connect to our friends and loved ones and feel a sense of belonging, safety and calm.
My wife Elizabeth says that social networks seem to be full of the following:

  • Sharing our current thoughts and location with our network
  • Bragging and complaining

I’d also throw in pictures of cats and food to the mix. But it isn’t all frivolous; I enjoy finding out where my friends are at, and seeing pictures of their holidays. If a friend complains about a company that did shoddy work on their vehicle, I stay away from it. If another friend recommends a home handiman service, I contact them when I need work done on my place. This mitigates the risk of getting ripped off, or shoddy work.

In the work place, sharing ideas can be powerful, especially with knowledge workers. I have been working on a new product design, and I’ve been struggling with one aspect of the technical implementation. A quick message on a social networking channel resulted in 4 possible solutions from a programmer friend. We also brag about accomplishments, giving shout-outs or kudos to other team members who we think have done a good job, or have simply shipped something after a long release cycle. We also complain about vapor-ware technology, vendor relationships that have gone wrong, or tools that don’t provide value. This is valuable information to utilize as we work on and lead our own projects.

Social connections help us feel motivated when we are on the move, and they can be a tremendous support when we need motivation, or a quick answer to a question or a problem. They are a great fit with mobile technology, since they help us connect to people, knowledge and allow us to share experiences from virtually anywhere.

Stay tuned for Part 3 of 4 of this series.

Three Keys to Mobile Application Design Part 1 – Mobility

While many of you know me for my testing work, I also do product management work, including business analysis and technical design for applications. I help clarify a vague product idea into something with a clear vision that is concrete enough for programmers and designers to help implement, with the right mix of features to satisfy and delight our end users. Here are some lessons I’ve learned doing this work in the mobile space.

When you start designing a new mobile application, you are probably like me, and refer to applications that are familiar. You look at past projects, at programs you enjoy using, or have impressed you. If you are new to designing mobile applications, that often means you will look at web apps and PC apps first, because that is what you are most familiar with. Then you pull out your smartphone, and look at the apps you like and use the most there. That’s exactly what I did when I started out, and while I felt like I had adjusted to a new paradigm (smaller screens, less powerful devices, different network technology, etc.) I felt like something was missing. I couldn’t quite put my finger on what was different, but the apps I use on my mobile devices, and the apps I helped create demonstrated it to me. We are going through a major shift in technology, and the software we use is moving toward a combination of mobility, social connections, and gaming and entertainment.

In this four part blog series, we will look at each of these areas of consideration when designing mobile applications.

Mobility Features

If you are new to mobile app development and use web and PC apps as your guide, you might overlook something important. Worse still, if you are used to an enterprise application development, stakeholders often just direct us create a subset of an existing web or PC app for mobile devices. While that is an aspect to consider with mobile apps due to less screen real-estate, and their one screen at a time focus, we often overlook the most obvious, and one of the most compelling characteristics of mobile devices: mobility itself.

When we are out and about, away from our desks, we don’t have the luxury of comfort and time. Think about it for a moment: these devices are used in all weather, in different locations (outdoors, in buildings) with different network strengths, while people are moving (walking, jogging, cycling, in a vehicle, flying, on public transportaion.) Imagine the difference between needing access to information or using an app on a warm sunny day in a beautiful park, vs. using it in a severe rain storm, outside and you forgot your umbrella. What effect might the different lighting conditions have on your screen design colors? Will their wireless services work better in good weather or poor? What impact might the weather have on the emotions of the user, and how much of that will be projected on how well our application performs? I’d wager that the user who is miserable in the rain will have much less patience with usability issues, or anything that slows them down with our app than the one who is relaxing in the park.

Context, and how the devices and applications are used on the move are important to take into account. Mobile devices represent a blurring of physical (hardware) and the virtual (software and services). When I’m designing an app for the web, or for PCs, I don’t think of the hardware that much other than to consider things like processing and memory. With mobile devices, we can tap into physical features of the devices to help create a different user experience that fits mobility better.

Here are some areas to think about when designing for mobility:

  1. Take advantage of mobile features
  2. Ensure your app is mobile-friendly

Mobile Features

When I’m on the move, I need my mobile device and apps to provide the following:

  • Access to information on the web (look something up, settle a friendly dispute)
  • Search for services nearby (for something to do)
  • Map and location services (so I can figure out where I am, and how to get to my destination)
  • Contact with others who aren’t with me (to communicate, co-ordinate and keep in touch)
  • Entertainment apps (play a game, watch a video or listen to music to help pass the time when I’m stuck somewhere or waiting)
  • Productivity (I’m here, I may as well see what work I can get done)
  • Utilize movement sensors (to help with most of the above)

Mobile-Friendly Design Considerations

Using a mobile device when you’re on the move has special challenges. It’s harder to see the screens, more difficult to type and enter information, and people often need to do something quickly. While you’re designing an app, here are some considerations to make your app more user-friendly for people on the move. Make sure you test your app out under different conditions while on the move, in different lighting, different weather, with different levels of urgency.

  • short workflows (don’t force people to spend a lot of time trying to reach a goal or get something done)
  • easy inputs and interaction (make things easy to see, and simple to interact with)
  • reduce typing (it can be painful to enter in too much text, so look for ways to reduce inputs)
  • colors that work in different lighting (watch out for very bright or very dark colors that could get washed out)
  • a clean, focused design (avoid bloat – keep it simple so people can work with the app easily) See: iOS Human Interface Guidelines for more.
  • great network performance on wifi and wireless broadband, with different network speeds, strengths (when I am away from home or the office, I have to depend on different networks, and I will move between them)

An app that takes advantage of mobility features will fit into the contexts that the devices are used in. An app that is just a stripped down web or PC app probably won’t. Remember: if the app isn’t easy to use on the move, it won’t get used.

Still puzzled? Spend time observing people around you, and if you can, spend time with your target users. You’ll be surprised at when and where they depend on mobile devices, and at what they enjoy, and what makes them frustrated.

(Thanks to my friend and mobile developer Jeremy Gale for helping me brainstorm mobile features for this post.)

Note: I first introduced some of these ideas in an interview with Heather Shanholtzer for Techwell in 2011: The Future is Mobile Technology.

Software Development Process Fusion – Part 1

I first brought this idea up publicly last year at the Agile Vancouver conference with a promise that I would share more of my thoughts. What follows is an attempt to fulfill that promise. This has turned out to be rather long, so it will appear as a blog series.

I grew up in an environment with a lot of music. My grandfather had a rare mastery over a wide variety of musical instruments, and family gatherings were full of singing and impromptu jams. At home, my father had a very eclectic taste in music, and I had a steady diet of gospel, classical, big band, bluegrass, traditional German and Celtic music. One of my babysitters had spent most of her life in India, and introduced me to all kinds of wonderful forms of Indian classical music when I was very small. I was exposed to popular music on the radio, and I took part in various music groups in school bands, choirs and at church. By the time I was in high school, I had a wide exposure to many different kinds of music, and enjoyed any sort of music that moved me, no matter what the style. I could enjoy a common thread in music that was composed and performed in a way that appealed to me, even if the styles were very different. In some cases, my classical friends couldn’t stand some of the popular music I enjoyed, and some of my gospel music friends would refuse to listen to secular music. Enjoying a wide variety of music styles could be controversial, depending on who I was talking to.

In the late 80s, I was in a choir that was in a competition in Toronto. I was billeted with a family who introduced me to a Canadian band called “Manteca.” My new friends introduced me to a style of music called “fusion,” and Manteca were well-known for their mastery of that style. There were elements of improvisational jazz, popular music and world music in their work. Because of Manteca, I decided to learn more about the history of this style. It didn’t take long before I discovered Miles Davis recordings from the ’60s and ’70s that pioneered a combination of musical styles. I then checked out work by Larry Coryell, and jazzy popular bands like Chicago and Blood Sweat & Tears. From Miles Davis, I followed some of his former band members works such as John McLaughlin, Herbie Hancock, Chick Corea and Joe Zawinul. I also checked out groups like the Crusaders, Weather Report and anything with bassist Jaco Pastorius. Some of the music was highly experimental, sometimes it was hard to listen to. One of my favorite bands in that style was Mahavishnu Orchestra, founded by wizard guitarist John McLaughlin. McLaughlin also founded a band called Shakti that utilized a different style of fusion. Shakti was a highly improvisational band utilizing master musicians from India, and McLaughlin on guitar.

From this musical journey, I discovered progressive music from the ’70s, with bands like Yes, King Crimson, Emerson Lake and Palmer, and Genesis. These were all groups with highly talented musicians who brought other musical styles into popular music forms. As with fusion, this style of music was highly experimental – some of it made popular charts, and others remained obscure. What these styles of music share is a demanding level of skill for the performers, an experimental, pushing the envelope attitude, often utilizing collective improvisation (particularly in live concerts.) They were also controversial when they first came out, but many “wild in their time” elements have become enmeshed in mainstream music today. However, in the pioneering days of fusion, it was not uncommon for critics to pan albums and for purists to cry fowl.

One musician who has had an enormous influence on popular music is former Genesis front-man Peter Gabriel. By the late 1990s, the style of music that Peter Gabriel made accessible to a huge audience in the 1980s emanated from airwaves and stereos everywhere you went. I heard Jesse Cook talk (a guitarist who fuses flamenco guitar with many different styles) about the impact Peter Gabriel has had on modern music, particularly with his ability to fuse popular music with traditional music from other parts of the world (“world music”.) Jesse Cook mused at the time that anything we heard on the radio could probably be traced back to Gabriel. When we were discussing the different styles that had an impact on everyday popular music, we wondered what it was like for the musical pioneers when their ideas were new, and how little most of us know about the history of music we take for granted.

I still listen to music that combines different styles. One of my recent discoveries is Harry Manx, a blues guitarist who plays slide guitar on a Mohan Vina, an Indian slide guitar. He deftly fuses traditional Indian music with traditional blues. I find that I am moved by too many styles of music to merely just choose one, and sometimes the weird combinations do something for me that just one style on its own can’t do. I still love classical music, and find that a particular period or style of music suits my mood. Music can touch us in ways other things can’t. Music also evolves, and musicians draw on many influences – yesterday’s “pure” style becomes influenced by something else, and we co-opt other ideas and change. I suppose we expect that in the arts. For example, the Canadian artist Emily Carr’s work is called “post-impressionist” because she came after the famous impressionist painters, and developed a unique style that doesn’t quite fit in that category. Like the fusion musicians, Carr’s artistry has many influences and changed a good deal over her life. Carr had a special ability to fuse disparate themes together in a painting. She might combine everyday objects we might see in our homes with a nature scene, or combine two different scenes together.

In software development, we don’t have a long and rich history to draw from like our artistic counterparts. That doesn’t stop me from approaching software development from the same angle as I do anything else though. Brian Marick in his “Process and Personality” article says: “…my methodological prescriptions and approach match my personality.” This is also true with me. I like to fuse different ideas together and see if I can create something new from the combination. There may be stark lines drawn between the fields where the ideas come from, but that doesn’t bother me too much. It gets me into trouble sometimes, but the ideas are what are important to me. When it comes to software development, I don’t really care if an idea is “Agile”, “waterfall” or has no label at all. If it’s a good idea to me, it’s a good idea. Sometimes on software development projects, I weave together combinations of these ideas in a way that may seem strange to some. I’ve started calling this style that I and others are exploring: “software development process fusion.”

Testers and Independence

I’m a big fan of collaboration within software development groups. I like to work closely with developers and other team members (particularly documentation writers and customers who can be great bug finders), because we get great results by working closely together.

Here are some concerns I hear from people who aren’t used to this:

  • How do testers (and other critical thinkers) express critical ideas?
  • How can testers integrated into development teams still be independent thinkers?
  • How can testers provide critiques of product development?

Here’s how I do it:

1) I try very hard to be congruent.

Read Virginia Satir’s work, or Weinberg’s Quality Software Management series for more on congruence. I work on being congruent by asking myself these questions:

  • “Am I trying to manipulate someone (or the rest of the team) by what I’m saying?”
  • “Am I not communicating what I really think?”
  • “Am I putting the process above people?”

Sounds simple, but it goes a long way.

We can be manipulative on agile teams as well. If I want a certain bug to be fixed that isn’t being addressed, I can subtly alter my status at a daily standup to give it more attention (which will eventually backfire), or I can be congruent, and just say: “I really want us to focus on this bug.”

Whenever I vocalize a small concern even when the rest of the team is going another direction, it is worthwhile. Whenever I don’t, we end up with problems. It helps me retain my independence as an individual working in a team. If everyone does it, we get diverse opinions, and hopefully diverse views on potential risks instead of getting wrapped up in groupthink. Read Brenner’s Appreciate Differences for more on this.

Sometimes, we ignore our intuition and doubts when we are following the process. For example, we may get annoyed when we feel someone else is violating one of the 12 practices of XP. We may harp on them about not following the process instead of finding out what the problem is. I have seen this happen frequently, and I’ve been on teams that were disasters because we had complete faith in the process (even with Scrum, XP), and forgot about the people. How did we put the process over people? Agile methods are not immune to this problem. On one project, we ran around saying “that isn’t XP” when we saw someone doing something that didn’t fit the process. In most cases it was good work, but it turned out to be a manipulative way of dealing with something we saw as a problem. In the end, some of them were good practices that should have been retained in that context, on that team. They weren’t “textbook” XP, but the people with the ideas knew what they were doing, not the inanimate “white book”.

2) I make sure I’m accountable for what I’m doing.

Anyone on the team should be able to come up and ask me what I’m doing as a tester, and I should be able to clearly explain it. Skilled testing does a lot to build credibility, and an accountable tester will be given freedom to try new ideas. If I’m accountable for what I’m doing, I can’t hide behind a process or what the developers are doing. I need to step up and apply my skills where they will add value. When you add value, you are respected and given more of a free reign on testing activities that might have been discouraged previously.

Note: By accountability, I do not mean lots of meaningless “metrics”, charts, graphs and other visible measurement attempts that I might use to justify my existence. Skilled testing and coherent feedback will build real credibility, while meaningless numbers will not. Test reports that are meaningful, kept in check by qualitative measures, are developed with the audience in mind, and are actually useful will do more to build credibility than generating numbers for numbers sake.

3) I don’t try to humiliate the programmers, or police the process.

(I now see QA people making a career out of process policing on Agile teams). If you are working together, technical skills should be rubbing off on each other. In some cases, I’ve seen testing become “cool” on a project, and on one project not only testers were working on it, but developers, the BA and the PM were also testing. Each were using their unique skills to help generate testing ideas, and engage in testing. This in-turn gave the testers more credibility when they wanted to try out different techniques that could reveal potential problems. Now that all the team members had a sense for what the testers were going through, more effort was made to enhance testability. Furthermore, the discovery of potential problems was encouraged at this point, it was no longer feared. The whole team really bought into testing.

4) I collaborate even more, with different team members.

When I find I’m getting stale with testing ideas, or I’m afraid I’m getting sucked into groupthink, I pair with someone else. Lately, a customer representative has really been a catalyst for me for testing. Whenever we work together, I get a new perspective on project risks that are due to what is going on in the business, and they find problems I’ve missed. This helps me generate new ideas for testing in areas I hadn’t thought of.

Sometimes working with a technical writer, or even a different developer, instead of the developer(s) you usually work with helps you get a new perspective. This ties into the accountability thought as well. I’m accountable for what I’m testing, but so is the rest of the team. Sometimes fun little pretend rivalries will occur: “Bet I can find more bugs than you.” Or “Bet you can’t find a bug in my code in the next five minutes.” (In this case the developer beat me to the punch by finding a bug in his own code through exploratory testing beside me on another computer, and then gave me some good-natured ribbing about him being the first one to find a bug.)

Independent thinkers need not be in a separate independent department that is an arm’s length away. This need for an independent testing department is not something I unquestionably support. In fact, I have found more success through collaboration than isolation. Your mileage will vary.