With 40 years of history of the software development industry, it’s a pity that many developers still do not understand the real basics, the psycological background under the software development.

One may make sure that this is true not only by looking on real life stats of software projects (half of projects are either canceled or out-of-bonds), but talking to their roommates, colleagues, CS students.

I do a software development course and only half of my students during first setup lecture gives the correct answer on

What you would start your software project with?

Even with simplest model of software development project: Single Customer, Single Developer…

Ok, my students are not brightest MIT or CalTech guys, but one half?..

A software project is a project. Per wikipedia and PMI definition that means that:

  • it has a start
  • it has an end and
  • it is aimed to creation of something

In other words, each and every software project has a goal.

So why not use a psycological wisdom, that’s public and available for ages, to assist ourselves in that goal achievement process?

In the psycology of an individual, the goal achievement is one of most developed areas. As the matter of fact, our life is a goal achievement process that consists of reaching goals of the smaller scale.

Since there is a quite notable distiction between reaching a goal and a failure to reach it, if I’m interested to make it, I may wonder:

  • What are necessary components of a reacheable goal?

Well, it is easy! It is not a rocket science, just google for “well formed goal“. At time of writing this, google gives the “Well formed outcome” wikipedia article as the third result.

The basic criteria of well-formed outcome are:

  1. Positiveness. That means that any project aimed at, say, “prohibiting spam and viruses from my desktop” is dead from the beginning. You simply can’t make negative. Just try to make a negative proof that you don’t drink congac at mornings.
  2. Be specific. The most important trait for the software development goals. Know what you’ll see, hear, feel when you’ll reach the goal. Be as specific as you can. And even more. Use all sensory systems to define your goal. Being not specific enough is the first cause of goal failure.
  3. Be possible and achievable. One may argue that almost anything is achievable. In practice, this means that you, who strives to reach the goal, think that it is possible right here and now. Also see the next condition:
  4. Have all the resources. Have a PC; have an Internet connection; have a power, both electrical and personal to do a project; have a knowledge and skills necessary; have good communications with a Customer, et cetera, et cetera. Nearly everything might be a resource (including this checklist), which you may have or may have not. To my experience, not having enought resources is the second most frequent cause of a failure to reach a goal.
  5. Have well-defined time frame. No, Mr. Customer, be ready by yesterday is not a well-defined time frame.
  6. Be ecological. You, who work on reaching the outcome, please know what it takes and what it leads to. Yes, making a million via robbing a bank might be a well-defined goal. But only if you accept the cost and the consequences of such behaviour. Me - not.

The machinery behind the well-formedness is just the Nature. Human brain, from the cortex till the spine is aimed at reaching goals. The whole evolution from bacteria to trillobyte to homo sapiens is a history of reachin goals. If somebody missed a goal - he was soon to be a dead meat. So literaly every human (I don’t know non-human software developers, if you know - please, let me know) has an exceptionally powerful goal reaching mechanism inside.

To me, a software development project is a translation endeavour. A Developer translates Customer’s ideas into machine language. The criteria set out above are just an instruction for translation of vague intentions to a something that our subconsious understands and trained to do.

Why not make the first real step necessary to reach the goal - define it well?