In software development; freelancing is supposed to be fun. In it, you are your own boss, you make hundreds of thousands in weeks without having to pay tax!, and everything, from bidding for contracts, to deployment of finished product, can be completed from the comfort of your home. All in all; it’s the 21st century worker’s dream profession.So, why are so many great developers going the full-time job route?Clients! They can make your life miserable by extending the features of an app every day. They can sweet talk you into accepting 10% of the appropriate fee for a project and when you finally grumpily agree; they increase the heat of your hell by putting pressure and threats on you till you get it right-or; you know, get it to work.This article outlines points you must drum into your client’s ears before you agree to make software for them. If all of these points are followed, I believe the client-developer relationship will be much simpler and productive.
1. The Client should Understand the ONE Problem their app is supposed to solve:
Every client…virtually every client that has worked with, or tried to work with me wanted an app that had features like:
- It should disseminate information to all users via push notifications (like Blogger?)
- It should be able to chat (Like whatsapp?).
- It should notify users of like-minded-people around them (like tinder?)
- It should be able to transfer itself from one phone to another (like flashshare?)
- It should have a game for when the user gets bored
- It should have forums where users can create topics and discuss them.
- In fact, (they don’t usually say it this way) It should simply be all the apps I have in my phone right now packed into one super app.
An app like this will fail in the market of course. But most importantly, an app like this should cost billions of Naira, and take a team of hundred programmers about 7 months to complete.
As if this list is not long enough. They usually call the next day to say and ‘larisoft’, the app should also have an alarm clock. I forgot to add that yesterday.
Most clients do not understand the principles of software (i.e. solve one problem and solve it well). They also do not understand how long it took whatsapp to become whatsapp. They have no idea what bugs are. If you hate yourself and accept this contract for any reason whatsoever, you will Never come out of this alive. Yeah! You’d be 80 and still on this software!
You should therefore systematically get them to eliminate everything an app doesn’t need till you arrive at the ONE thing it needs. Stress that you can always add more features with time. Also get them to agree that at least, till you are done developing the features you both have agreed on, any major modifications will be implemented, if and only if you, the developer, agree to it.
2. The Client Should Sufficient Money:
If you are tying to make an app that will become a business, or serve an already existing business, you should know that business requires capital and capital is usually not chicken change.
Software is expensive. If you are dealing with any developer that knows his way around a keyboard, he wont charge you cheap. Make your clients understand that. The developers that will charge you cheap charge you cheap only because they want to learn using your software. If you really want to get it right, you need a senior developer and they don’t come cheap.
It is better to get the right developer now, and pay him well once, than to get a quack now, pay him, and also pay a top developer later.
3. Client should Stash money away for maintenance:
eah! Software is expensive. I already said that. IF you are starting a tech based business, be prepared to hire in-house developers. Do not however think that the in-house developer should be the same person who developed the core platform. For one, if the person that did the core platform is a top notch developer, chances are you wont be able to employ him. Hence, let the top dog create the software, outlining its architecture, and then let medium level developers maintain and extend it.
4. The Client should Expect Bugs and be ready to identify and correct them with me, the developer:
A client once told me over the phone ‘Ah ah! This application doesn’t send me email as expected when I sign up! How can that be? I see you don’t know what you are doing!’
What really happened was that the server we used was forwarding the emails to the spam box. I felt really sad. I mean, am a programmer that is quite sensitive about his work and I managed to write an app that worked exactly as planned and this single error means I don’t know what am doing?”
Bugs are part of the business. Matter of fact, if a piece of software is deployed in 3 weeks time, another 1 week should be spent fishing for and correcting bugs. Make your client understand this.
5. Client should Have patience:
Only newbies make software ‘over the weekend’ except a huge chunk of that software has already been made before. The developer often has to draw up the structure of your app, create the UI design, code according to his specification, and in the process, correct a lot of things, going back and forth till he attains perfection.
Set out a generous amount of time for when the software will be ready. It is always better to say it will be ready in 1 month and then deliver in 2 weeks than the other way round. Also agree on the interval at which you will report your progress to said client. Try to avoid pressure traps like “Everyday”. Every other day is okay though.
Well, these are some of the ways I’ve kept my clients from killing me (tongue in cheek) over the years. Senior freelancers in the house; I will really appreciate your inputs. Especially DHTML…NL’s freelancer of all time