Software Creation Mystery - http://softwarecreation.org

Archive for the ‘Productivity’ Category

The Secret of Building Effective Software Systems

I can’t wait to share this simple secret with you right now.

The Secret: Effective Software Systems are the systems that easy to understand and operate with human brains.

Programmers are more productive with effective software systems. Programmers can better learn and grow these system. Programmers have less problems, work faster and make better decision with them.

Now, you can avoid spending time reading this post if you already know this secret and you know how to avoid building the software system that:

  • almost impossible to understand in reasonable time
  • has confusing and convoluted swamp of logic and structure
  • scary to change as nobody has any clue what will be broken, but sure that it will be broken


If you are still interested, lets find out what makes software systems effective.

Software Development is a pure mental endeavor (except typing on keyboard) that includes 3 main activities:

  • Understand - learn and know system concepts and implementation
  • Evolve - build, modify and support growth of the system ideas in the code
  • Share - communicate and exchange ideas about the system


Programmers should care about 7 areas to make the system better suited for our brains:

  1. Knowledge Creation and Retention - parsing, memorization and comprehension of the system ideas
  2. System Organization - elements, relations and structure in the system
  3. Sustaining Emerging Order - support evolution of the system and gain control over chaos
  4. Minimize Noise and Purify - avoid adding unnecessary stuff to the system
  5. System Discovery and Learning - making sense of the system
  6. Mental Models - our internal explanations for how things are working in the real system
  7. Shared Knowledge - ideas exchange, reconciliation of opinions and creation of mutually enhanced knowledge.

Read full post >>

The Programmer’s Brains At Work: Understanding The Software System

“The important thing is not to stop questioning” - Albert Einstein

A typical programmer faces thousands lines of code, huge number of details and millions of situations and states during the software system execution. A programmer should understand the system, know how to modify it and support knowledge about the system with explanations, justifications and answers. How can a software developer gain, maintain and operate this knowledge and make sense of these volumes of information and complex logic changing every day?

The ways how our memory works could give us few hints.

Our Human Memory Architecture

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

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