My background is dual CS and MB. In particular, I got an undergraduate degree in Molecular Biology at UCSC and did my undergraduate thesis with David Haussler (CS professor who helped "save the human genome") on probabilistic graphical models of E.Coli genes. At that time I didn't really know much CS (just hacking), so I went into grad school (BIophysics PhD) but focused on computational chemistry, so got lots of fortran distributed computing programming experience. Based on that I was able to do a couple postdocs in bioinformatics, increasing my understanding of protein function and evolution, and then became a full-time scientist, however after several years of not being able to find funding, went to work at Google for a decade where I taught myself all the CS I didn't previously know and applied it to scientific computing. Now I work for a company that does machine learning for drug discovery.
What I've learned over the years is that genetics is a field where people who excel in abstract thinking about blobby, messy, wet objects succeed and understand the paradigms. While CS people find molecular biology, with its concerete focus on molecular entities (agents) interacting is very easy to understand. After many years of trying to understand genetics I finally realized that many of the paradigms in genetics are just useful but wrong models that don't correspond to reality.