Software Creation Mystery - http://softwarecreation.org

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.

Evolution didn’t create humans perfectly suited for developing software.

1. Humans have imperfect brains (more about brain and mind contradictions)

  • Humans brains cannot hold a lot of information, which is necessary for building complex programs. Also humans could easily forget what they knew before.
  • Our brain is specialized on specific information processing, which is critical for our survival and life. We could quickly recognize other people faces, dangers or orient our bodies in space (unless we had a lot of booze). But it takes a lot of time to understand what is going in this damn system and why we have this bug.
  • Humans have difficulty to mentally manipulate complex program models and concepts, quickly understand them and find proper solution.
  • Human needs a lot of time to learn new things and become an expert, many cannot reach mastery level at all. And software development need a lot of learning and expertise.

2. Humans are inconsistent , irrational and make mistakes
If people could just act consistently, they could keep their desks clean, avoid cavities, lose weight, give up smoking, play a musical instrument, and possibly even produce software on a regular and timely basis. Alistair Cockburn

3. Humans have difficulty to communicate ideas and understand each other
People have different ways to express and understand ideas, they need many non-verbal clues and a lot of information (which they have difficulty to absorb). In addition they have different backgrounds, experiences and knowledge. It is a real challenge to understand each other, but it is very important in software development.

4. Humans have emotions, psychology and attitudes
And these quirky traits affect our productivity, creativity and quality of work, that in turn directly affect results of software development.

5. Humans expose complex social and group psychology
Humans are social and cooperative creatures and it became our evolutionary advantage. We care about our social status, what other people think about us and our personal relations. Therefore, we show complex and sometimes not optimal behavior for creating software in teams.

6. Users are humans too
I want to add to this mix of challenges that in the most cases the end-users of software are humans too. And they have all these qualities above and, in addition, much less patience and completely opposite demands to each other.

What are the human forces?

Individual

  • Productivity and motivation
  • Skills and talent
  • Experience and mastery, ability to learn, comprehension
  • Personality, morale, attitude, emotions, mistakes

Team - long-term work relationships

  • Relations, sympathies and antipathies
  • Norms – formal and informal
  • Leaders and followers
  • Communication and shared knowledge
  • Decision making

Social - organization and outside

  • Social complexity
  • Culture
  • Politics

We are Software Creators

We are different from linear, powerful and still predictable computer systems. We often cannot be rational as economic forces demand. We bring a lot of inconsistency, irrationality and complexity in the Software Creation. But humans are still the most important factor in the development, simply because they are Creators.

Therefore, while we, humans, are complex and imperfect beings for Software Creation, there is no way how we can build good software without accounting and adjusting this process to our nature.

What could be done?

  1. Establish processes and practices adjusted to the way how human brains work.
  2. Provide empathy and acceptance for people mistakes, irrationality and emotions.
  3. Encourage and support rich communication.
  4. Actively facilitate group behavior and social interactions. Deal with problems early.
  5. Consider end-user needs at each stage of the software creation.

But even if we have excellent people, teams and end-users, there are other serious forces that affect our main goal of the Software Creation. These are Economic Forces that are driving the system and System Forces that are responsible for the system quality, structure, behavior and evolution.

Question: Do you see any way to reduce effect of the human nature on creation of a software and make it more rational?

AddThis Social Bookmark Button AddThis Feed Button


Comments

Question: Do you see any way to reduce effect of the human nature on creation of a software and make it more rational?

I think you’re asking the wrong question. Nobody will gain from increasing rationality in software development. First of all, it’s clearly not possible since humans are and will always be highly irrational.

Secondly, it’s not a valuable goal by itself. What would be gained?

I think you need to rethink your question. This question makes me feel as if you consider software development as a goal by itself. I consider that to be a false assumption.

Software development to me always serves some purpose. If you consider software development as a goal by itself, will this advance the original purpose?

Hence, if you increase rationality in software development, will this serve the original purpose?

Comment by Steven Devijver | June 21, 2007 10:15 am

Steven,

I asked this question (how to reduce human effect) from the business perspective . Business and customers are paying the bill and they need reliable and predictable results. I believe human nature effect on software development (including irrationality) is one of the main factors why it is not possible now.

However, in the larger context I agree with you – business, software development, web, etc. are only serving us, humans, and shouldn’t be considered as the end goal. The end goal is much larger, but it is an another topic :)

Comment by Andriy Solovey | June 21, 2007 12:05 pm

[...] ???????????? ???? – ??????????, ?????????????????? ?????, ?????????, ??????, ?????????? ???????????, ????????, ????????? ?????????, ?????????????? ? ?????????? ?????????; [...]

Pingback by ??? ????? ?????????? ???????????? ???????????? | ?????????.?? | December 23, 2012 3:22 am

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=""> <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 .