Thoughts about product development

While working with software and hardware companies I collected thoughts about problems at work. I originally wrote this down to capture my experience in the IT industry. This was before I learned about ideas like systems thinking and design thinking. Over the years I keep coming back to these old thoughts.

Product development guidelines

How to make great products, how to turn good ideas into great products:

  • Be curious
  • Improve things
  • Have fun together
  • Help the customer

Today most companies use a hierarchical structure to organise people. I think that how people work together is very often different to the official hierarchy. That's because a hierarchical structure is something static that tries to guide the dynamic information flow. It does not necessarily reflect the reality of interactions happening in the company. It might conflict with the needs of the people. It might waste the potential of the people working there. It often doesn't adapt to changing circumstances. It often turns its back to customers.

Components of efficient systems

What we want is an efficient system for product development. One that delivers maximised output, can adapt to changes and considers the building blocks it's made of:

  • the support of team work
  • the communication between people
  • the collection and distribution of information
  • the health of the entire workplace

Support of team work

A common problem in companies is specialization and that different groups in an organisation don't act together. Team work in technical companies works better when teams see themselves as partners, when they define their work as an assistance for others. For example take commercial software companies which often suffer from "management" aka "leadership" trying to control instead of aiding the creative design processes. The lack of collaboration between teams often means that problems and product shortcomings are unknown or denied. The lack of purpose often means that teams don't know the context of their work or put effort into things that are not really needed.

Some tips: Software development is not a deterministic engineering discipline, but a creative design discipline. Developers spend more time on exploring alternatives than on building the same. Instead of following a predictable plan with strict requirements, expect to improve a product understanding during the whole development time. Team work needs support more than it needs control.

Communication between people

A bigger problem than technical hurdles are usually people and the lack of communication between them. For example let five people work together, watch how misunderstandings grow and opinions collide in a non productive way. Let's face it, we all have to deal with incompetence, insensitivity, intimidation, arrogance and other problems. Hopefully not every day, but we need to develop strategies to deal with communication problems and also how to integrate different kinds of people, different kinds of groups, into our work.

Some tips: Allow people to create a personal relationship to you. Explore problems in a personal dialogue. Not in front of others. A lack of safety causes humans to be unhappy, a lack of purpose causes humans to disconnect from a project. On the other hand is responsibility and challenge related to more involvement. Showing respect for people creates a more pleasant workplace.

Collection and distribution of information

A company that doesn't distribute information can find themselves in a situation, where the people who make the decisions are not the people who have the knowledge. I think that structures are better built on processes than the other way around. The reason is that when you build processes on existing structures you have already made design decisions that weaken structural self organisation and limit information flow. In a similar way are people better defined by their responsibilities and strengths than by their position. It's not important that you have processes, but that you can change them.

Some tips: There is a sneaking danger in all hierarchical structures, that people define themselves by their title, less by the purpose they should they fulfill. There's also the danger that people are tempted put their personal interests over the collective interests and the goals of the whole system. Focus on building collaboration processes not power structures.

Health of the entire workplace

A company can be in trouble without knowing it and problems don't always show up where they have been caused. Ideally there should be processes to monitor and improve the overall health condition of the workplace. One word to describe this is "Arbeitsfreude", a German word to describe the joy at work and the feeling-well-state at the workplace. Another word is "Kundenzufriendenheit", which translates to customer satisfaction. These are empathic expressions that underline the importance of the human side of work. For example take a group that produces great output but is unhappy, it will sooner or later collapse and needs time to raise to the next level. On the other hand take a motivated but inefficient group, it will produce no satisfying output and needs time to raise productivity and quality.

Some tips: We shouldn't forget to look at both sides, good results and joy at work. There is generally little you can do against bad politics, other than to make it very visible and to de-power harmful people. Remember to focus on building collaboration processes not power structures. We accomplish more when we are working together, including customers, developers and supporters. Create an environment where people enjoy working together.

Mark Seuffert, January 2011