Never use a shared database server for development work.

Like many conveniences in software development, a shared database is a tar pit waiting to fossilize a project. Developers overwrite each other’s changes. The changes I make on the server break the code on your development machine. Remote development is slow and difficult. Avoid using a shared database at all costs, as they ultimately waste time and help produce bugs.

2010年9月15日 · Shafiq Alibhai

One Perspective on Improved Software Quality and Reduced Risks

We talk endlessly about improved software quality and reduced risks, but deployable software is the most tangible asset to “outsiders” such as clients or users. The importance of this point cannot be overstated.

2010年9月15日 · Shafiq Alibhai

Note to Self – Project Management

You can manage scopes of time, cost, and quality much more effectively by basing your decisions on working software with actual feedback and metrics, not just task items on a project schedule.

2010年9月9日 · Shafiq Alibhai

Perl – system load

To find the system load use the following perl snippet : System load of last one minute : my $system_load = exec('<a class="zem_slink" title="Uptime" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uptime">uptime</a> | awk -F "load average: " \'{ print $2 }\' | cut -d, -f1'); my $system_load = qx('uptime | awk -F "load average: " \'{ print $2 }\' | cut -d, -f1'); System load of last 5 minutes : my $system_load = exec('uptime | awk -F "load average: " \'{ print $2 }\' | cut -d, -f2'); my $system_load = qx('uptime | awk -F "load average: " \'{ print $2 }\' | cut -d, -f2'); System load of last 15 minutes : my $system_load = exec('uptime | awk -F "load average: " \'{ print $2 }\' | cut -d, -f3'); my $system_load = qx('uptime | awk -F "load average: " \'{ print $2 }\' | cut -d, -f3');

2010年9月7日 · Shafiq Alibhai

Gearman – Can't call method "syswrite" on an undefined value at /usr/local/share/perl/5.10.1/Gearman/Taskset.pm line 202.

If you get the following error while running the client code : Can’t call method “syswrite” on an undefined value at /usr/local/share/perl/5.10.1/Gearman/Taskset.pm line 202. … then change this $client->job_servers('127.0.0.1'); to $client->job_servers('127.0.0.1:4730'); thats it ! 🙂

2010年8月31日 · Shafiq Alibhai

Completeness of the Requirements Set

A set of requirements is complete if and only if it describes all significant requirements of concern to the user, including requirements associated with functionality, performance, design constraints, attributes, or external interfaces.

2010年8月18日 · Shafiq Alibhai

Requirements Gathering

Just as there is no one right programming language for every application, there is no one right way to develop the more detailed specifications. Different environments call for different techniques, and the requirements managers and requirements writers will probably need to develop a mix of skills suited to various circumstances.

2010年7月31日 · Shafiq Alibhai

Software Development Process

The team’s development process defines who is doing what, when, and how. In the waterfall model, software activities proceed through a sequence of steps, with each step based on the activities of the previous step. The spiral model begins with a series of risk-driven prototypes, followed by a structured waterfall-like process. The iterative approach, a hybrid of the waterfall and spiral models, decouples the lifecycle phases from the software activities that take place in each phase. No matter what model you use, you must develop at least one early prototype to get customer feedback.

2010年7月20日 · Shafiq Alibhai

Why can we not allow for a process that creates detailed requirements and design information for each feature so that we can create more meaningful estimates?

Some people may think that the best way to estimate a project is to have detailed requirements and design information for each feature. They may argue that this is the most professional and accurate way to approach the problem. However, I disagree with this view. I think that it is more important to be able to make quick decisions about the scope of the project without spending too much time and resources on detailed estimates. Why? Because detailed estimates often turn out to be wrong or irrelevant later on, and they create “wasted inventory” that could have been used for more valuable activities. I’d suggest you only do detailed estimates when the schedule allows for it, and when you have a clear understanding of the value and priority of each feature.

2010年7月19日 · Shafiq Alibhai

Project Scope and Success

In many projects, in order to provide a reasonable probability of success, it will be necessary to reduce the scope by as much as a factor of two.

2010年7月17日 · Shafiq Alibhai