Technical Documentation

Here are common forms of documentation (that you are hopefully already using) that can be used to support your software SR&ED claims:

Technical records- maintain records on technical challenges faced during development. Include detail on: experiments conducted, prototypes created, iterations, testing and analysis of test results. Include specific metrics as appropriate (i.e. performance was greater than 5 seconds, when the limit was 1 second; memory usage was X with only 10 concurrent users). This could be done weekly or bi-weekly.

Version control for all technical documents - use in architecture documents, design documents, as well as source code to track the evolution of the system. Include notes on technical issues when checking files into the version control system.

Software prototypes - save prototypes (possibly in the version control system) and include notes on the analysis of the prototype.

Test documents - save test cases, results and analysis. Include dates and who performed the testing.

Developer Notebooks - keep all handwritten developer notebooks. Have them include dates on the notes.

Meeting minutes - include date, attendees, duration of meeting, point form descriptions of technical issues discussed.

Whiteboard photos - take pictures of software designs created on whiteboards and save with project documentation.

Emails - track email exchanges with labels when relevant challenges were discussed.

In other industries, you can also includes product prototypes and associated materials, and engineer notebooks.

Ways to Improve Your Technical Documentation

It is much more time consuming to piece project documentation together after the fact and some teams may even miss their deadlines altogether because they just didn't have the time to go digging for information.

Here are a few ways to help you stay on top of your contemporaneous documentation:

Use a project management system

These are not only used to track your tasks but can also capture time and challenges. You've probably already heard about BaseCamp, JIRA, and Asana (And there's always Excel). Here are a few more tools that we've heard great things about:

Schedule reminders for yourself and teams to track time and update notes

If your team is having a hard time documenting on a daily or weekly basis, schedule it in. Pick one day a week and make a conscious effort to track your time and project developments. You can also use this time to update project challenges and notes in your project management system or….

Discuss project challenges in your weekly scrum meeting

We're assuming that you meet with your team at least once a week. If so, add a discussion item around challenges and delegate one person to take notes. (Be sure to date them!) You can even use a simple form like the example below:

Project: Project X
Date: May 8, 2014
Time Start: 10:00 am
Time End: 10:25 am
Attendees: Bill, Bob, John
Challenges: Please briefly describe the challenges (technological obstacles) faced during the week and briefly summarize what work was done to resolve the challenges. Testing reported poor performance with over 100 concurrent users. Message passing between component X and component Y took 500ms; the limit is 100ms. To improve performance, developed new message passing mechanism to eliminate need to serialize/deserialize messages. Performance improved to 300ms. Work is ongoing to improve.

Last but not least, get organized.

Organizing documentation is the last thing you want to think of when you start a project. Especially if/when you aren't sure it's SR&ED eligible. However, it can save a lot of time.

  • Create an internal email label for your project and file emails under it so you can quickly and easily access it. (Or try using a handy communications tool like Slack to get rid of all those back-and-forth emails altogether!)
  • Take pictures of your whiteboard drawings and save them in your project management system (or just in a shared folder for the time being).
  • Save notebooks and flag important pages so you don't have to comb through pages later. Make sure these pages have dates.
  • For software companies, record notes on the source code itself. Include test results and analysis/conclusions if possible.

Being up-to-date with your R&D documentation allows you to quickly take advantage of the 6 month current filing deadline (if you're a CCPC, you'll have your claim returned within 68 days, on average!) Start documenting early so you don't miss an opportune deadline to put money back in your bank account.