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...

Graduate degree 69 75.8%
Undergraduate degree 22 24.2%
Computer Science 52 57.1%
Mathematics and Statistics 22 24.2%
Earth Sciences 20 22.0%
Physics 17 18.7%
Biomedical Engineering 15 16.5%
Microbiology 13 14.3%
Electrical Engineering 8 8.8%
Macrobiology 7 7.7%
Business/Finance 4 4.4%
Mechanical Engineering 4 4.4%
Medicine and Health Care 4 4.4%
Astronomy 3 3.3%
Economics 3 3.3%
Psychology 3 3.3%
Other 8 8.8%
Academic Researcher 40 44.0%
Software Developer 31 34.1%
Graduate Student 16 17.6%
Engineer 14 15.4%
Government Research Scientist 8 8.8%
Manager/Supervisor 8 8.8%
System Administrator 6 6.6%
Industrial Research Scientist 2 2.2%
Teacher 2 2.2%
Version Control 2.64
Automating Repetitive Tasks 2.59
Data Visualization 2.53
Reproducible Research 2.51
Testing and Quality Assurance 2.51
Coding Style 2.44
Data Structures 2.44
Debugging with a Debugger 2.40
Designing a Data Model 2.36
Object-Oriented Programming 2.34
Performance Optimization 2.32
Basic Programming 2.31
Using the Unix Shell 2.31
Refactoring 2.25
Parallel Programming 2.23
Working in Teams/on Large Projects 2.22
Computational Complexity 2.18
Packaging Code for Release 2.16
Static and Dynamic Code Analysis Tools 2.12
Design Patterns 2.10
Systems Programming 2.03
Integrating with C and Fortran 1.98
Matrix Algebra 1.97
Functional Languages 1.94
Handling Binary Data 1.88
Image Processing 1.82
XML 1.80
Build a Desktop User Interface 1.76
Create a Web Service 1.75
Introduction 1.68
Geographic Information Systems 1.51

Dialogue & Discussion

Comments must follow our Code of Conduct.

Edit this page on Github