Are you working on a web project right now? Have you hit the wall working with your developer? It has happened to us all, on both sides of the fence, and after 2½ years in the business I have some wisdom to share.
- Writing software is a creative endeavor. It is effectively like writing a book, but for a machine to read. It just needs a special language and has lots of grammar rules must be followed. Have some respect for your developer and you will get the best results.
- Developers cannot code when they are upset. This is important to understand. If you wrote a novel on your way to work, while stuck in traffic every day, nobody will want to read your book at the beach. Why? It would just not be that laid-back friendly book you want to read at a beach. The same goes for software. Making a dev angry doesn't help get the code flowing. Give your developer space when things flare up.
- If you know how to do it, you don't need a dev. Telling anyone how to do their job is generally a faux-pas in any situation but lots of clients love to do it with software. Focus on constructive feedback. Things that help everyone progress through the project.
- "That should be easy" Just because a piece of software or a practice you want to emulate is out there in the wild does not necessarily make it easy to setup in your environment. Talk to your developer about how long things should take and ask for alternative ideas if you need things done sooner.
- Focus on your goal, not the implementation. What do you want your users to do? It is better to approach a developer with an idea that they can find a way to implement. If you dictate how the implementation should happen, which modules, what type of code, etc, your project will likely take longer and cost more... unless you are in some sort of privileged position to understand how all of those elements work together (ie, if you are also a developer working with a sub-contractor).
- Formalize your requirements up-front. There is nothing worse for a software developer than a client who at the very last minute decides that they wanted something completely different. This sounds absurd but it happens. Get a statement of work from your developer and make sure everything you need is on it. At the start. If it isn't, do not be surprised when components are missing or add-ons get billed out differently than the rest of your project.
- Do not lie to your developer. This is just basic. If you lie to your developer it will eventually catch up to you. Due to the creative nature of programming breaching trust can have a catastrophic effect on your project. Respect the professionalism of your developer and you will get the same in return.
Any other suggestions? If you have some that I feel are worth publishing I'll add them to the list.