Home> Blog> Survey Results

This post originally appeared on the Software Carpentry website.

Here are the results of the survey that we announced a couple of days ago. I'm a bit surprised that so many computer scientists responded, and equally surprised by the popularity of "biomedical engineering" — who knew? The scores for various topics hold a few surprises as well: I would have predicted that something with the word "web" in it would have scored near the top of the list, rather than at the bottom.

But it's clear that version control has to be the next lecture we produce, followed by one on task automation. We're going to use Subversion for the former: Git and Mercurial and other distributed version control systems are clearly on the rise, but there isn't a clear winner yet, and integration with other tools still lags. Deciding what to use for task automation is harder: we've always used GNU Make in the past, but that requires knowledge of the shell, which many of our intended audience don't have. Ant is a non-starter; SCons or Rake would be better from a geek point of view, but again, there's the question of tool support. Your thoughts would be greatly appreciated...

Education
Graduate degree6975.8%
Undergraduate degree2224.2%
Area
Computer Science5257.1%
Mathematics and Statistics2224.2%
Earth Sciences2022.0%
Physics1718.7%
Biomedical Engineering1516.5%
Microbiology1314.3%
Electrical Engineering88.8%
Macrobiology77.7%
Business/Finance44.4%
Mechanical Engineering44.4%
Medicine and Health Care44.4%
Astronomy33.3%
Economics33.3%
Psychology33.3%
Other88.8%
Job
Academic Researcher4044.0%
Software Developer3134.1%
Graduate Student1617.6%
Engineer1415.4%
Government Research Scientist88.8%
Manager/Supervisor88.8%
System Administrator66.6%
Industrial Research Scientist22.2%
Teacher22.2%
Topics
Version Control2.64
Automating Repetitive Tasks2.59
Data Visualization2.53
Reproducible Research2.51
Testing and Quality Assurance2.51
Coding Style2.44
Data Structures2.44
Debugging with a Debugger2.40
Designing a Data Model2.36
Object-Oriented Programming2.34
Performance Optimization2.32
Basic Programming2.31
Using the Unix Shell2.31
Refactoring2.25
Parallel Programming2.23
Working in Teams/on Large Projects2.22
Computational Complexity2.18
Packaging Code for Release2.16
Static and Dynamic Code Analysis Tools2.12
Design Patterns2.10
Systems Programming2.03
Integrating with C and Fortran1.98
Matrix Algebra1.97
Functional Languages1.94
Handling Binary Data1.88
Image Processing1.82
XML1.80
Build a Desktop User Interface1.76
Create a Web Service1.75
Introduction1.68
Geographic Information Systems1.51