I love programming. Taught myself back in high school, and it’s such a lovely self-reinforcing and immediately useful skill.
Now I’m back in school after 10 years working in music. This fall I’m attending an MS program in bioengineering, which I’m QUITE excited for. One of the things about studying biology is that, well, biology is amazing, but it’s a lot harder to do even basic things, much less create anything original, at home. One of the coolest resources is rosalind.info, which has lots of bioinformatics practice problems. I haven’t seriously looked into the biohacking community, but it’s time.
I deeply agree with your perspective on biology—there’s so many cool things imaginable (curing mortality, augmenting health and mental capabilities) but progress feels hard to come by because of high barriers to doing basic work. The timescales to get a full feedback loop (think of an idea, try it out, analyze the results) often look like weeks to run an experiment, whereas in the digital world your code will compile in seconds. Rosalind.info is really neat, though fundamentally I wouldn’t have imagined bioinformatics/data processing to be the rate limiting step in advancing biology research...
And btw for other readers: I realized that my earlier examples may have been construed as “everyone should be programming”—which is a view I might also endorse, but not my main point. My intent was closer to “in any field you’re trying to study, you’ll retain more knowledge and be more motivated by the process of creating something others value”. That could look like: LessWrong posts summarizing state of the art research for a grade school audience, or creating a Discord for fellow students to exchange ideas.
The timescales to get a full feedback loop (think of an idea, try it out, analyze the results) often look like weeks to run an experiment, whereas in the digital world your code will compile in seconds.
I think this is superficially compelling. After all, if you read a biology method, often a single step will take hours, days, even weeks. By contrast, of course, a single line of code executes in next to no time.
However, it’s not actually the right way to think about it. After all, there’s no reason that we would compare a single physical action, or a single line from a method, to a single line of code. What is the “meaningful feedback loop comparison?” I get feedback when I pipette from one test tube into another—feedback on whether or not I spilled. Likewise, when I compile code, I get feedback on things like whether or not my syntax was correct. Comparing the speed of compiling code to the speed of executing an experiment is not a meaningful feedback loop comparison.
Even in computing, there’s a point past which we no longer have crisp definitions for what needs to be done. The vision no longer breaks down into an obvious set of concrete tasks.
This becomes more obvious when you shift your starting point from “how do I execute task X in code” (i.e. build a tic-tac-toe game in Python) to “how do I create a program that audience X will buy?”
The former sort of question is easy to decompose into code. There is an objective standard by which to determine whether or not you’ve achieved it.
The latter question requires all sorts of non-programming tasks. Rapidly, those tight programmatic feedback loops disappear. Once the code base gets large enough, even the coding challenges no longer have the same tight feedback loops. All projects aiming to achieve a substantial and sustained real-world audience hit this bottleneck, usually sooner rather than later.
Progress in biology is not slow. Biology is just vastly more complicated than computer science. I don’t mean that as an insult to CS. It’s just that CS is a discipline of building systems out of precisely specified mathematics. Biology is trying to understand a system that we didn’t design, based on mechanisms that we don’t have the power to determine with precision.
Figuring out how to define “progress” in a meaningful way, such that you’re finding an appropriate referant for comparison between the two disciplines, is quite tricky. Without that definition, you can’t compare progress rates.
Thanks for the recommendation!
I love programming. Taught myself back in high school, and it’s such a lovely self-reinforcing and immediately useful skill.
Now I’m back in school after 10 years working in music. This fall I’m attending an MS program in bioengineering, which I’m QUITE excited for. One of the things about studying biology is that, well, biology is amazing, but it’s a lot harder to do even basic things, much less create anything original, at home. One of the coolest resources is rosalind.info, which has lots of bioinformatics practice problems. I haven’t seriously looked into the biohacking community, but it’s time.
I deeply agree with your perspective on biology—there’s so many cool things imaginable (curing mortality, augmenting health and mental capabilities) but progress feels hard to come by because of high barriers to doing basic work. The timescales to get a full feedback loop (think of an idea, try it out, analyze the results) often look like weeks to run an experiment, whereas in the digital world your code will compile in seconds. Rosalind.info is really neat, though fundamentally I wouldn’t have imagined bioinformatics/data processing to be the rate limiting step in advancing biology research...
And btw for other readers: I realized that my earlier examples may have been construed as “everyone should be programming”—which is a view I might also endorse, but not my main point. My intent was closer to “in any field you’re trying to study, you’ll retain more knowledge and be more motivated by the process of creating something others value”. That could look like: LessWrong posts summarizing state of the art research for a grade school audience, or creating a Discord for fellow students to exchange ideas.
I think this is superficially compelling. After all, if you read a biology method, often a single step will take hours, days, even weeks. By contrast, of course, a single line of code executes in next to no time.
However, it’s not actually the right way to think about it. After all, there’s no reason that we would compare a single physical action, or a single line from a method, to a single line of code. What is the “meaningful feedback loop comparison?” I get feedback when I pipette from one test tube into another—feedback on whether or not I spilled. Likewise, when I compile code, I get feedback on things like whether or not my syntax was correct. Comparing the speed of compiling code to the speed of executing an experiment is not a meaningful feedback loop comparison.
Even in computing, there’s a point past which we no longer have crisp definitions for what needs to be done. The vision no longer breaks down into an obvious set of concrete tasks.
This becomes more obvious when you shift your starting point from “how do I execute task X in code” (i.e. build a tic-tac-toe game in Python) to “how do I create a program that audience X will buy?”
The former sort of question is easy to decompose into code. There is an objective standard by which to determine whether or not you’ve achieved it.
The latter question requires all sorts of non-programming tasks. Rapidly, those tight programmatic feedback loops disappear. Once the code base gets large enough, even the coding challenges no longer have the same tight feedback loops. All projects aiming to achieve a substantial and sustained real-world audience hit this bottleneck, usually sooner rather than later.
Progress in biology is not slow. Biology is just vastly more complicated than computer science. I don’t mean that as an insult to CS. It’s just that CS is a discipline of building systems out of precisely specified mathematics. Biology is trying to understand a system that we didn’t design, based on mechanisms that we don’t have the power to determine with precision.
Figuring out how to define “progress” in a meaningful way, such that you’re finding an appropriate referant for comparison between the two disciplines, is quite tricky. Without that definition, you can’t compare progress rates.