Greg Wilson

Greg Wilson

Head of Instructor Training at DataCamp

Co-founder of Software Carpentry

Editor of Beautiful Code, Making Software, and
The Architecture of Open Source Applications

Occasional children's author

Ph.D. in Computer Science

Parent, spouse, and proud Canadian

Teaching Programming in the Wild

Feb 18, 2018

Back in 2007, Jorge Aranda published a paper called “Requirements in the Wild”. It won an award for “most innovative paper” because it was the first one in the 15-year history of the Requirements Engineering Conference to look at small companies rather than large ones. If that doesn’t strike you as odd, imagine if economists had only ever studied how Walmart and Amazon set prices, while ignoring everyone smaller.

'Analyze This!' for CS Education

Feb 14, 2018

Back in 2013, Andy Begel and Tom Zimmermann at Microsoft Research asked software engineers to find out what questions they wanted software engineering researchers to answer. Their analysis of responses resulted in a list of 145 questions, which they grouped into 12 categories. They then asked a different pool of developers to rate those questions in order to identify which ought to be worked on first. The results were published in ICSE 2014, and the paper is available for those who are interested.

Workshop Benefits

Feb 13, 2018

Last September, Feldon et al wrote a paper titled “Null effects of boot camps and short-format training for PhD students in life sciences” that seemed to say that short workshops and bootcamps don’t actually improve skills, scholarly productivity, or socialization into the academic community. Word et al wrote a response on the Software Carpentry blog, and organized a webinar by Prof. Rochelle Tractenberg, a video of which is now online.

More Dagstuhl

Feb 12, 2018

Following up on my previous post about the recent Dagstuhl meeting on programming language design, I had a look at the slides. There is some awesome stuff here: analyzing data about programmers, perspectives on teaching that might inform language design, eye tracking applied to program comprehension, and lots more. I fear, however, that none of it will matter much because of what wasn’t there. We’ve known for decades–literally decades–how to build better programming languages than those in widespread use. What we need now is to get academic institutions and other social organizations to change.

My Dagstuhl

Feb 10, 2018

Another week, another report of a great meeting at Schloss Dagstuhl, this one about designing and evaluating programming languages. I would probably have enjoyed being there, but as I wrote last year, invitational meetings trend toward “them’s that got shall get”: if you aren’t in the right school at the right moment in your career, you don’t get invited, which in turn means you won’t be part of conversations that can increase your chances of winding up at one of those “right” schools a few years down the road. It’s a situation that women and other under-represented groups in science are all too familiar with: lack of access engenders lack of opportunity, which in turn leads to existing inequalities perpetuating themselves.


Feb 7, 2018



CarpentryCon 2018

Feb 4, 2018

Harriet Alexander just announced that she has taught the first Software Carpentry workshop in Antarctica. Coincidentally, registration is now open for CarpentryCon 2018; it’ll be much easier to get to than McMurdo Sound, so I hope to see you there.

Assessing Competence

Jan 26, 2018

A friend who is running workshops to teach coding skills to people getting into tech asked me a question earlier this week: what’s the best way to rate and report someone’s skill, as opposed to their knowledge? The same question came up at work, and since I know far less about educational assessment than I should, I figured I’d share my answer in the hope that someone would correct me.

Procedural versus Declarative

Jan 15, 2018

The distinction between declarative memory and procedural memory is one attempt among many to describe the distinction between “knowing that” and “knowing how”. Declarative memory is things we can explicitly state (or declare, hence the name), like “Toronto is the capital of Ontario”. Procedural memory is things we can do but not necessarily describe, like riding a bicycle or recognizing a face.