Welcome to the first segment in this series of articles on Utilizing a Source Code Analyst in Software Patent Infringement Suits. In my role as both a source code analyst and software expert witness, I have worked closely with top IP firms and Fortune 500 companies to uncover critical source code evidence in software dispute and patent infringement cases. In this series, I discuss the essential steps required for an attorney to engage and best-utilize a source code analyst in a patent infringement case – covering various pitfalls and offering solutions to common problems along the way.
We approach the series in chronological order, starting with basic topics such as: benefits of hiring a source code analyst, what to look for in an analyst, and how to go about finding a good analyst for your case. Future articles will delve further into other key areas including: essential steps in engaging an analyst, proper preparation for a code review, documenting findings for your case, essential communication with your analyst, and how to prepare optimal code cites for expert reports.
Let’s get started!
Benefits of Hiring a Source Code Analyst for Litigation
There are several good reasons to engage a dedicated analyst for review of source code in a patent infringement case. I will cover a few of these briefly here, but for an in-depth discussion of why you should consider hiring a dedicated code analyst in addition to a testifying expert, see the article: How to Choose an Expert Witness for a Software Patent Case.
A dedicated software analyst provides a set of skills that is often quite different from a testifying expert. A good source code analyst is particularly trained and skilled at writing and reviewing code in the language (i.e., Java, C++, PHP, etc.) on the platforms or platforms (i.e., Android, iPhone, Windows, Web and Internet Applications, etc.) specific to the source code that has been made available for review. This is often in contrast to the testifying expert, who is typically highly skilled in the specific application and theory, but may not be fluent and up-to-speed with what is often very new (recently-developed) code. Other reasons for selecting a dedicated analyst include:
- they save money, as they typically have a much lower rate than testifying experts
- they tend to be more available (experts tend to have professorships or other full-time jobs)
- they are typically shielded from deposition by opposing counsel
What to Look for in a Software Analyst?
Before you can begin your search, you must first have a good idea of what makes an ideal analyst for your case. Some personal attributes are desirable for any analyst on any case, but each case will also require specific considerations. Below is a list of key attributes to look for when selecting a source code analyst:
Fundamental Computer Science Background
The analyst should typically have a Bachelor’s degree or higher in Computer Science or Computer Engineering, and should have at least a few years of professional experience writing software (programming), preferably in the language or languages that are being reviewed. Backgrounds in both academia as well as industry are useful in developing the fundamental knowledge to provide good code review. You should look for candidates with extensive technical knowledge in computer science and programming, as well as good writing and communication skills.
Understanding of Patents
While a good analyst does not need to be a patent law expert, they should have a solid understanding of patents and how claim language works (for example, the difference between “comprising of” vs. “consisting of”). It is important that they be able to understand the interpreted reads of the patent in order to focus on the correct areas of code. An analyst with a lack of the necessary skills in this area can easily lead to analysis down the wrong path, resulting in code productions and cites that are not helpful or relevant to your case.
Experience with the Code Review Process
The most important role of the analyst is that of collecting evidence from the source code in a manner that is compliant with the protective order. This is often done offsite, and with a limited amount of access to the code. It is therefore essential that the analyst have experience in this type of work. Source code analysis requires use of specific tools (i.e., differential analysis tools like BeyondCompare and source code browsing and print tools like Notepad++). It also requires a much different skill set than a programmer. Many excellent programmers – even those with code review experience – may lack the proper communication and writing skills which are vital to prepare for the review, communicate with the team, and effectively convey findings. A good analyst can even provide advice on how to structure a protective order to best fit the needs of a given review. We will cover more of this steps in future articles.
Technical Experience with the Platforms and Languages in the Case
As I mentioned above, the ideal analyst will be someone who has experience in both the computer language, as well as the operating system/device platform that is being reviewed. It is less important however that the reviewer has a depth of experience in the particular application(s) of the software (i.e, camera, user-interface, networking, databases, wireless, etc.). Think of it this way – a good software analyst with the right fundamental knowledge and experience can read code for a number of different applications in much the way that someone who can read a foreign language can read a book in that language on a variety of subjects. Also, recall that it is the role of the testifying expert to provide the specific expertise for the particular application, and they should support the analyst in this area. (That being said, if you can find someone with the application experience that also has the attributes mentioned above, all the better).
Finding an Analyst
Finding a qualified analyst, along with all of the other tasks in preparing a case, can be a tough job. Luckily, there are a number of avenues to find analysts:
Recommendations from the testifying experts or other attorneys are probably the most common way in which analysts are found, and for good reason. Word of mouth recommendations have the advantage that the person likely had a positive experience with the reviewer in the past.
Online Expert Directories and Recruiter Services
Search via online or print listings of expert witnesses such as JurisPro or HG Experts is another avenue, as well as recruiter services like Thomson Reuters or Cahn Litigation Services. However, note that while testifying experts frequently utilize these services, it is much less common for code analysts. Another downside to this is that recruiter services typically tack on significant fees by way of a higher hourly rate.
Web Search Engines
As is the case with finding anything these days, Google or other web search engines can be a great resource. When searching, try making your search fairly specific, and include at least one legal term. For example, “software code review for litigation” or “java source code review” + “patents” are likely to bring up at least a few firms or people that fit the bill. Avoid overly broad searches that do not include legal terms. For example, “source code review” is likely to bring up results for non-legal services and topics. (Try it and see!)
Firms Specializing in Source Code Analysis for Litigation
An increasingly common way to find analysts is to utilize a firm that specializes is source code review for
litigation. [Disclaimer: Quandary Peak Research, the firm where I work, is one such firm.] This approach provides several advantages. First, it provides a larger pool or potential candidates to search from, making it more likely to find someone with the right experience. It also makes it more likely that a reviewer will be available, as this is often the full-time profession of the analyst. This benefit can be critical in cases with large or complex systems involving millions of lines of code. The use of specialized firm also provides other intrinsic benefits beyond finding vetted and experienced talent, allowing you access to a collective pool of knowledge, skills, and established information systems. These firms can ultimately save you and your client time and money, reduce the hassle and worry of finding the right person, and provide better end-results.
Common Pitfalls to Avoid When Selecting an Analyst
As you work through the process and consider the recommendations above, keep in mind the following common pitfalls to avoid when finding and selecting an analyst:
- Not allowing enough time to find an analyst
- Selecting an analyst with little or no experience in code review for litigation
- Selecting an analyst with little or no experience with patents
- Engaging an analyst with a full-time job or limited availability during critical times
- Selecting an analyst with little or no experience in the language(s) and software platform(s) in the case
- Eliminating an analyst for consideration because they don’t have direct experience with the application specific to the patent
- Finding an analyst only to have them rejected by opposing counsel
Next Steps – Engagement and Getting Started
Once you have selected a group of candidates that meet the basic requirements, you are ready to move the next step of vetting them for engagement. This process involves several steps, including checking for conflicts, determining fee schedule, establishing timelines, availability, and expectations on the amount of work and the scope of work from the project. Ultimately, before an analyst can be engaged, they typically must be approved by opposing counsel and agree to abide by any protective orders.