Software Creation Mystery - https://softwarecreation.org

Author Archive

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.

5 steps to cooperate with you unconscious mind

The winds and waves are always on the side of the ablest navigators.Edward Gibbon



Elephant

How much do you know about your inner self? Do you understand your reactions, emotions and desires? Do you control them or they control you? Your life, present and future depends on you. Your conscious mind tries to do best. But your conscious mind is the tip of the iceberg of you – the most advanced and self serving biological organism. Can you trust that it will do the best for your goals, dreams and plans? No, you can not – if you don’t understand, cooperate and direct your unconscious mind – the real master of you.

In the previous post I shared Buddha metaphor about mind containing a rider and an elephant. The rider is a controlled, sequential and conscious thought, which uses verbal communication of the left side of the brain. The elephant is everything else – our emotions, instincts and intuition, which compromise automated and subconscious behavior of our biological essence.

Read full post >>

The Mind of the Programmer. Anatomy and 3 Contradictions

Brain: an apparatus with which we think that we think.
Mind, n. A mysterious form of matter secreted by the brain.
Ambrose Bierce



Human Brain

We expect that experienced programmer has perfectly logical, rational and consistent mind (at least during working hours). However, my experience shows that programmer has the same brains and mind as other people. Programmers do stupid things, overreact and act inconsistently. Why?

Buddha compared rational and conscious part of the human mind to the rider of the wild elephant – your emotions, passions and desires. As in the real life riding – you can hold the reins, direct elephant to turn, stop or go… only until elephant allows you to do so and has no desires on its own. (from The Happiness Hypothesis)

A programmer’s rider develops programs, a programmer’s elephant hinders or inspires – and certainly makes the process slippery and unpredictable.
Three contradictions within human mind help us to understand these relations better.

Read full post >>

System Forces and Software Evolution

Only entropy comes easy.Anton Chekhov



Flammarion

What are the systems in software creation?

System is a group of interacting, interrelated, or interdependent elements forming a complex whole. – The American Heritage Dictionary

There are some powerful forces in our Universe that lead systems to more complex organization – from elementary particles to molecules, from space dust to stars and planets, from chemical elements to biological organisms and from early tribes to advanced civilization. Even more powerful forces lead systems to destruction or degradation back to primitive forms or complete mess.

System evolution is the constant fight between order (or more complex organization) and entropy (or degradation) of the systems.

System forces are working on 2 levels of the software creation:

  • People, how they organized and the way they build software
  • The software system itself

Both these levels intervene and affect each other to deliver desired result – a working software system. These levels are different – people systems are the product of biological, social and economic forces. Software systems are the product of technology, mental concepts and theories. But both of them share common challenges related to the system forces.

Read full post >>

Human Forces and Software Creators

Software development occurs in the heads of the people – Pete McBreen

No matter what the problem is, it’s always a people problem. – Gerald M. Weinberg



people
josef.stuefer

Who does create software?

At this time, people are the only creators of the software. I don’t see how it could be changed in the near future. This is not a bad news if people were predictable, logical and rational. But they are not.
There are few issues with the fact that humans create software.

Read full post >>

Economic Forces and Software Genesis

“Somebody has to pay for all this.”Kent Beck



NYSE

Why do software projects exist?

A rational self-interest is a foundation of economics – maximizing expected benefits and minimizing expected cost. Software is one of the important instruments in hands of businesses, organizations and individuals that helps to achieve both goals. We could make money developing software and we could become more efficient and reduce cost. Benefits are not only limited to profit and money as with government, science or open source volunteers.

Economic forces start, drive and end software projects. These forces are complex, unpredictable and demanding. And they are the main reason for existence of the software.

What are economic forces?

Economic forces operate on 3 levels – internal, market and macro. You can find below description and examples of these forces.
Read full post >>

What is Software Development?

Tower of Babel

Software is everywhere: inside our computers, cars, phones and even toasters. Software tells these devices what to do.

Everybody can develop software. Hundreds of millions do. We use similar skills as in writing a cooking recipe or telling a friend how to find a shopping mall – we just need to come up with the set of instructions. Basic logic and knowledge of instruction language is enough. You don’t need to have a computer science degree or even finish courses to become a good programmer.

Does it sound simple? Creation of a program should be a routine job now as growing potatoes or building a bridge. And we have at least 2 good reasons to hope for this:


And still, software creation is unpredictable, unreliable and often fails.

Why? We should understand better what is software development.

Software development is the translation of a user need or marketing goal into a software product. – Wikipedia

We can add more to this definition.
Read full post >>

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