If you want to build a ship, don’t herd people together to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea. – Antoine de Saint-Exupery
I have a dream about a company that always makes users happy. The company that quickly builds high quality, simple and usable software that fully meets user needs. The company that reacts rapidly on customer demands, anticipates new needs and immediately use these opportunities. The company where people are happy, motivated and could realize their potential, dreams and life goals. The company that is successful on market and in the hearts of users, investors and employees. The Ideal Software Company.
What are the main problems with building software? What are contributing factors to these problem? What prevents many existing software companies from being ideal?
- Unclear, incomplete or misinterpreted user needs. The software programs often don’t solve needs on adequate level, have bad usability and contain many unused features.
- Difficulty to estimate required effort. Missed deadlines, doomed schedules and budget overruns are the common deceases in software development.
- Inability to adopt to changes. Often it is even impossible to estimate effort at the beginning as many things are changing during the course of the project: customer needs, performance requirements, business context. But for many software companies these changes still bring chaos to their projects.
- Poor, rigid or low quality solutions. Implementation defines project success. Talent, experience or knowledge are necessary to build good solutions, and they are often missing in the project teams.
The main reasons for these problems
- Top-down decisions – only few people make decisions with limited information, lack of feedback and independent information
- Poor aggregation of information from different sources
- Lack of diversity: homogeneous groups that are responsible for only specific aspect of the project (requirements, design, programming, etc.)
- Lack of accountability for the end results, mismatch in company and personal employees goals, politics and suboptimal decisions.
- Low motivation and morale – minimal control over decisions, poor relation of incentives and payout to contribution into the company success.
- Centralization – authoritative control causes inflexibility, lack of independence and adaptability; missing local tacit knowledge in decision making.
James Surowiecki in his book The Wisdom of Crowds clearly shows that traditional top-down companies are inefficient in making the best decisions.
The Ideal Software Company
A. Company organization
- Powerful teams – the company represents a conglomerate of powerful teams. Projects teams are small, diverse and empowered to make most project decisions.
- Egoless management – management carry mostly support, coordination and representation functions. Leadership is moved to the teams level. Top management is a consulting body, which includes highly skilled professionals in finances, technology, sales, etc.
- Shared and competing infrastructure – company infrastructure could include services as hosting, customer support, recruitment or distribution. These in-house services are shared and compete with outside providers.