What are the key processes to implement for software development?
Ultimately, one of the most important processes to implement for software development is one of process management. This is not circular reasoning. The most successful software development organizations have an organizational focus on development processes and their constant improvement. Other key processes, as defined in Chapter 10, include:
How would you establish a Test/QA environment?
Before the complete answer, a quick reminder from Chapter 6. While we certainly recommend a QA environment, we never recommend a unique QA function or department. QA is every developers responsibility and having a separate QA function just tends to relieve developers of their daily responsibility for quality assurance.
How would you handle stress testing in this world of networked computing?
Stress testing of web-centric applications is much more difficult than for traditional stand-alone or client-server applications. The only real way to completely stress test a web-centric application is to use an end-to-end application performance testing tool such as Pegasus from Ganymede Software. This tool and others are described in Chapter 15, Software Development Tools.
I just ran the program yesterday and it worked fine, why can't I get it to work today?
Processes that ensure a repeatable test environment and a stable production environment are crucial to the success of any software development project. If program results are different, then either the program changed, the program inputs changed, or the environment changed. A well run test or production environment will prevent a program from being updated without properly notifying any affected parties. Change logs will ensure any changes are easy to track and back-out if necessary. Program inputs, especially from user inputs are more subjective and subject to non- repeatability unless some sort of input event capture and scripting is done. The most difficult condition to keep non-variable in a complex test or production system is the environment. Environmental conditions outside of the user's control or notice, such as network load or CPU load may produce different results if the software has not taken the possibility of these environmental variables into account during program design.
My new software project is starting next month. I have budgeted for a headcount of 25 developers. Should I bring them all aboard the first month?
Absolutely not. The most important part of any software project is the system design phase. Before you have any developers writing code, you want to have your system design and software architecture firmly in place. This is the task of your software architects. Even the largest software development projects rarely call for more than three software architects and throwing more people at the problem early on will only hamper the effort by making communication more difficult. Of course this is not to say that in an iterative development environment you won't have one group of developers writing prototype code while the architects design the final system.