25 Questions
This post originally appeared on the Software Carpentry website.
We've tried several times to define Software Carpentry's aims and content in terms of the questions that researchers ask (see for example our competence matrix and this post mapping eight questions to our current content). Our latest attempt is crowd-sourced with a small 'c': the people who are taking part in the first round of our online study group for instructors and would-be instructors put together their own lists of questions, along with the answers they'd expect from novice, intermediate, and expert scientific programmers. I've consolidated those lists into 25 questions, which I'd like to boil back down to no more than 10. If you'd like to take a crack at doing that, please post your suggestion as a comment, and I'll send you a Software Carpentry t-shirt if we use it.
- Why is this program crashing?
- How can I tell if my program's answers are right or wrong?
- How can I tell if someone else's program is giving the right answers or not?
- Why is this program giving me the wrong answer?
- Why does this program work correctly on one machine but not on another?
- How can I fix this program?
- How can I make this program easier to understand?
- How can I keep track of what I've done?
- How can I figure out how someone else's program works?
- How can I avoid putting bugs in my programs in the first place?
- How can I avoid writing code that has been written before?
- How can I make my code easier for other people to use?
- How should I manage my programs?
- How should I share my programs?
- How can I analyze this data?
- How should I manage my data?
- How can I reformat this data?
- How should I share my data?
- How can I find things in my data?
- How can I reproduce a result I produced some time ago?
- How can I work with others?
- How can I install this program or library?
- How can I do things faster?
- How can I make my programs faster?
- How can I find out how to do something with my computer?