How to approach a custom development project
I’ve developed many custom solutions for clients over the years. Some big, some small, and many in between. Here are some of the things I’ve learned that help new projects go smoothly. I use FileMaker as my tool, but these things apply no matter what technology you’re using. If you’re considering a brand new custom development project, keep these things in mind to help make it a success:
1. Don’t limit yourself — in the beginning.
When doing initial requirements, include all the features you think you might like to have, as if you had unlimited time and budget. This helps the developer to know what direction you’re headed in, even if you later decide to build only a portion of what you thought up.
2. Pare down to the essentials.
Once you’ve finished with the blue-sky thinking, go through the list and flag for development only the items you absolutely cannot do without. Tightly focused, incrementally built solutions are easier to manage, develop, and integrate than immense, whole-scale systems. You can always add onto a system once it’s been implemented, but you need to implement it first, not be constantly in development because the initial feature list is so long.
3. Set SMART objectives at the beginning of the project.
SMART objectives are Specific, Measurable, Achievable, Realistic, and Tangible. Features are one thing, but objectives are slightly different. Objectives are what you’re hoping the system will do as a result of all the features it has. Be concrete with your expectations. Set specific goals and write them down. When they have been achieved you’ll know the project has been a success.
4. Beware the “flashy flashy!”
New technologies are fantastic, but don’t get too distracted by the newest “something” that just came out. A new feature is no good if the foundation it’s built upon is shaky, or the reasons for including it are vague. Get the basics solid, and then you can always add a cool new feature later, once it’s clear how it fits into the rest of the system. On the other hand, if a new way of doing something is just the thing to solve a problem that’s been keeping you up at night, then by all means, dive right in!
5. Don’t rush.
Quality systems take time to plan and build. Projects should move steadily, but be realistic with your expectations. If you set artificial deadlines, you may find that decision-making is too rushed do proper testing, or to think through implications properly. As developers we do our best, but we can’t think of everything. There should always be enough time to have a solid “beta” testing phase before the official roll-out. You’ll have a more effective product as a result.
6. Don’t try to figure everything out yourself.
Instead, rely on the developer’s experience. If I’m developing a system for you, tell me the end result you want to achieve, and I can probably give you one, two, or a few ways of getting there. I’ve often solved a similar problem in the past, or have access to resources to help me decide the best way to approach it. I’ll look at your issue from different angles, consider how the solution will fit into the existing system, and give you some options. That’s what I’m here for!
7. Talk to and educate users.
Talk to users about what the new system is expected to do. Ask them what problems it absolutely must solve, and listen to what they have to say at every step. Once implemented, it takes some time for users to get used to a new process, and for them to give feedback on what is working and what could be improved. It’s normal to have a transition period in the beginning as people get used to the system and leave the “old ways” behind, but if users are included from the start, they are more likely to behave like cooperative partners rather than complaining adversaries.
8. Engage in regular, two-way communication with the development team.
While the project is ongoing, it helps to keep things on track by having regular discussions among yourselves and with the developer to test features, review progress, discuss issues, and resolve bugs. Regular testing and communication keeps development humming when questions are answered–and problems reported–in a timely manner.
9. Control changes.
Resist the temptation to add or change features once development is under way. Changes can easily mushroom out of control, adding cost overruns and delaying deadlines. Even small changes can eat away at the schedule or have unexpected consequences. It’s better to hold off on any extras until you have fully implemented the original requirements. You’ll be happy that the original objectives were successfully met, and you’ll be better able to judge if changes are really required after you’ve had a chance to evaluate the implementation of the initial system.
10. Consider it an investment.
Consider your custom development project an investment in the effectiveness of your business in the long term, not as a one-time expense. You may have one set of needs today, but as your relationship with your customers grows and your business develops, you will want and need your data management software to grow and change with you. Your data supports your most valuable relationship–the one with your customers–so it makes sense to invest in it periodically to make sure you’re getting the most out of it you can. Plus, you probably had some good reasons for things on your blue-sky list that you really do want to get around to eventually.
A good custom developer will team up with you to help you achieve your goals, not just for today but into the future. You rely on their expertise to help you through the challenges of designing, developing, implementing, and maintaining your custom solution. Setting clear, manageable goals, including your users from the start, having realistic expectations, and keeping open lines of communication will help it all run more smoothly, and get you achieving your goals that much sooner.
Is there a great tip you’ve learned about managing software projects you’d like to share? Let me know in the comments![clearline]