Home > Community, Lectures, Research > Survey Results

Survey Results

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 degree 69 75.8%
Undergraduate degree 22 24.2%
Area
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%
Job
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%
Topics
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

Categories: Community, Lectures, Research Tags:
  1. Jochen
    July 16th, 2010 at 09:40 | #1

    Perhaps I got task automation wrong, but I didn’t directly think of building software. More like: automate all from LaTeX runs over data acquisition to automate simulation setups. For this also plain python would perhaps work or some other tools? Has to be platform independent though as many of us still are forced to on or the other operating system.
    For building software I heard about CMake.

  2. Greg Wilson
    July 16th, 2010 at 10:09 | #2

    @Jochen Building software is one special case (albeit a common one) of task automation: automating LaTeX runs etc. is much the same.

  3. Jochen
    July 16th, 2010 at 14:20 | #3

    I’m looking forward to the lecture! I would perhaps have chosen some kind of make-derivate for automating LaTeX but not necessarily for the other tasks.

  4. Dr. Bubba
    July 16th, 2010 at 16:20 | #4

    We started with gmake for our scientific software project and it was powerful enough to get through about two years worth of work but then we had to consider something else. Especially since we needed to move to more platforms and use and test multiple languages.

    Cmake so far has worked well for that next step. It is our main tool for this … we even have it handle doxygen and latex builds. It can generate gmake files. We see it being useful to automate running of various types of tests and drivers along with helping automate use of metric tools and report generating.

    We heard of SCons but it seemed less appealing.

  5. Greg Wilson
    July 16th, 2010 at 16:26 | #5

    @DrBubba The problem with *Make (from our point of view) is that it requires some knowledge of the shell, which we don’t want to require. Ant/SCons/Rake don’t, and of those, SCons is the only one based on Python. Benjamin Smedberg (of Mozilla) is rumored to be working on a pure-Python reimplementation of Make, but I have no idea (a) if that’s true, or (b) if it would allow direct invocation of Python commands, bypassing the shell.

  6. Dr. Bubba
    July 17th, 2010 at 04:45 | #6

    Yes, I missed that point before. I can appreciate it though in the context of what you are trying to accomplish.

    Of course often when we try to take a path around one issue then we later run into complexity or complications that may well be worse than if we had gone through the issue to begin with. Only time will tell.

    I have used Ant in some training classes but that was for Java. I found it to be very useful but of less value to me since we use C++ almost exclusively. I am still waiting to find a non-commerical version of Ant for C++. :)

    Good luck.

  7. August 5th, 2010 at 17:02 | #7

    @Greg: Ben Smedberg started a project called pymake, which is intended to be a pure-Python reimplementation of GNU make:

    http://hg.mozilla.org/users/bsmedberg_mozilla.com/pymake/summary

    The last time I checked though, it had significant shortcomings in terms of compatibility and performance, so it may not be appropriate for your uses here, at least not if you want to avoid being continually surprised by yet-another-feature-that-pymake-doesn’t-support-yet.

  1. July 29th, 2010 at 22:58 | #1