Tuesday, November 27, 2007

"Classic Mistakes"




Without knowing it, your company, department, or project can pick up bad habits. Some of these are so predictable they are known as "classic mistakes". I had a manager once who without fail would mis-manage a project, er, several of them, to the point that when faced with missing a delivery date he would hire many contract developers (this is Classic Mistake #5) to pull his fat out of the fire, but it never worked.

The legendary Steve McConnell's excellent list should be on every manager's office wall, predominantly displayed so that their boss can read it, since project managers are often asked to come up with "creative solutions". Knowing what the classic mistakes are, in advance, helps one to avoid them.

Thursday, November 22, 2007

Project Success Basics


Large sums of money are spent along with many man-hours to establish frameworks and processes that will give a software project a fighting chance of success.

However, there are fundamental (and less costly) measures that should be put into place first, as recommended by the Standish Reports:

The project manager must have the full backing of executive management. This requires a qualified executive decision (selecting the right project manager) by someone who knows the nature and abilities of their project manager, and a continued and close interaction with them during the project.

The business users must be involved during the entire project. Whether or not they give clear cut specifications, change their minds, etc., a sure way to hinder the success of a project is to lose touch with the people who came to you for assistance in the first place.

Specifications are clear-cut and achievable. At times it is all too easy to push fuzzy and unreasonable specifications over to the development staff, and then watch them fumble. Management must insist that the requirements are clear, and reasonable.

Responsibility and accountability: Each team member must have a clear understanding of their roles and duties. Perhaps most importantly, the project manager must be given the authority to manage (see the first item in our list), since they will certainly get the blame if things go wrong. The project manager cannot be someone who just keeps a project diary or maintains the schedule.

These are just a few of the fundamental principals that must be followed in all projects, regardless of the management software and tools that are used.

Wednesday, November 14, 2007

The Birth of Agile Development


Up until around 1980 or so, many software projects were carried out by what is called the "waterfall" approach: painstaking effort spent eliciting user requirements, publishing design documents, and coding to the specification -- often using COBOL.

The problem was that it was a rather slow process: no one can ever rattle off all of their requirements, accurately, and by the time the code was written the requirements may have genuinely changed. Using a language such as COBOL tends to make team write many lines of code.

In the late 1970's and into the 1980's, there was a movement of "fourth generation languages". The most notable of course was NOMAD2, and to a lesser degree FOCUS. NOMAD2 had a highly sophisticated DBMS, high level programming language, extremely rich set of functions, and the best report writing language ever seen. Corporations such as Bank of America and Chevron were early adopters of NOMAD2 and each had millions of lines of code in it.

This enabled developers to take the specifications and build a working prototype rather quickly, which in turn presented something visible and tangible to the user as opposed to having to rely on written documents and sketches of screen layouts. This process in turn fed back into a refinement of the specifications, and a better deliverable done more quickly than if previous methods had been used.

Perhaps without knowing it, the "agile" methodology had been born (this will, I know, contradict the belief that it was born at a ski lodge in Utah). 4GLs, as they were known, were used extensively in the '80s, but their use waned with the explosion of client/server technology (thus moving away from mainframes), Windows, event driven programming, and the rise of SQL as the de facto query language (which has yet to equal 25% of the abilities found in NOMAD2).

Like many worthy software products, most 4GLs did not make the transition to the Windows platform and we ended up with lots of C, C++, and VB, along with new DBMSs, most notably SQL Server and Oracle. In some ways we went back to 3GL coding, but with much more complexity, and so we rewound and the search for a "better way" got fresh legs.

Too often one can become part of a religious war of waterfall vs. agile, rather than focus on what practices will work best for the project and the team available. These thoughts will be explored more in future articles.

Sunday, November 11, 2007

Project Manager Selection


Many times the success of a project reflects favorably on senior management, while the failure of the same project will be blamed on the project manager. Without question the role of project manager is critical, but so is the quality of senior management's decision on which manager is being matched to a particular project and development team.

Equally important is whether a project manager has been given the authority as well as the responsibility of managing a project. If a manager has little or no authority to enforce coding standards, source control, unit testing, or to resist scope creep foisted upon him by users or (even) senior management, then this manager can hardly be held accountable for failures in these areas.

Senior management must not only correctly select the right manager for a project and the associated team, they must make it clear that their choice of manager has their support, and the authority to run their own show. Selecting a manager that has never done at least moderately agile development may not be the best choice when managing developers who have done nothing else. But, selecting a manager that has done waterfall and agile may be a very good choice since the manager is in a position to educate the development team.

There are a number of key points for senior management to consider when assigning the manager. A project manager is not there just to take notes during meetings and send out updated status reports, or just add more detail to the project plan. A project manager is there, at least partly, to ensure that quality deliverables that meet the business specifications are built, on time. Many times this must be done while harmonizing with developers who are temperamental, for whatever reasons.

Clearly, a large burden is put upon senior management to select the right manager for the project and personnel.