Software Creation Mystery - http://softwarecreation.org

Archive for July, 2007

The Ideal Software Company. Utopia?

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



Utopia

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.

The Barriers

What are the main problems with building software? What are contributing factors to these problem? What prevents many existing software companies from being ideal?

  1. 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.
  2. Difficulty to estimate required effort. Missed deadlines, doomed schedules and budget overruns are the common deceases in software development.
  3. 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.
  4. 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

  1. Top-down decisions – only few people make decisions with limited information, lack of feedback and independent information
  2. Poor aggregation of information from different sources
  3. Lack of diversity: homogeneous groups that are responsible for only specific aspect of the project (requirements, design, programming, etc.)
  4. Lack of accountability for the end results, mismatch in company and personal employees goals, politics and suboptimal decisions.
  5. Low motivation and morale – minimal control over decisions, poor relation of incentives and payout to contribution into the company success.
  6. 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

  1. Powerful teams – the company represents a conglomerate of powerful teams. Projects teams are small, diverse and empowered to make most project decisions.
  2. 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.
  3. 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.

Read full post >>

Review: The Wisdom of Crowds. Making the Best Decisions

Who is smarter – a diverse group or the best expert? Can a boss, a project manager or the most experienced specialist make better decisions than a whole team? What are the problems with decision making in traditional corporations?

James Surowiecki in his book The Wisdom of Crowds argues that given the right conditions a group consistently outperforms best experts in decision making. Few people can do better than the group, but each time they will be different people. A group answer will often be at least as good as an answer of the smartest member.

The author provides interesting examples:

  1. 800 different people (mostly non-experts) tried to guess weight of an ox at the International Exhibition of 1884 in London. The average guess of the crowd was only one pound off (ox weighed 1,198 pounds) and was better than any estimate of the cattle experts.
  2. Stock market knew what company was responsible for the Challenger disaster within a half hour of the shuttle blowing up. Mostly uninformed investors dumped shares of Thiokol almost simultaneously.
  3. Team of the men with wide range of knowledge (e.g. mathematician, submarine specialists, salvage men) correctly estimated location of disappeared U.S. submarine Scorpion. The submarine was found 220 yards from collectively estimated spot (original search area was 20 miles circle) and it was better than any individual guess.

Crowd is wise when these criteria are present:

  1. Diversity of opinions (each person have some private information)
  2. Independence (people’s opinions are not determined by the opinions of others)
  3. Decentralization (people are able to specialize and draw on local knowledge)
  4. Aggregation (some mechanism exists for turning private judgments into a collective decision)

Read full post >>

Weekly Digest: Secrets of Creativity, Material Software Companies, Discouraging Incentives

Secrets of Creativity

http://www.sciammind.com/article.cfm?articleID=00028EE8-4369-123A-822283414B7F4945
Why some people are more creative than others? The Scientific American article provides some insights:

  • Intelligence is not a crucial ingredient. A crucial variable is the difference between “convergent” and “divergent” thinking.
  • Convergent thinking aims for a single, logical and correct solution to a problem. Divergent thinking proceeds from different starting points and changes direction as required
  • Creative people can free themselves from conventional thought patterns and follow new pathways to unusual or distantly associated answers, which leads to multiple solutions, all of which could be correct and appropriate.
  • These two processes took place in different brain regions – left hemisphere is responsible for convergent thinking and the right hemisphere for divergent thinking.
    • The left side examines details and processes them logically and analytically but lacks a sense of overriding, abstract connections.
    • The right side is more imaginative and intuitive and tends to work holistically, integrating pieces of an informational puzzle into a whole.
  • Our creative talent is gradually repressed from childhood. Schools place emphasis on teaching children to solve problems correctly, not creatively.
  • The brain is a creature of habit; using well-established neural pathways is more economical than elaborating new or unusual ones, which wither with time if not used.
  • Creative people are generally very knowledgeable about a given discipline, it is very improbable to come up with a grand idea without deep involvement in this area.
  • Creative solutions result from examining challenge from all sides, disassembling and reassembling the building blocks in an infinite number of ways. The problem solver must thoroughly understand the blocks.
  • Too much specialized knowledge can stand in the way of creative thinking. Experts often often internalize “accepted” thought processes, so that they become automatic. Intellectual flexibility is lost.
  • Creative revelations come to most people when their minds are involved in an unrelated activity. A little relaxation and distance changes the mind’s perspective on the problem – without us being aware of it. The brain clear away thought barriers by itself and at some point, newly combined associations break into consciousness, and we experience sudden, intuitive enlightenment.
  • The neural processes that take place during creativity remain hidden from consciousness and we cannot actively influence or accelerate them.

Comments:

  1. Creativity plays a very important role in the software creation. IQ is not enough for developing the best programs as it will lead for technically complex, standard and expensive solutions. Solving changing business need with limited resources, dealing with inconsistent people and complex systems requires unorthodox solutions.
  2. Companies should start hiring people based on “Creativity Quotient” in addition to IQ and EQ. The article has interesting examples of the potential interview tests.
  3. We should specifically train our creativity and always try to look for solutions in novel ways, considering unusual alternatives, combinations and associations; breaking traditional approaches. We should strive to come with more than one solution.
  4. Creativity needs knowledge, serious preparation and understanding what challenges to solve. The brain will not work on the problem until it has enough food for thoughts :). And brain can work out solutions without our conscious involvement, automatically. We just need to learn how to prepare our brains properly.

Material Software Companies

http://technology.guardian.co.uk/opinion/story/0,,2112850,00.html
Software companies are coming to earth and turning from nonmaterial to very physical companies. Nicholas Carr explains why.

  • Google has data centres around the globe, reportedly holding as many as 2m or 3m computers altogether, and it continues to spend billions of dollars a year to put up new ones. Its arch-rival, Microsoft, is building a 140,000 sq m six-building data centre on a former bean field. Also rushing to build or lease data centres are Yahoo!, Ask.com, Intuit, Salesforce.com and Deutsche Telekom’s T-Systems unit, among many others.
  • Nature of the software business is changing. In the past, software companies only had to concern themselves with writing code, copying their programs on to discs and selling them. It was up to the buyers of the software to maintain the computers, storage drives and all the other hardware needed to run the programs. Now companies are beginning to rent programs over the net for a monthly fee. Even sophisticated applications for maintaining customer accounts, tracking finances, managing workers and performing other complicated tasks are now being offered as web services. The burden of running software is shifting from the buyer to the seller.

Therefore software companies are finding that they have to compete not just on the elegance of their programs, but on their ingenuity and efficiency in buying and deploying physical assets – land, buildings, computers, and other gear – as well as managing the huge amounts of energy required to keep all the machines running.

Comment: I feel we will miss this nonmaterial world, where we should care only about own computer, a table and a chair to write programs 🙂 . But I still believe that the essential and core business of the software companies will be programming, not management of all these physical assets. What do you think?

Discouraging Incentives

http://www.nytimes.com/2007/07/02/opinion/02schwartz.html
Do you think more incentives are better? Not always argues Barry Schwartz.

Economists assumption: the more motives the better. Give people two reasons to do something and they will be more likely to do it. Unfortunately this assumption is false. There are circumstances in which adding an incentive competes with other motives and diminishes their impact.
When you pay people for doing things they like, they come to like these activities less and will no longer participate in them without a financial incentive. The intrinsic satisfaction of the activities gets “crowded out” by the extrinsic payoff.

Comment: Money is the most powerful motivator. However we should carefully offer additional incentives for something that people like doing. It could leave a bitter taste and kill passion, motivation and dedication even if they continue doing this. But not giving money when people expect them could be even worse. So, probably, it is a good idea to discuss / understand person’s internal motives and expectations before finding a way to encourage desirable behavior. Maybe just public and unreserved admiration will be the best reward. We, humans, are so complicated 🙂

Weekly Digest: Computers vs. Humans, Thoughts: Remember or Forget?

Computers carry 70% of foreign currency trades

http://www.newscientisttech.com/channel/tech/mg19426061.500-gordon-gekko-makes-way-for-trading-software.html (need subscription)
Computers make one third of all trading decisions in US markets. Experts predict that more than 50% will be done by 2010. Machines can make multiple trades and monitor thousands of stocks at breakneck speed. They can use tactics that makes trades indistinct and hide their intent; for example, by spreading the deal over many small trades. There are big profits to be made before market realizes these opportunities. Companies are moving their servers as close as possible to stock exchange systems to reduce order time: milliseconds matter in competition of computers. There is a new arm race between trading “algos” (algorithms) – they now try to guess and sneak signs of other algos trading. David Cliff designed one of the first commercially successful algos in mid 90s. Human traders still have place on less understood and illiquid markets where instinct and experience are still important; software helps them with simulations and test of ideas. People are still much better in predicting market trends. How much longer?

Comment: First, people, who try competing with these machines for day trading, have less and less chances. Second, the most important that another intellectual human area is given up to computers along with chess and drug creation. What is next? Computers can became smarter than people in the next 20-30 years. They just need to learn how to write programs for themselves.

Human-Aided Computing

http://www.technologyreview.com/Infotech/18962/
Researchers at Microsoft are trying to tap into some of the specialized–and often subconscious–computing power in the human brain, and use it to solve problems that have so far been intractable for machines. Today it takes relatively large supercomputers many hours to recognize faces–something a human can do almost instantly. One application for this face-recognition technique could be to use it for quickly sorting snapshots from surveillance videos to find frames with faces and those without. This strategy could be useful for identifying other types of objects, such as dogs or cats, and different types of words. Subconscious brain power could therefore improve automated image search by preclassifying objects to help a computer more accurately identify pictures.

Comment: Now Microsoft evil guys 🙂 teach computers how to use our brains. If it will go further computers will not only become smarter (see previous comment), but also hungry for our brain power.

Forgetting helps you remember the important stuff

http://news-service.stanford.edu/news/2007/june6/memory-060607.html
Bruce Kuhl and Anthony Wagner at Standford University have discovered that the brain’s ability to suppress irrelevant memories makes it easier for humans to remember what’s really important. This function, which is carried out in the prefrontal cortex region behind the forehead, helps the brain; it doesn’t have to work as hard in the future when it tries to remember an important memory because the competing but irrelevant memories have been weakened.
Memory allows humans to be predictive about what’s likely to be relevant to them as they go through life, Wagner explained. “What forgetting does is allow the act of prediction to occur much more automatically, because you’ve gotten rid of competing but irrelevant predictions,” he said. “That’s very beneficial for a neural information processing system.”

Comment: I knew this before – brain automatically forget irrelevant memories! You can read and learn as much as you want, but you’ll forget most of it. It doesn’t make sense for us to learn all the language constructs syntax, all the classes in framework and read so many books. We’ll forget if it is irrelevant. Now the most important question is how to make this information relevant. I believe the best way to do this – create abstractions, actively aggregate in your head conceptual pictures or just practically use it.

Mind Control: Unwanted Thoughts

http://www.psychologytoday.com/rss/pto-20040204-000001.html
Now if you want to forget something 🙂
Trying hard not to think about something almost guarantees that it will pop up in your consciousness. When you are actively avoiding a thought, one part of your brain is busily working to keep the upsetting thought at bay. It’s searching out distractors—something else to focus on that will protect you from the idea you’re trying to avoid.

At the same time, another part of the mental machinery has to keep checking to make sure that the job’s being done properly. Inadvertently, this monitoring process calls attention to the unwanted thought, and makes you more vulnerable to the very ideas you’re fleeing from. Article gives 2 advices: make secret preoccupation open or do the opposite of the thing you want to do.

Comment: These facts show again power of our automatic brain systems over our conscious mind and importance of cooperating with unconscious mind. You can try 2 additional things when you build program and you have unwanted thoughts:

  • don’t program at all – quality of your work will be low
  • or find most interesting problem in the program and you’ll quickly forget your thoughts

New approaches to software development

http://www.scottberkun.com/blog/2007/asshole-driven-development/
Scott Berkun provides information about the new (or reinvented) systems for software project management: Asshole Driven development (ADD) , Cognitive Dissonance development (CDD), Cover Your Ass Engineering (CYAE) and many others.

No comments.

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