Taking on a large project can be both exciting and intimidating, particularly if you’re a solo developer. Big builds can be a lot of fun and serve as great learning experiences. At the same time, you have to keep the project moving forward, or risk missed deadlines and burnout. Below are some tips to help you stay organized and productive, whether you’re working individually or as a team.
1. Make Your Contract Rock-Solid
When dealing with clients, issues like scope creep, late payments and deadlines are always a concern. And what may seem obvious to you may not be clear to your client. To avoid hurt feelings, delays and financial troubles, your first precedence should be establishing a thorough, firm, but fair written agreement.
A good contract protects both you and your client. In addition to general terms and conditions, your contract should enclose specifics about the project: payment schedules, due dates, deadlines and consequences for missing those deadlines, cancellation policies, guidelines regarding intellectual property and project scope. You can find many sample contracts on the web, but there’s no substitute for consulting with an attorney. When dealing with the security of your business and your livelihood, the expense is justifiable, and should be intended in your business overhead.
2. Have a Well-defined Road Map
One of the necessary supplements to your contract should always be a project road map. It should outline all of the project features as methodically as possible, and establish the general plan for project succession, from research all the way through deployment.
To start, write out all of the features in outline format. It helps to break them down into groups, such as “Account Administration Features” and “Inventory Control Features,” for example. Keep refining the outline until you’ve defined precisely what is predictable and what needs to be developed.
Next, break the project down into different phases, such as research, design, development, testing and deployment. For each phase, state its goals clearly, and define where the project should be when the phase is completed. Have your client sign off on the phases, and include this document with your contract. You may want to make a second copy of this road map to include more technical details, such as technologies to employ and methods to implement each feature — but don’t change the scope unless your client signs off on the changes.
3. Establish a Style Guide
Whether you’re working alone or with a team, taking the time to establish a style guide for your project will help you maintain constancy throughout. Furthermore, when the project needs updating six months from now, you’ll be glad you made the effort.
There are two types of style guides you should consider: a visual guide and a coding guide. Keep in mind that either or both may concern to the project. The visual style guide should contain information regarding fonts, colors, branding and any other notes on visual appearance. You should also include a few examples of common elements, such as headers, forms, body content, sidebars and menus. While you may never need to go into such detail, the Skype Brand Book is a great example. The guide provides a great presentation to your client, a tool to help them understand how the project will ultimately look and feel. Review the established style with the client, and have them sign off on the look. Refer back to the visual style guide often during your own work to make sure you’re adhering to the set guidelines.
A programming style guide needn’t be project-specific. It may be as simple as following an existing style guide, such as the Zend style guide. You don’t need to start from scratch here, but you need to be consistent. Having a clear set of guidelines will help any developers who may come on board later.
4. Take Time to Research, Plan and Test
When developing a new project, mainly one that’s interesting and exciting, people have the temptation to dive right in and get to work. An initial lack of proper research and planning can have detrimental effects, particularly for larger projects. Take the proper initial steps and spend time researching, diagramming, reading through source code and organizing your thoughts. It will end up saving you time and money down the road.
5. Document As You Go
If you’re like most developers, you cringe at the thought of writing certification. Taking the time to document something, especially when it seems clear at the time of creation, feels like a waste of valuable time. However, years from now those thousands of lines of source code may not make almost as much sense.
Furthermore, programming styles and skill develop over time, which can make old code hard to dive back into. So take time to document your code as you go. Make it as intuitive as possible by using descriptive names and reasonable development. As a good rule of thumb, you should never need to document what something does, but make notes in your code that explicate a feature’s purpose and function. Also note any dependencies that it either relies on or creates. Stopping at the end of each new feature and taking the time to draft some end-user documentation is a good idea as well. This will make it much easier to train your client on the software, and will also serve as a good way to grasp any usability issues or features that were fortuitously omitted.
6. Use Version Control
This should almost go without saying, but many solo developers don’t use version control for their projects. For a large project, this basically isn’t an option. A good VCS (whether you choose SVN, Git, Mercurial or some other system) almost eliminates the opportunity of accidentally deleting or overwriting code.
In addition to providing an invaluable safety net, commit logs also help you track your progress. And the aptitude to branch, fork, and merge your code gives you the plasticity to testing with different methods of feature implementation. You can also purify and fine-tune your software’s presentation without the risk of breaking existing code. Finally, it simplifies distant backup and exploitation to testing and production environments. These days, version control should be considered an necessary part of your growth, mainly if you collaborate with other individuals.
7. Take Thorough Meeting Notes
Whether you prefer to use a laptop or a spiral-bound notebook, take notes when you meet with your client and other collaborators. Otherwise, you may not retain that minor detail discussed during the meeting as efficiently. Good note-taking demonstrates to your clients that you’re attentive, interested and dedicated to providing them with good service. It ensures you don’t forget the little details, and it also saves you the embarrassment of having to go back to the client for explanation. It sounds simple, but one minor modification that went forgotten or overlooked could mean major changes in code or functionality. Save yourself the headache, stress and humiliation and learn to write everything down.
8. Organize Your Assets
As with thorough note-taking, keeping assets organized is another significant step toward streamlining your project work flow. You may even consider a divide version control repository for project assets that don’t belong in the finished code base. Your client will probable send you a lot of files, content, artwork and emails containing feedback and requests for modifications and new features. Often, they’ll send more than one version of those files or requests.
Think about putting these assets into version control or some well-defined project management software. It can go a long way toward helping you keep information organized. Sending the wrong file or hunting through hundreds of emails not only slows you down and introduces the likelihood of errors, it makes you look dishonorable.
9. Put Due Dates in Writing
Due dates may often be established when outlining the project and its contract, but if this isn’t something you’re already doing, or if your current system isn’t working as well as you would like, it’s absolutely worth the attention. Large projects tend to have a lot of dependencies, and missing one deadline can often put a whole project behind timetable. Mark due dates on your calendar and discipline yourself to fix to them.
Due dates aren’t just for you, either. It’s not at all difficult to provide your client due dates for various deliverables, such as content and branding, and to set fixed periods of time for reviewing and approving benefits. Clearly describe due dates for all parties, and furthermore, address the consequences of unmet deadlines. As with negotiating a contract and drafting the project outline, always try to be fair, but don’t be frightened to be firm. Your client will respect you for it, and your reputation and career depend on it.