I learned programming in order to do my job more effectively while I was employed as a research assistant in a university neuroscience lab. At some point I realized that programmers in industry get paid 10x more (not an exaggeration, literally 10x) so I left after a couple years.
I enjoyed my time there a lot, I was building tools to help very smart and motivated people solve cool science problems. My users sat across the lab bench from me (the original open office plan?) and iteration/feedback cycles were super fast. People were appreciative and I could see how much time I was saving them. It was very motivating. Some of the more useful stuff I built got picked up by other labs in the group.
Maybe I'll do that kind of thing again someday, if I decide I've had my fill of megacorp programming.
Out of curiosity - what are the typical tools that you built? I am in industry but sometimes have a crisis of meaning. I would not be able to sit next to researches but was wondering if there is a gap in open source tools that I (or someone else) could help to cover.
There is a ton of this kind of work available. I run into various people online who need a simple automation task done, but either don't know where to start, or start and don't know how to make progress.
e.g., a month ago I made a small machine for a dental research lab that basically added a feature to a piece of test equipment. The feature was so basic and obvious, I have no idea why the equipment didn't already have it. But it was an opportunity for me to step in and make a small piece of hardware to do what they need at little cost.
A few months before that I made a GUI for a customized bit of veterinary equipment, and so on... These jobs are out there. They're quick and easy for an experienced engineer but the problem is finding them consistently. My main focus these days is trying to do just that.
I did work in three areas: image processing, control systems, and bioinformatics.
The image processing was pretty simple. Object identification and cell counting, mostly. There are already good open-source tools to do this kind of thing, so my contribution was mostly integrating those tools into the lab's workflows to make people more efficient.
I wrote some simple embedded code and MATLAB programs to create a better user interface for one of our custom-built microscopes. The users could specify the types of scans they wanted at a higher level and the system would automatically gather the data, then present the results and let the user re-run with adjusted parameters.
The bioinformatics thing was the coolest and most ambitious project, although we only partially realized our goal in the time I was there. It helps automate some of the more tedious and easy-to-screw-up bits of planning cloning/transgenic experiments.
I did similar work at a neurosciences lab, my work was usually building experiments at large (think html5, android games that were actual experiments), building infrastructure, connecting some kind of sensor to a computer and saving the data, guiding bachelors students with their final project that required some kind of programming, not very different from my usual work but with a lot of emphasis in reproducibility and log about every single metric that you can track that may be of the interest of the scientist.
Not who you asked, but I did neuroscience programming for a bit. If you're looking for open-source software to contribute towards, check out PyCortex and the SPM Matlab package. We could really use some kind of "SPM for Python", or some other kind of fMRI pre-processing pipeline in Python.
I enjoyed my time there a lot, I was building tools to help very smart and motivated people solve cool science problems. My users sat across the lab bench from me (the original open office plan?) and iteration/feedback cycles were super fast. People were appreciative and I could see how much time I was saving them. It was very motivating. Some of the more useful stuff I built got picked up by other labs in the group.
Maybe I'll do that kind of thing again someday, if I decide I've had my fill of megacorp programming.