When you go to accept a contract and the client has already estimated the time that the feature addition will take, and expects you to sign off on it, do not sign.
It is very important that you are involved in the estimation of the project. You need to sit down with the client for a day and break the features down into small, manageable chunks. Only then can you provide an estimate - being careful to stress it is an estimate only.
Why? Because clients do not know how impenetrable their code is. They don't understand that their proprietary storage engine will set you back three weeks trying to learn it. They don't understand that their codebase doesn't contain enough documentation to set up their product in your environment. They don't understand that their spec sheets do not contain information that is easily interpreted by a programmer with no domain knowledge of their business.
I have unfortunately made this mistake once before and I will never make it again. Realise that it could be difficult to recognise this issue if you are under financial pressure and want to sign something quickly, but it is so important to avoid getting involved with clients in this way. Explain to them the correct way of doing things and when you're sorted out with proper estimates and spec sheets only then should you sign the contract.
... To Modern Software Development is a concise list of technical points for a software house to implement. It has a basis in Agile methodologies but doesn't preach a certain one.
Modern is being proactive and efficient. It is being prepared, having backups, examining information, deploying with minimal mistakes and being able to recover and review when mistakes are made. Modern is being well-tested and writing maintainable code. Modern is being able to release regularly and easily.
Django Python 960.gs Git Vim NetBSD Nginx
The author is a software engineer living in Australia. He sux at guitar, loves camping, doesn't like cake, does like coffee and is a lazy home brewer.
Help
Latest entries
*BSD Agile Apache Apple Athletics Beer Best-Practice Censorship Comedy Cool Crosswords Deployment Django English Exim Firefox Git Hardcore Health Interface irssi Javascript Jira Languages Linux Makefile Markdown Mathematics Mobile Broadband MySQL NetBSD nginx Nokia OSX Perl Photo Privacy Python Rant Requirements rsync Ruby Shell Slackware SQL SQLite SSH Standards Subversion Testing ThisBlog Vim VMWare (Fusion) VPN WDTEM X Yum zsh
Perldoc Output
Yum
Possum
Git's Index
Jira Project Keys
The Coffee Shop
Git GUI
It is more important...
Questioning Unix (and Other) File Times
The Frog King Photo
Rain Cloud Photo
rsync
Timezone
utf8 in your Perl
Theatre Ceiling Photo
Some problems are so complex...
Colours in your PAGER
zsh vared
zsh magic-equals and double-star
Funny Tweets
ChoppingBoard, Project365, RageQuit