Software Carpentry

Helping scientists make better software since 1997

Osmosis is Just a Fancy Name for Failure

My last post linked to a PLoS paper by Dudley and Butte on developing effective bioinformatics programming skills. I asked, “How many hours do the authors think are needed to acquire these skills?” In response, Atul Butte said, “I think the ideal scenario is when one’s research projects enable one to learn these skills, so that these skills get learned in a practical way outside the classroom too, while doing science,” while Luis Pedro Coelho asked, “Does it matter over the long (or even medium) term? Isn’t improving your skills even you if aren’t being immediately productive what school is for?”

To which I can only respond, “Yeah, but that doesn’t work.” People have been doing computational science for almost seventy years, and have been calling it the third branch of science since (at least) the mid-1980s. If picking things up by osmosis was going to work as an educational strategy, we’d know by now. Instead, what we actually see hasn’t changed in 25 years: a small minority working wonders, and the vast majority not even knowing where they ought to start. We don’t expect grad students to pick up all the math and stats they need by osmosis, on their own, without any structured guidance—why should expect them to become proficient computationalists that way?


Written by Greg Wilson

2009/12/30 at 17:27

Posted in Opinion

2 Responses

Subscribe to comments with RSS.

  1. Maybe I wasn’t clear in my objection because I completely agree with your response.

    I was trying to say that a even a 200h course at the graduate (or even undergraduate) level on good computational techniques is almost definitely worth the time. I was replying to the objection that “it is a waste of a graduate student’s time to sit in a classroom when they could actually be doing science”.

    You sit in a classroom for a semester or two because, over the long term, you get more science done when you know how to do it better.

    In fact, it would be pretty silly of me to argue otherwise seeing that I once designed and taught such a course, something I hope to do again.


    2009/12/30 at 19:21

  2. Recently, I asked myself “Where is software development really learned?” In school …. On-the-job … self-study, or where?

    Unfortunately, in the end I think it is primarily a combination of on-the-job training and self-study. As for myself, since I have an applied and computational physics background, then I know it was through on-the-job training and self-study. And, except for a few good exceptions, the work environment was not conducive with learning good software development. Many of the experienced scientific programmers just were not interested in improving their skills for software development. They reached a point and said it was good enough or had other issues to on their mind. Thus often many who are learning under them are content not to grow far beyond their mentor.

    Now, I naively thought I was just learning the hard way what C.S. students already knew. But the more I interacted with C.S. graduates and students the more I realized that often many of them did not learn it in school either if they learned it at all. My guess is they are learning it the same way I am learning it except their job surroundings may be a better learning environment.

    This leads me to believe the sooner a developer gets real hands-on experience developing software the better. Especially with people who care about software development and continually improving at their craft. This is why I am beginning to think internships and mentoring programs within the software industry and concurrently with formal education is really important.

    So for in-depth learning, no osmosis does not cut it.

    But on a different note …. for shallow learning and communication as in a bull-pen environment, then osmosis has it place.

    Dr. Bubba

    2009/12/31 at 15:18

Comments are closed.

%d bloggers like this: