3 Rules of Product Development. Prepare 2 re-work.

It is really hard to solve a problem right from the first attempt in software development. It never happened in my life. However, I didn’t completely fail either. I learn 3 rules:

  1. If you don’t talk to users, you will provide wrong solution in 100% of cases.
  2. If you just talk to users, you will provide wrong first solution in 100% of cases.
  3. If you talk to users, prototype, iterate and prototype again, you have a good chance to solve the right problem from the first attempt and the solution will be good. But still some re-work will be required after solution go-live.

In a nutshell, prepare to re-work. It is inevitable. 

What OOP Isn’t

Benjamin wrote an interesting post in OOP: What OOP isn’t

I particularly like one phrase:

Bad programmers have proven to be surprisingly resourceful at writing bad code given virtually any programming idiom

So true.

I personally think that OOP hype is gone and we are close to the moment when it will be as natural as functions and variables. We have enough knowledge to use it right finally, but still many people are failing to get it and buried by classes hierarchies.

Chasing silver bullets and big/easy leverage points is human nature, I suppose, especially in business. And I think the western world equates certainty with survival, or at least success. Uncertainty seems the path to failure, a sure ticket to the great smelter. No wonder most people cling to any amount of certainty when the pointers of complexity science are all going the other way. In western thinking, people want the last chord to resolve. Newton resonates. Simple formulas are reassuring in a world that’s revealing its complex nature.

Chris Jones

Learning and Software Development

I am writing quite long article about learning and software development now. Should be ready in 2-3 days.

I believe, learning is a key attribute of a good software development process. Process that empowers learning will work, process that impede learning will fail.

Another quote 🙂

A team of generalists with some specializations can create a better software than a team of highly specialized people. It is not obvious and we need to evaluate this assertion.