Tools of the Trade
- Visual Studio
(C#, Visual Basic) - Microsoft Expression Web
(PHP, HTML, JavaScript, CSS) - Netbeans (PHP)
- Eclipse (Java)
- Microsoft SQL Server
- Sybase SQL Anywhere
- PHPMyAdmin
- MySQL Administrator
- CPanel
- Web Host Manager
- Microsoft Windows
- Ubuntu Linux
Good Software Clients
A good client is not just a client with money to spend. A good client is one who is always present to answer questions and one who is actively participating in the testing of the product at the end of iterations. This ensures that the client receives exactly what they need to achieve their goals. The client must be just as committed to the success of their project as we are.
Requirements Gathering
In this step we interview the client and try to determine with the precision of a lawyer what the goal of the project is. It is essential that we nail down the features of the program. Once the features have been determined they should be prioritized from most desired to least desired.
Release Planning
This is the stage where we decide what features will be implemented together. This is done from most important feature to least important feature. Once the features are determined a deadline is set for the first iteration.
The Cycle of Iterations
This part of the process is repeated until all of the client's desired features are complete.
- Planning and Design -- We draw out (usually on actual paper) what we are going to do and how we are going to accomplish it. We do a complete design before we write one line of code. We also must make sure our design scales well with previous iterations or an existing code base if we are not starting from scratch.
- Implementation -- This is the step where code is actually written. Depending on the project we may work in teams amongst ourselves or with in-house developers of the client. Pair programming is a successful approach to implementation but sometimes it's best to work alone when deep concentration is required.
- Testing & Bug Fixes -- All software has bugs and anyone who tells you otherwise is a liar. The most important part of this step is not finding logical errors in the code but making sure that all of the features meet the client's expectations. This is why it's so important that the client be available to assist with this step.
- Delivery to Customer -- At this point you should have a complete working program with the features that were implemented during this and previous iterations. You should be able to completely use those features independently of those which have yet to be developed.
- Determine Next Release -- We start the process all over again. First we re-examine the priorities of the remaining requirements, choose the most important to complete next, and then set another deadline.
Ongoing Support
Some bugs escape the testing phases and will need to be fixed. The client may hire new employees which need to be trained on the software. New features may be needed or existing ones may have changed. All of this is part of support.
Data Driven Business