Three steps to success
With the onus on you, the supplier, to be honest, open and trusting, any client who abuses that trust needs to be fired. This is nasty medicine, which I find extremely difficult to apply myself, but part of my plan for the future is to wean ourselves off bad clients (not least because although their budgets may be large, we rarely make profit from that sort).
Suppliers have to be committed to the success of any project they take on – after all, they’re being paid for it. However, the most common cause of missed deadlines is lack of commitment from the client. In practice, this means delays in getting comments and sign-offs, or (and this is a real project-killer) getting sign-off from the wrong person. You’ve probably been there: after working on a project for many weeks and getting sign-offs all the way, just as you’re about to submit your final invoice your primary contact in the client’s organisation tells you the MD has final sign-off. And said MD, feeling a need to flex his/her indispensability muscle, asks for a raft of changes, or in extreme cases sends the project manager back to the drawing board. Deal with this problem at the start rather than the end, by stipulating exactly who is going to have sign-off in advance.
Projects with effective communication, trust and commitment are far more likely to succeed in terms of quality, timescale and cost than those that don’t, but such factors are hard to quantify when calculating the contingency margin to allow for a client that lacks one or more of them. Let’s look at a concrete example.
A couple of days before writing this column, I met with a relatively new client for whom we’ve completed one piece of work so far. This client has a marvellous idea for a website which I can’t, for obvious reasons, go into detail about here, but which involves building a data-driven site that allows users to consolidate various data sources into a central place. There are the usual requirements for multiple user levels, complex data storage, integration with other web services and reports. This is all fairly standard stuff, with a few unusual challenges, and is the sort of work we love doing. The deadline? It goes to pilot in four working weeks, and we don’t have a specification, design, copy or details of the web services we’ll be working with. I estimate we’ll need 15 working days to do the development work, assuming that we get all the information we need in a timely fashion. Given that there are only 20 days available for development, that’s a tiny contingency margin.
Since we’ve already completed one project for this client, I can reasonably judge how the project will score when it comes to communication, trust and commitment, and as it happens the client scores highly in all areas, which is the only reason we agreed to take on the project under those conditions. With our worst clients, I’d expect the project timescale to be at least three times as long (if it was ever finished at all). Good clients like this don’t come along every day and they’re worth their weight in gold. Working with clients such as this is enjoyable, fulfilling and profitable, and your relationship with them is likely to last a long time if you treat them with the integrity, honesty and commitment they deserve.
Developing in PHP with OOP
When you’re working to a tight deadline you need to squeeze every ounce of efficiency out of your working practices, and two areas that can have a dramatic impact on your efficiency are coding practices and your development environment. From version 5 onwards, PHP has become a fully object-orientated programming language (yes, I know that it doesn’t support namespaces, but I don’t consider that to be a significant issue if you organise yourself properly). If you’re already an experienced PHP programmer, the chances are you’re most familiar with using PHP in its more traditional form as a procedural language, either embedded in web pages or stored in separate code blocks. If you’re new to PHP you’re also likely to begin in this way, because most learning resources focus on this approach.