Engineering Practices for Building Quality Software

share ›
‹ links

Below are the top discussions from Reddit that mention this online Coursera course from University of Minnesota.

Offered by University of Minnesota. Agile embraces change which means that team should be able to effectively make changes to the system as ... Enroll for free.

Reddsera may receive an affiliate commission if you enroll in a paid course after using these buttons to visit Coursera. Thank you for using these buttons to support Reddsera.

Taught by
Kevin Wendt
Director of Graduate Studies, Software Engineering
and 8 more instructors

Offered by
University of Minnesota

Reddit Posts and Comments

0 posts • 1 mentions • top 1 shown below

r/bioinformatics • comment
1 points • SingingStreetMango

Your skills are a great foundation to build off of, and 1.5 years is plenty of time to upskill. I'm going to assume that you're looking for a position as an academic research tech or a software developer, and you come from a life sciences background. As a starting point, I would echo u/apfejes and u/black_rose_'s suggestions to build a wishlist of skills, fields, and day-to-day tasks. For dev-like work (ex. extending and maintaining popular academic software, commercial research software, managing pipelines) I'd recommend the following program:

  • Theory: Learn the fundamentals of computer science properly. I can't emphasize this enough. Take classes (formal university ones, if covered, or one of the streams from Coursera or EdX). Don't try to design your own curriculum- it's inefficient. Know your way around algorithms and data structures at a 2nd year undergraduate level.
  • The Cormen Introduction to Algorithms (credit: u/whyoy) is a good reference text.
  • Overview: Optional. If your university offers bioinformatics at the graduate level, take that. Otherwise, the Coursera genomics stream is a good launchpad, in the sense that it familiarizes you with the start-to-finish process of analyzing genomic data.
  • Specialization: Lots of ways you can do this. My recommendation is to pick two fields, dive deep into one, and get a surface understanding of the other.
  • One way to really get in the weeds of a field and practice your software engineering skills is to pick a methods development paper with publicly available data and try to recreate all of their figures. Read the background and document your process.
  • If you're already working on transcriptomics, I agree with u/hoondy and u/darkhuman28 that (human) scRNAseq is a natural extension. Use the above approach to 'learn' a pipeline. Rahul Satija's Seurat is ubiquitous.
  • scRNAseq is a bit too specific to have its own textbook, but this is a good overview of single cell techniques. I don't recommend buying textbooks unless you're at the stage where you don't know what you don't know, with exceptions.
  • Machine learning should be the default 'surface-learning' topic. Applied ML is a natural companion to transcriptomics data (ex. data imputation, phenotype prediction, combining transcriptomics with histology for computer vision studies, etc.). Don't get too bogged down in the math and statistics- learn it insofar as you know when not to use a technique.
  • Practice: Focus on getting to a point in your research project(s) that you'll have camera-ready deliverables you can put on Github. If you still have time, practice with problems ROSALIND and Kaggle.
  • Spend some time learning the fundamentals of software engineering best practices (ex. coding conventions, unit-testing, Git, debugging, documentation).
  • This stream from Coursera and this one from EdX cover the basics.
  • While doing all of the above, you're probably getting a lot of Python and command-line practice, at least. If you had truly obscene amounts of time, I'd say learn another OOP language like C++. Otherwise, learn a database language like OpenSQL. 'Learn' as in, 'I intuitively understand how to pseudocode in this language', not 'learn exhaustively'.

A tangential suggestion- if you have time, consult your university's career office for alternate career paths. Bioinformatics curricula are notoriously flexible and there's nothing stopping you from building a CV for, say, project management, investment banking, equity research, or data analytics. If you decide that corporate careers are for you, put time towards honing your presentation skills, and instead of going hard on computational theory, section off 50% of your learning time for statistics and/or getting additional certifications (ex. project management).