Software Creation Mystery - http://softwarecreation.org

Archive for July, 2007

Programmers are lazy capricious pseudo-intellectuals. Really?

“There are very few true artists in computer programming, most are just house painters.” - Tim Bryce’s Law

Management consultant Tim Bryce doesn’t like programmers. Many programmers don’t like him either (here, here, here, here and probably in many other places).
Mr. Bryce’s view of programmers:

  • programmers often bamboozle others and heighten their own self-importance
  • the average programmer has a lower IQ than any other worker with a college degree
  • programmers show signs of sloppiness and mental laziness
  • they appear disorganized to make it difficult to judge how they are progressing on their work effort and reveal inadequacies in workmanship.
  • the typical programmer often laments he/she is being overworked, underpaid, and unappreciated.
  • to the programmer’s credit, they usually possess a curiosity about technological developments. However, this must be carefully nurtured by management – too much information may distract programmers from their job.

Responses on Mr. Bryce’s post (referenced above) provide many excellent points why Mr. Bryce is wrong. However, I want to comment points where he is probably right. Also I want to understand why some management consultants with more than 30 years of experience could have such view? Certainly, I reject Freudian view that an unknown programmer hurt feelings of Mr.Bryce in childhood (the main reason is that at this time the world had only few programmers and all of them are known).

Mr.Bryce’s target audience is not programmers (whose low IQ would probably prevent understanding his Theory P anyway), but IT managers and business decision makers. The underlying premise of Theory P is: “The more effectively we manage the people who program the computer, the better we can utilize the systems to support the information needs of the business”. This theory is not about live people, but about pragmatic business and lets consider the theory from this perspective. There are three points where Mr. Bryce could be partially right.

Read full post >>

11 Laws of The System Thinking in Software Development

“I will work harder” – the horse Boxer (from George Orwell’s Animal Farm)

Boxer
bichuas

The System Thinking Laws from Peter Senge’s book “The Fifth Discipline” applied to Software Development.

1. Today’s problems come from yesterday’s solutions.

We, humans, are happy when we solve problems. We often don’t think much about consequences. Surprisingly, our solutions could strike back and create new problems.

  • A company decides to reward few key members of the very successful team with bonuses and promotions. The rest of the team feel unfairness and loss of motivation. Eventually tension between members is increased. The following projects are no longer successful.
  • A project manager frequently asks developers to fix a new bug or work on urgent requests from customers. Developers do their best to fulfil these requests. Frequent distractions prevent them from finishing their main tasks for the iterations. Project shows only little progress.

Read full post >>

Do we have conscious control over our actions?

New Scientists reports that 80 per cent of human behavior is largely automatic and determined by instincts alone. Most of the time we are simply reacting instinctively to the world around us. Only afterwards we make up reasons to explain what we did. Our brains routinely push the control of some activities from conscious to unconscious, such as playing musical instruments or driving a car. Surprisingly, this automatic control influencing important matters such as economic decisions and our dealing with others.
Perhaps, the best way to understand human behavior is to ignore the supposedly rational, consciously generated actions of individuals.

Comments:

  1. We often use an automatic behavior even in complex social interactions as in software development. So, it is possible to predict the behavior of team members in more than 80% situations according to the article. It also means that the team will consistently repeat successful or failing patterns of interactions. How can we increase occurrence of successful  and eliminate failing outcomes ? Should we force to turn our conscious more often?
  2. Do we use automatic thinking while programming? Is this always only conscious effort as we should expect?  If we use unconscious thinking, how does it effect our results?
  3. It is another prove for the correctness of the description of human mind in one of my posts – The Mind of the Programmer :)

Software Development is The Flow of Ideas. The Rest is Secondary

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

Why it is so difficult to understand the nature of the Software Development? Because it is ideal and metaphysical. Software Development doesn’t stand on objective physical world, but deals with fragile and subjective world of human ideas. That is why Software Development is much more than Software Engineering – it just cannot fit into Procrustean bed of well defined requirements, processes and laws (maybe except programming for science or physical devices).

Idea Flow

Lifecycle of the most software projects:

  1. People generate software ideas based on people needs. Humans have difficulty understanding what they need and even more difficulty to clearly explain it to others.
  2. Software professionals try to understand these ideas and communicate to each other. Before coming to programmers these ideas are interpreted (more often misinterpreted) by bosses, marketers, project / product managers, architects, business analysts, etc.
  3. Programmers are trying to translate these mutated ideas into the program code. Many of them are more interested in creating technical puzzles (or doomed to fight them) than in complete understanding of business ideas – often changing and sometimes illogical.
  4. People use this software. Does it meet their needs? How happy do you think they are?

How to improve the flow of ideas?

Read full post >>

What IT will do without oil?

Software Creation is very dependent on oil. Our computers, keyboards and printers are made from plastic. Our cars use gasoline to get us to work. Furthermore, almost everything in our modern civilization depends on oil. Global oil production will peak any time from now. Will end of oil cause crash of our civilization? I was always worry about this :)
New Scientist assures that governments, technology and biology will rescue our civilization.

  • 70% of oil is used for fuel; petrochemicals are only 3.4%. Technology, government regulations and social trends are actively influence reduction of oil usage for energy and fuel. Sweden, for example, plans to be independent of oil exports by 2020, using no oil for heating and halving its transport fuel consumption.
  • The new breed of biorefineries is using biomass to produce biofuels and bio-based chemical products. The biomass could be supplied by anything from corn, sugar cane, grasses, wood and soybeans to algae. For example one company is converting turkey guts into oil and fertilizer. By 2025, the US Department of Energy wants 25% of industrial organic chemicals to be delivered from biomass. There are already 120 ethanol refineries in US.
  • Biorefineries are more profitable at smaller scales than conventional petrochemical refineries, because they operate at lower temperature and pressure, so they are less complicated to build. However, it is still difficult to compete with some oil-based products.

Therefore, life will continue after oil is over. Proactive thinking, society and government involvement could significantly reduce impact, especially considering that solutions correspond with fighting global warming.

IT-Business Gap Widens. Is this a problem?

Disconnect between business and IT is increasing and could signal serious change how enterprise technology is run, reports IT World Canada. Michael O’Neil from Info-Tech Research Group thinks that the future of the IT professional no longer lies in acting as an important support system or innovative visionary but as a “utility.” The role where IT functions as a discrete, advisory body will disappear while the majority of IT professionals are assimilated into areas pertaining to business processes and strategy.
There is also an interesting discussion on InfoQ if Agile can rescue this widening gap.

Comments: I don’t think IT should be rescued. The narrow specialization of IT and Software Development professionals and their remoteness from the problem domain and decisions are the serious problems in software creation. I consider disappearance of specialized IT services and departments as a good trend. I hope that combination with another trend – disappearance of centralized and hierarchical corporations – will produce powerful cumulative effect. The companies will become conglomerates of small cross-functional and diverse teams, empowered to make most decisions. Programmers will have deep domain expertise in addition to specialized knowledge how to build programs. Benefits are better decision making, market response and people motivation. See my post The Ideal Software Company.

Testosterone, irrational choices and programmers

The Economist article claims that men with a lot of testosterone level make more curious choices. Dr. Burnham of Harvard University research shows that high-testosterone men reject low ultimatum game offers more often. In this experiment, men who reject low offers ($5 out of $40) have significantly higher testosterone levels than those who accept.
The research supports the idea that people really strive for relative rather than absolute prosperity. They would rather accept less themselves than see a rival get ahead. In a variety of species, testosterone is associated with male seeking dominance. If low ultimatum game offers are interpreted as challenges, then high-testosterone men may be more likely to reject such offers.
Economists often refer to this sort of behavior as irrational. In fact, it is differently rational. The main outcome for men is a social status—that brings desirable reproductive opportunities. Money could help, but if another route brings that status more directly, money is irrelevant.

Comments: How this research is related to programmers and software creation?

  1. Many programmers (their bosses and, recursively, bosses of their bosses) have high testosterone level, and therefore could exhibit curious and irrational behavior including politics, conflicts and bad decisions for the software project. Is it possible to prevent such behavior? I believe the practices that modern society are using for fighting with dark sides of human nature could help. Transparency of decisions, free opinions and equal intolerance to unsocial behavior disregarding ranks. Can The Ideal Software Company help?
  2. Social status in the company could be stronger motivator than money for high-testosterone men: better computers, more praise and ability to influence decisions. However, the knowledge that somebody gets more money for the same work could be very depressing for any testosterone level men :).
  3. High testosterone level could be the strong driving force for achievements and very useful if properly applied. But too many of this kind of people could cause a lot trouble and disturbance in the Force :).
  4. Here is an interesting quick method to determine testosterone level. Married man with children have the lowest level.

Cognitive Dissonance and Software Creation

Humans can justify almost anything thanks to cognitive dissonance, explains Newsweek.
Cognitive dissonance is the extreme emotional discomfort we feel when two important beliefs, attitudes or perceptions collide. Humans cannot tolerate dissonance for long, so they ease the tension by making a change in belief or attitude—and justifying the change.
Why can’t we just live with inconsistency and contradiction? We experience unpleasant emotions whenever life forces us to choose a course of action, but we are not fully convinced it’s the right course. When we make an important commitment, the mind instinctively seeks out proof that we’ve done the smart thing.
What if you make a choice that is really bad and you can’t hide from it? People who don’t want to recognize own mistake become even more entrenched in their belief once it is proven wrong. They throw good money after bad in the market, grab for straws in a dying relationship or send yet more troops to fight a misbegotten war.

Comments: All of us have beliefs, and all of us have times when our beliefs are challenged by other people and reality. It is a real pain :). Cognitive dissonance is a natural psychological reaction that cause us to change or entrench deeper, but somehow resolve the issue. Being stubborn and hold to wrong beliefs is bad, but changing them frequently is bad too as it prevents us from building stable and predictable mental concepts of the surrounding reality. The best way to stay in touch with reality is testing our beliefs, get feedback often and keep mind open. This approach is a core of Agile and iterative development and this is one of the best methods to resolve cognitive dissonance in software creation.

IQ vs. Self-Discipline. What is more important in Software Development?

Angela Duckworth and Martin Seligman research shows that both IQ and self-discipline are correlated with academic performance and GPA, but self-discipline is a much more important contributor: those with low self-discipline have substantially lower grades than those with low IQs, and high-discipline students have much better grades than high-IQ students. Further, the study found no correlation between IQ and self-discipline—these two traits varied independently.

Comments: Does this research applies for software creation? Can we say that self-discipline is more important than IQ for programming? I believe that self-discipline, emotional intelligence and control over unconscious mind are more important than IQ in programming. You cannot get anything useful done without self-discipline; however low IQ is a problem too.
My formula for the talent in programming: Talent = IQ * Self-discipline * Creativity

Quest Continues: What is Software Development?

Eric Wise argues that software development is not software engineering. Reddit tries to compare it with science. Both discussions have many interesting and insightful comments, huge variety of opinions and show no signs of their reconciliation. I also have post related to understanding of the nature of software development as many other people in their blogs :).
Goethe said that between two opposite opinions you’ll find not the truth, but the problem. Can we ever define an unified theory of the nature of Software Development?

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