
Examples of bioinformaticians with different tasks
Our team comprises members with different backgrounds and from several academic research groups. The software tasks of the members of our community can be divided into three types: analyzing biological data, developing new tools for the community, and maintaining the code base of the JASPAR database. We identified our learning goals to support these tasks.
The main goal of data analysis is to support correctness and portability. The focus should be on functional suitability, performance, and usability for developing a new tool. Maintainability and efficiency are the most important factors in maintaining and improving the existing code base. These tasks share some underlying core concepts and require a good knowledge of computer science and software engineering in general. We found that reiterating these core concepts through internal lectures, practice sessions, and discussions is highly valuable. Importantly, we also aimed to improve the quality of the development process, as it results in improved quality of the software product (10.1007/978-3-642-40823-6_13).
During software quality seminars we discuss concepts and technologies; code reviews support a more profound understanding while applying concepts in practice; and resource sharing ensures that both the lectures and the code resources are kept for future reference.
A new bioinformatics tool is a complex object with extensive documentation, packaging, and algorithmic content. A single developer usually does not have a deep understanding of all aspects; thus, leveraging each other’s expertise can prove very valuable. Software quality meetings provide a platform for sharing experience and building a collegial community, thus consolidating the development process.
Maintaining a large code base through several generations of researchers is a unique challenge. Due to the team programming nature of the JASPAR project, regular code reviews were necessary throughout the maintenance period so that the developers comply with a standard to ease future work. Such standards enabled us to automate much of the process, further supporting maintainability.
Leveraging community effort to improve data analysis can be a collective problem-solving exercise. Code reviews are a natural platform for this, as it allows all members to look into the algorithmic and implementation details of a project. We found that this context enabled fast iterations and brainstorming as different members gave their perspectives on the problem at hand. Additionally, during the process all members are exposed to various strategies to tackle a specific type of issue, which expands their respective toolkit. Furthermore, through regular meetings, members build a shared vocabulary that supports the community and the spawning of future collaborative projects. A local community can provide quick feedback during development time, which is much shorter than the time scale of publication feedback.