All too often, clients and suppliers are focused on removing the risks from every engagement. But there is no change without risk and no innovation without change.
Innovation is important. It can give you a competitive advantage in the marketplace. It can also create a working environment that attracts bright and creative people to your organisation. This article looks at ways to promote innovation from a software development perspective.
Great teamwork is essential for delivering great solutions. Software suppliers often have many clients with separate teams, each working on different assignments. With everyone concentrating on their own challenges, it can be difficult to share innovative ideas. Whilst each client will benefit from a stable team, it can lead to silos where creativity on one project goes unnoticed on another.
Having a way to share experiences between projects can help to spread innovation. Consider ‘show and tell’ workshops where people share ideas and experiences. Invite a representative from another team to spend a little time in yours. Perhaps they can attend a daily stand up meeting or a design workshop. A short video that presents an overview of your team’s experiences is an alternative way to keep everyone updated.
Posting the top three challenges that each team faces is a way to encourage ideas from people outside your project. As Tom DeMarco says, 'There is no such thing as "healthy competition" in a knowledge organisation'. Sharing information will increase your ability to innovate across your entire organisation.
When people are afraid to make mistakes, they are less inclined to step out of their comfort zone. People that don’t stretch themselves are less likely to innovate. Creating a culture that doesn’t penalise mistakes will promote initiative and give people the confidence to be creative. This does not mean that you should encourage carelessness.
Mistakes will occur from time to time, especially when people are trying to find new and novel ways to solve problems. When this happens, focus on the process that led to the mistake rather than pointing a finger of blame at someone. When errors do occur, the objective should be to learn from the experience and do things a little better the next time around.
Look at the bigger picture
Development teams solve problems. They take big challenges, break them into smaller, manageable tasks, and do whatever is necessary to get the job done. These tasks are often small enough to finish in one or two days. Small tasks promote visibilty, stakeholders can see progress on a regular basis.
While this is a reasonable approach, take some time to look at the bigger picture before splitting it up. The smaller the work, the harder it is to innovate. It’s a little like baking a cake – it’s easy to be creative when you start but once you’ve chosen the ingredients, your options are limited. Get the team together before you start coding, line the walls with brown paper and think about the bigger picture. Map out the details and look for areas where you can innovate. Talk to key stakeholders and end users to understand their real needs. Sometimes a small business compromise can save a lot of coding. An occasional, informal discussion can reveal details that you won’t find in a specification document.
Invest in people and encourage repayment
Within a software organisation, people are the greatest asset. The happier they are, the more motivated and productive they will be; this does not happen by accident. Pay people a salary and they will turn up for work. Build a great working environment and give them the opportunity to improve themselves and they will excel. Allowing people some time now and again to do a little research or investigate a new technology is a good start. The real benefit comes from using personal develoment to drive social interaction.
When people share then everyone benefits. Short presentations, interactive workshops, hackathons, TED style talks all help to spread valuable knowledge and build a strong community spirit. Everyone likes to feel they are giving something back now and again – there is a sense of achievement in sharing new discoveries with your colleagues. The combination of knowledge sharing and teamwork is a breeding ground for innovation.
Challenge your customers
We all look to our customers for direction and support. After all, they are the domain experts and know their business far better than we do. While this is true, you should not rely on them to be the only source of creative input. Sometimes it’s easier to find inspiration when you are on the outside looking in.
People can get so used to doing the same thing every day that it’s difficult to see how to improve. As Henry Ford once said, 'If I had asked my customers what they wanted they would have said a faster horse'. When your customer asks for a new feature, take time to understand what they are really asking for. Understanding the specific nature of a requirement can provide valuable context. Just beware that context can constrain your ideas as well as crystallise them.
Don’t be afraid to challenge your customers from time to time. Explore their needs from a wider perspective, take them for a coffee and chat about what they are really after. People often describe things differently when you push the formality aside.
Define just enough process but no more
It’s good to have guidelines that describe the way you work. They provide a map that steers your people in the same general direction. They do not, and should not, replace team support or the company values that your senior stakeholders work hard to promote. Neither should they define expected behaviour in exquisite (and frustrating) detail. The idea is to have a high level process that people can shape to fit their preferred way of working.
For example, your process may mandate that teams works in short iterations and demonstrate progress at the end of each iteration. Each individual team should choose the length of their iterations, how they perform their demos and who attends. Equally, you may mandate a set of coding standards to promote consistent development practices. Your teams should decide on the nature of these coding standards and choose the tools that help to enforce them.
In this way, different teams will find their own way of working without diverging too far from an agreed approach. Sharing ideas across teams will promote creativity and help to drive continual improvement at an organisation level. This in turn, will generate innovation for clients as everyone coaches and educates everyone else.
Matthew Weaver, IT Consultancy Director, Objectivity