Software Creation Mystery -

Archive for the ‘People’ Category

Lost Personalities: How our company alters us

– We’re sorry. It’s not us. It’s the monster. The bank isn’t like a man.
– Yes, but the bank is only made of men.
– No, you’re wrong there- quite wrong there. The bank is something else than men. It happens that every man in a bank hates what the bank does, and yet the bank does it. The bank is something more than men, I tell you. It’s the monster. Men made it, but they can’t control it.

– The Grapes of Wrath by John Steinbeck

Any company or large group of people is more than a sum of individuals. A company exercises control over people minds and changes them. Inside the company, organization or crowd you are no longer you, but the element of the system. You feel, think and behave differently. Collective actions are distinct and often independent of individual wills and desires. The scandal with Enron, tragedies of Abu Ghraib and Holocaust show how normal people minds could be dangerously influenced by group and context pressure.

Three stages of altering our minds:

  1. Compliance – agree with collective views or acts in front of the group, but disagree in private.
  2. Identification – temporary believe in collective view while being part of the group, but return to old beliefs after leaving a group.
  3. Internalization – the individual views are truly altered and induce permanent change in a value system even outside the group.

There are three powerful forces that change us:

  • Conformity
  • Obedience
  • Absorption

Read full post >>

Can Computers Beat Human Programmers? Part 3. Interacting with humans

Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. – Isaac Asimov

Part 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
Part 4. Building useful programs
Part 5. Future of human programmers

Even a super intelligent computer needs input from humans to build a program. It is great if you are a scientist or a computer professional and can provide mathematical models or algorithms. But what if you don’t know how to specify what you need from the program? Can computer really understand us? Can people trust computers to build a correct system for their needs? Will be communication with computer comfortable and effective?

We should consider four important software creation areas to answer these questions:

  1. Understanding – can computer comprehend our language and complex ideas?
  2. Engagement – can computer effectively involve us in communication?
  3. Guiding – can computer help us to understand our needs, direct our thinking and retrieve useful information?
  4. Trust – can we trust that computer will follow our human interests, obey rules and don’t do harm?

1. Understanding

Alan Turing offered the first test for computer intelligence – a computer is intelligent if you cannot distinguish in conversation this computer from human (John Searle argues in his Chinese room experiment that it is not enough). Computer should posses intelligence, master language and understand meaning of words to pass the test.

Read full post >>

Guide to Job Security for Software Developers: 15 Sure-Fire Methods

Job Security (my definition): perceived company’s losses of firing you are much higher than keeping you around.

I proudly present comprehensive collection of three sure-fire strategies and 15 sure-fire methods that could dramatically enhance your job security.

Read full post >>

Can Computers Beat Human Programmers? Part 2. Becoming intelligent

Intelligence is what you use when you don’t know what to do. – Jean Piaget

Part 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
Part 4. Building useful programs
Part 5. Future of human programmers

Computers blindly follow our instructions. They are much faster than humans, but still computers are stupid things dependent on our algorithms and knowledge how to solve problems.
Even huge processing power is not enough to start programming. Non-trivial solutions require understanding of ideas, problem solving, learning from experience and much more – everything what we can define as intelligence. Can computers become smarter than human programmers?

What intelligence is required for building programs?

Read full post >>

How to Be Happy At Work. Short tutorial.

Then God said to Adam, “You listened to your wife and ate fruit from the tree. Cursed is the ground because of you. Through hard work you will get your food, every day of your life.”

This Adam curse continues and now – we have to work hard every day to earn our food. It is inevitable fact – most of us spend at work more than half of conscious adult life. How well do you spend this half of our life? Are you unhappy, stressed or bored on your job?

Why people are unhappy at work?

  1. Conflicts with other people and especially your boss. We all humans and, surprisingly not only you, but everybody has own agenda, interests and needs. Conflicts often happen, because we forget about this. Care about people around you and you’ll enjoy their company much more.
  2. Burnout – too much pressure, too much stress, too little time to think about yourself. Stress comes from inside – we are creators of own stress. There are hundreds ways to relieve – better organization, delegation of responsibility, better communication with co-workers. External factors are most important: enjoyment from family, home, physical activity and leisure, fulfilling personal life and achievements. At the end, we work to live, not living to work.
  3. Lack of variety and challenge. And first step to have interesting and enjoyable job is to design your job.

Read full post >>

Can Computers Beat Human Programmers? Part 1. Gaining processing power

Part 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
Part 4. Building useful programs
Part 5. Future of human programmers

Word Freak

Can computers compete with us, human programmers, in the near future? The short answer is yes – if computers will gain enough processing power, become intelligent, could effectively interact with humans, build useful programs and… still be interested to serve humans.

Computers take over more and more people jobs and areas considered exclusively human. Deep Blue beat the human best chess champion Garry Kasparov, it is not possible to win checkers against computers, they create drugs, carry 70 % of foreign currency trades and will do 50% of stock trades in 2010.

But to become better than a human programmer, a computer should compete with very powerful processing machine – our brains.

Read full post >>

How to Communicate Effectively And Still Get Things Done

42… Do you still need more explanation?

42 is the Answer to The Ultimate Question Of Life, the Universe and Everything (Google confirms this). According to The Hitchhiker’s Guide to the Galaxy, a hyper-intelligent race constructed the second greatest computer in all of time and space, Deep Thought, to calculate the Ultimate Answer to the Great Question of Life, the Universe, and Everything. After seven and a half million years, Deep Thought answered: “forty-two.” The computer rejected complains:
“I checked it very thoroughly, and that quite definitely is the answer. I think the problem, to be quite honest with you, is that you’ve never actually known what the question is.”
This is probably the largest known communication failure in the Galaxy. What about you? Do you know how to communicate effectively, avoid communication failures and still get things done?

Communicating with humans

We know that effective communication with humans requires skills, experience and effort. It is not easy and straightforward. Professor Albert Mehrabian explains that in communication

  • Only 7% of meaning is in the words that are spoken.
  • 38% of meaning is in tone of voice.
  • 55% of meaning is in facial expression and body language.

It is not overstatement. Our unconscious parallel processing in the brains is much more powerful than controlled sequential thinking. It is matter of our survival to use “gut feeling”, all senses and analyze many clues – much more than we can do with the limited conscious mind. In addition, we cannot trust words, we often use them for convincing explanations without really knowing how we came up with them.
Therefore, person-to-person, face-to-face communication is the most effective. But excessive communication could be a big waste of time and prevent us from accomplishing other things. To survive in the modern communication flood we should learn how to communicate effectively.

Read full post >>

Better Brainstorming: Individually or Together?

Marc Andressen quotes Frans Johansson’s book “The Medici Effect”:

In a [1987 study, researchers] concluded that brainstorming groups have never outperformed virtual groups. Of the 25 reported experiments by psychologists all over the world, real groups have never once been shown to be more productive than virtual groups. In fact, real groups that engage in brainstorming consistently generate about half the number of ideas they would have produced if the group’s individuals had [worked] alone.

It is hard to believe (as with any categorical statement) that this is a final verdict. Some bloggers correctly point that done right, brainstorming is a powerful tool (here and here). and Wikipedia describe effective brainstorming process.

However, group brainstorming indeed has potential risks for generating less and lower quality ideas:

  1. Ideas that challenge conventional wisdom are suppressed or considered mistaken
  2. People can change or even disregard own ideas while listening to ideas from others, especially authoritative sources
  3. Sticking with the crowd causes less willingness for risky and innovative ideas.

Effective brainstorm process avoids these problems when:

  1. People investigated the topic before the meeting and come prepared with own ideas and considerations.
  2. People are diverse, have different perspective and background. They bring specialized and tacit knowledge to the table.
  3. People are encouraged to think independently, creatively and don’t criticize others. Everybody contributes as equal; ideas could be even presented anonymously.

I experienced myself both successful and unproductive brainstorming sessions. I found that good brainstorming session produces ideas, which are better and more than just selection from individual ideas. It is real enjoyment to see when people create ideas, enrich each other thinking and generate new wonderful and unseen ideas. A side effect is important: people consider themselves as a part of the process, feeling ownership and control. They accept final ideas readily, better understand these ideas and are committed to implement them. This is a way to become self-organizing team.

What is The Best Leadership Style for The Software Team?

4 Effective Leadership Styles in Software Development

What should be the qualities of the best leader for the software team: strong decisive knowledgeable or quiet supportive cooperative? Best leaders have two main concerns – people and getting things done (Blake and Mouton’s Managerial Grid). Both concerns have cumulative effect – high concern for people makes them motivated and therefore more productive, high concern for production creates sense of achievement and makes people more satisfied at work.

However, there is no one leadership style that suits all situations, projects and individuals. There are 4 main leadership styles (based on The Hersey and Blanchard model and Vroom and Yetton’s Normative Model), which could be effectively used in software development: The Commander, The Coach, The Supporter and Self-Organization.

Read full post >>

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 >>

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