Software Creation Mystery - http://softwarecreation.org

Ideas in Software Development: The Game

Recently I’ve been thinking that Software Development is a game. The goal of this game is to discover and implement the best solution for customer’s needs. There are other important goals as making money, empowering business or keeping people happy, but they matter less for the purpose of the game.

undefined

 


External Elements of The Game 

These elements are external and players don’t have much control over them: Needs, Context, Constraints 

Needs

Any solution should satisfy some needs. These needs could be satisfied differently – from using beaten tracks to finding absolutely new ways. Discovering the best solution is a challenging goal as needs are unclear at the beginning and change during the game.

Characteristics of typical needs:

 

  • inaccurate – people often cannot come up with correct needs; people have communication gaps, misunderstanding, lack of knowledge and experience.
  • moving – needs are constantly changing because people, organizations, business and markets are changing; also people better understand their problems, real needs and experience solution as the game unfolds.
  • contradictionary – needs often represent conflicting people interests (customer groups, various stakeholders, politics) and incompatible system goals (functionality, performance, usability)
  • complex – our civilization, society and business advance forward, face more challenges and bring more and more sophisticated needs and requirements


A good solution requires well understood and stable needs, which are very difficult to achieve in the non-trivial instance of The Game. Therefore, seemingly the best solution can easily turn to be useless by the end. This is the greatest challenge of the game.

 

Context

The game is played in a specific context: organization, market and technology. Even the best solution could conflict with organization culture, fail on market or become technologically unreliable and costly. Context greatly influence a solution and make each game very unique and unpredictable.

 

Constraints

Discovery of the best solution will always have some limitations. The most famous are money and time. Constraints limit what is possible and bring down to land fantasies and plans of the players.

Players and Core Elements of The Game

Players have control over 3 core elements – Ideas, Actions and The Solution. 

Players

Software team members cooperatively try to discover and implement the best solution. They have

 

  • knowledge – domain, design, programming, methodology, theoretical and practical
  • experience – intuition and tacit knowledge formed by years and many projects, successes and failures
  • capabilities – skills, intellect, motivation and discipline


Players have two most important responsibilites: generate ideas and execute actions. Players are very different – some players are more creative and can come up with great ideas, some are better in execution and making sure that things are done. 

Ideas

Ideas are the moving force of The Game. Their quality directly impacts quality of The Solution. Players come up with ideas concerning

 

  • How do we understand needs?
  • How do we translate them into a solution?
  • How do we meet constraints?
  • How do we ensure the solution success in the given context?


Ideas come from 3 main sources:

 

  • innovation – new ideas coming from research, brainstorming and creative insights
  • improvement – enhancements and optimization of existing ideas
  • adoptation – borrowing and reuse of external ideas from competitors, experts and other domains


Software ideas dimensions with examples 

 

Level Area Features System Process
Philosophy Usability, Simplicity, 80/20 rule Object Oriented Programming and Design Agile
Strategy Roadmap, Vision, Market Analysis Platform, Architecture Iterations, Planning, Self-Organization
Implementation User Stories / Requirements Code, Web Design, Database Unit Testing, Pair Programming, Refactoring

 

Actions

Players should find the best set of actions to translate ideas into the solution. Actions are outcome and execution of ideas. Quality of execution matters – even the best ideas could fail because of bad implementation. Actions and getting things done are practical and very important part of the game.

 

The Solution

The Solution is the ultimate goal of the game. Players deliver the solution to customers and users and make them happy or unhappy. Players win if they discovered and implemented the solution that satisfy client needs, succeed in specific context and meet all constraints.

Afterword and Foreword

Why am I doing this seemingly impractical brain exercise in this post? The goal is creation of a simple mental model for thinking about software development and for my future posts. I want to avoid all the noise that come from different factors and specifics of individual software projects. People like to make things complicated (see CMMI  or PMBOK). I want to focus on the simple and pure mechanics of software creation (or The Game). I like to play and win 🙂

Does this simple model makes any sense for you?

 

AddThis Social Bookmark Button AddThis Feed Button


Comments

This blog have little value without you and your comments, thoughts and discussions. Please, leave your comments. You are welcome to debate and criticize any idea, but, please, don't attack other people. Thanks for your contribution!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Subscribe without commenting

Software Creation Mystery - http://softwarecreation.org
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .