I work as a lone programmer on web-development projects(front and back-end) - I have completed a couple of projects, so I'm fairly new at this, I have read and tried a few approaches and reached a way of going about them. The question and my description is fairly long so please be patient.
What I am looking for, is :
1. Preparation/Planning that would be typically done before you start development, once you know exactly what needs to be built.
2. From your experience please give me feedback/suggestions on the process I follow currently.
The clients I work with are generally startups and have limited budgets so I can't charge them on a per/hour basis(I think that is how large companies usually bill their clients[on man/hours] for development projects) and have to work with a fixed budget.
This is the process I currently follow :
1. Gauge the scope of the project and try to understand what they are trying to accomplish in a couple of meetings.
2. Give them a rough ball-park figure with a quotation that describes in general what they expect to get from the project, I try to be specific about features, but, I'm not putting too much time into this because I know the client may just be asking around for quotes, and not actually convert.
3. I follow Jeff Atwood's suggestion for payment & work :
15% payment - Upfront before starting any work
During this phase HTML mockup of the end website is made, a flowchart(with yEd) describing the website in as much detail as possible and a document that mentions other features that are not there in the flowchart. This is done by going into all the details of the project and finalizing the bits that will fit in and stuff that is too much work to implement for the agreed price. Because specifics are not discussed earlier, portions of these are also more or less a negotiation on what they will actually get. Because this is a fixed budget project, there needs to be fixed requirements, else, my price keeps going down as more features are added.
A color scheme, design wireframe and design PSD is also finalized.
35% payment - Start Development
The project is fixed, begin development. I Host the site on my server, where the client can access the front-end, but, doesn't have access to any code.
30% payment - Shift code to client's server/give client the server access details
Make the site live.
20% payment - Couple of weeks after the site goes live, once all the bugs have been fixed.
1. Once you know exactly what you are going to build, what sort of planning would you do before you begin coding?
2. From your experience, what parts of the whole process would you do differently?
Great points for discussion!
To qualify - I work in BIG web development projects in the defense industry. We generally have a team of 10-40 people supporting a single customer, projects last years, and the customer has both money and high demands. So mileage may vary - you don't want to overplan!
1 Once you know exactly what you are going to build, what sort of planning would you do before you begin coding?
This is after the 15% section, at the start of the 35%, right?
2 From your experience, what parts of the whole process would you do differently?
I wouldn't over plan. I'd focus my planning work on getting things done - like build environment, server, testbed, CM - and spend only a small amount of time planning an architecture, picking tools, and deciding where to start. I feel like no matter what, the amorphous planning stage always involves a lot more time wandering in a desert of cluelessness than it really should.
If you're dealing with fixed fees and customers who are not making technical demands (such what language or APIs you use), I'd plan in 1 item that is always a push for you, technically. Just 1 and keep the rest the same. I think on every project, you want to broaden your skills, but you don't want to go so wild that you aren't working in anything you know or understand well.
External links referenced by this document: