Software Creation Mystery -

Archive for February, 2008

How a beautiful software system becomes Frankenstein

“Ruin in community is not caused by witches with broomstick but it’s something that starts in people’s heads.” – Prof. Preobrazhensky (Michail Bulgakov’s “The heart of a dog”)

The newborn software system looks beautiful inside after the few weeks of development. Several talented programmers put their souls together into this amazing software idea. But week after week the system become older and uglier. It could still look exciting for users, but the system rots inside. It is much more difficult to modify, it breaks often, development time and cost soars. Programmers become scared to work with it. The system becomes Frankenstein. Why could it happen?

Three reasons

There are hundred objective reasons why it could happen – complex technology, changing customer needs, management pressure, time to market and many more. But some teams still deliver a good system under these conditions. And some teams cannot deliver even in the most favorable conditions. Why?

Degradation of the system starts in the people heads and there are three main reasons:

  1. Incomprehension – developers don’t understand the purpose, ideas, design or technology behind the system
  2. Inarticulateness – developers unable to express ideas through clear and effective architecture, design and code
  3. Inconsistency – developers cannot act consistently or don’t care about the system

Read full post >>

Can In-House Programming Compete With Outsourced Software Services?

Thought-provoking and interesting author Nicholas Carr has published a new article in Financial Times, where he expands on his ideas about transformation of IT services into utility. He compares IT with electric power generation 100 years ago:

Like data-processing today, power generation was assumed to be an intrinsic part of doing business. But with the invention of the alternating-current electric grid at the turn of the century, that assumption was overturned.

Suddenly, manufacturers did not have to be in the power-generation business. They could run machines with electric current generated in distant power plants by big utilities and fed to their factories over a network of wires. With remarkable speed, the new utilities took over the supply of industrial power. Scores of private power stations were dismantled.

Read full post >>

The Programmer’s Mind: Gut Instinct, Focus and Procrastination

New Scientist published three interesting articles related to the human psychology. This post tries to apply these findings to the programmer’s mind.

Should a programmer trust gut instinct

In the article The subconscious mind: Your unsung hero, author argues that contrary to common beliefs non-conscious thinking is better in some cases than rational, conscious thought:

  • where people have to make difficult choices based on large amounts of hard-to-assess information. Subconscious thought processes allow us to integrate complex information in a more holistic way
  • in problem solving, verbalizing what they are doing has no effect on people’s ability to solve analytical, mathematical or logic problems but actually hinders performance on insight problems, such as solving a riddle
  • subconscious thinking is the source of our inspiration – it is central to creativity. In highly creative people subconscious information is more likely to overspill into consciousness, giving them richer mental resources from which to make creative connections

Creativity and problem-solving are required for any descent programmer. This article shows that these skills are dependent on quality of our subconscious thinking – gut instinct. Can we consciously improve our subconscious thinking? Yes, and the best way is getting experience and making many mistakes. Certainly, it will work only if you learn from them. As famous quote says: “Good judgment comes from experience. Experience comes from bad judgment.” Especially it is true in the software development.

Short Summary: trust and develop your gut instinct.

How a programmer could keep focus

Many of us struggle with distractions during our work. They really hurt our productivity. Psychologist Nilli Lavie says in the article Focus feature: Keeping your mind on the job:

You don’t have voluntary control – you can’t say ‘stop’ to a ‘distracter’. If you wish to ignore something, that doesn’t mean that you will succeed.

Surprisingly, he found that when a more visually intensive task “loads” the brain’s attention, we become increasingly blind to distractions, and our performance on the task will improve: reaction times get faster, and error rates drop. That means that the harder you are forced to concentrate, the less likely you are to be distracted.

Therefore, conclusion is simple for programmers – a challenging task will force you to ignore distractions, a boring task will make you very susceptible to them.

Short summary: load your brain to avoid distractions

Procrastination in programmer’s life

Another productivity killer is procrastination. Piers Steel at the University of Calgary in Alberta found a formula for procrastination:

Utility = E x V/G x D
This calculates how likely you are to do something immediately – the task’s utility – by taking into account the four key variables: how confident you are of succeeding in the task (E); how pleasant you perceive the task to be (V); how easily distracted you are (G); and how much time will elapse before the reward for completing the task arrives (D).

He suggests strategies to cope:

  • Make a firm commitment to your boss or partner to finish a task by a certain time.
  • Strip your workspace of all distractions.
  • Get a good night’s sleep and try tackling the most unpleasant and difficult tasks early in the day.
  • Set a series of realistic goals.
  • Promise yourself a reward for each goal that you meet.
  • Believe in yourself.
  • Outsource your motivation. Get someone else to regularly goad you into action.

I can promise – you’ll find even more strategies in various sources. I had a related post too: 5 steps to cooperate with you unconscious mind. But after all, you’ll get results only if you have desire to improve and change yourself. As Plato said: “The first and the best victory is to conquer self.” Chinese wisdom adds: “A journey of a thousand miles must begin with a single step.”

Short summary: it is possible to fight procrastination… if you really want

Links (unfortunately, all require New Scientist subscription):
The subconscious mind: Your unsung hero
Focus feature: Keeping your mind on the job
Procrastination: The thief of time

Software Creation Mystery -
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .