Created my first Git repository

Just followed the instruction here:

This is a very good way to learn several basic idea in the software development process:

1. Version Control

Protect developers from unnecessary distrations

These are my favorite quotes from the book, Debugging the Development Process, from Steve Maguire:

"Any work that does not result in an improved product is potentially wasted or misguided effort."

"I've found that groups regularly get into trouble because programmers are doing work they shouldn't be doing. They're spending too much time preparing for meetings, going to meetings, summarizing meetings, writing status reports, and answering emails."

"The project lead should ruthlessly eliminate any obstacles that keep the developers from the truly important work: improving the product"

Automated Testing - what to be automated?

Automated Testing helps improving QA's productivity.  It automates the jobs that, otherwise, need to be done manually.

What are the jobs to be automated?

What are QA's jobs?

QA identifies the tasks that the users of the software will do.  The QA executes the tasks with the assumptions that the software will be used under certain circumstances .  The QA checks if the tasks can be done and whether the results are expected.  Before QA performs the tasks, the QA identifies the expected results, which are sometime called benchmarks.

Requirements for a software source control and version control system

You can keep the software codes in a local environment.  You can periodically back up your files and you may not feel that you need a source control system.

Here are the reasons why we need a source control system and what a source control can do for us:

Foolproof or Poka-Yoke in software development

I learned this concept when I studied Quality Control in college.

This is considered part of the TQM (Total Quality Management) practices.  Each employee should contribute to design a foolproof system which can ensure that there is no mistake can happen.

The idea is that we do not rely on the individuals to be careful when they do not need to be careful.  The system should prevent or reduce the likelihood of the error from happening.

A foolproof system  takes out the human errors from the equation.


I think that the concept can be applied to software development as well.