Ask HN: As a software developer, how do I get into brain research?
I tried going to university but I chose the wrong one and later dropped out (I don't regret it).
I love my job, but sometimes there's a nagging feeling that I'm missing out when I read about neural networks, machine learning or computational biology. I've been taking ML on Coursera and though I don't have deep love for maths, I found the subject both fascinating and approachable.
Still, machine learning isn't what I want to be doing. I'm a thousand times more fascinated by articles about reverse-engineering and hacking the human brain itself. (For example, this one: http://homes.cs.washington.edu/~rao/brain2brain/index.html). I'm also very interested in OpenWorm project since it's not your typical movie-recommendation kind of neural network.
I have no idea how to get into that area (fiddling with the brain). Do I absolutely need to get a degree in this area to participate in this kind of research? Do they need software development expertise? Is it difficult to adjust my skillset from being just a software developer? How does division of labor usually work in groups like these? I imagine there are always some biology- and some software-oriented folks in one group. What could be my first step in that direction?
If you have taken this path, please share your experience.
55 comments
[ 3.1 ms ] story [ 2192 ms ] thread> Do I absolutely need to get a degree in this area to participate in this kind of research?
I guess yes (I wish I would say no, really) since it is all about theoretical knowledge it is not easy to validate. Since, it is a research field, domain experts can't spend time in testing your skills so they mainly rely on exams/degree. If you have proved your skills to them at no time, then it is easy to get inside.
Since so much of this work is theoretical and done in Universities, unless you're just incredibly talented and lucky, you'll run into a wall without degrees.
ML and neural networks research are very different from projects like openworm both of which are very different from neuroscience work and modeling.
So you have three very distinct areas of research and work. Which one are you most interested in?
Of the three the ML side probably has the most guaranteed value to you. Things like openworm are shoot-the-moon type projects that are frankly unlikely to succeed in achieving their ambitious goals. Neuroscience research can be incredibly difficult due to the fact you're dealing with live people and there is unfortunately a lot of hand-wavy, "voodoo-esque" statistical and modeling techniques currently being employed in the analytical side of the field.
I would love to donate some of my free time helping a project in which I believe with software engineering expertise. Heck I might even pick up some domain specific knowledge.
And another reason: for experiments that matter, you need instant support and bugfixes, cause time is money. For example a couple of hours of using an MRI scanner easily costst thousands of dollars. So if something goes wrong, it needs instant fixing. You cannot rely on an open source ommunity and goodwill for that.
Of course there are other types of experiments/projects for which none of the above really matters; also there are projects like PsychoPy which seem to gain some traction and definitely are open to helping hands.
The question becomes: why do universities act as if getting grands is what matters and research is a zero-sum game?
Then look at PhD thesis in the subject area that are recent. The first section of each PhD thesis covers what is known in the area and builds up the problem. Don't worry yet about understanding the rest of the subject matter - just worry about understanding the front part. Since this is a PhD thesis, it will be very heavily cited. Check out the citations for the front matter and delve into those.
1) In neuroscience there's an enormous lack of enthusiasm for software development, even if it makes large parts of a workflow easier. If a poorly written, undocumented piece of code stuck in a file called temp123_final_final_no_really_final.m produces the same output as a higher quality piece of code, no one cares as long as it leads to a publication.
2) You don't need a degree in neuroscience to do neuroscience research, however you'll probably need to take a few basic neuroscience courses to get up to speed depending on what area you're interested in focusing on. It sounds like you're interested in theoretical neuroscience. For that you'll need to take lots of probability and statistics.
3) Make no mistake, your ability to write clean, well documented code will be massively under-appreciated by nearly everyone.
4) As far as division of labor goes, that usually depends on the lab size. The smaller the lab, the more you do. Even in some large labs you have people building software AND doing animal surgeries AND running experiments. There usually isn't a person dedicated to a specific type of labor.
5) To "fiddle" with the brain, you'd have to get into animal research as you can't really do that with people (yet?)
A lab worth checking out is the lab of Gyorgy Buszaki: http://www.buzsakilab.com/
5) There is fiddling with human brains, even remarkably similar to your typical animal research: insert a bunch of electrodes and start recording (afaik mainly for brain tumor patients: a part that gets removed anyway can as well server for some very interesting recordings right before the operation). Furtermore there's of course the more well-known the mind control stuff where electrodes are inserted, read out, and used to control robot arms and such.
The second reason, is that it's the environment that makes the researcher. PhD years are essentially the years of apprenticeship, in which you are working alongside with (hopefully good) researchers. It's just like in any other field. To acquire skill set, to get good at it, you need to work for some years with people who are already good. Engineering skills are essential to a researcher, but actual research skills even more so.
So if you manage to force your way in, and get a researcher job with only engineering experience (I've seen people do that), your contributions to a research project will have a chance to be on a negative side. Will even have a chance to derail the whole project.
http://blog.eyewire.org/eyewire-jobs-were-hiring/
Send a resume, cover letter, and code sample to jobs at eyewire d ot org
First of all most of the people working in computational neuroscience are physicists. There are a few biologists and of course cognitive psychologist, medical doctors or people from the department of neuroinformatics.
1a) Get an (paid) internship at a local research department. It's easy to get in (at least in my experience), even if you're not working on computational models in the first place. Most of these departments are not run very tightly, and there are lots of opportunities to do what you are best suited for. Though i would recommend to get back into university for a bachelors degree.
1b) Apply for google summer of code or something equivalent. There are lots of open internships for the summer which are directly involved with the human brain project.
2) It's about dynamic systems. So you have to ainte up your math. If you know your way around statistics, 2d/3d simulations, data structures and algorithms it's a huge plus. I recommend spending some time on top coder for the latter two. So you already have the advantage of knowing most of the common ML concepts.
3) Read everything you get your hands on which is connected to neuroscience. You have to get the full picture. Psychology, cognitive neuroscience, biophysics, medicine, neuroinformatics, etc. pp. First basics to get an overview, then concentrate on recent papers.
4) Improve your writing and presenting, if you have difficulties with either one. It will be an essential part of your work to discuss and present results.
5) Don't trap yourself into thinking you're not smart enough. Results in research need ambition, duration and vision more then being the smartest person in the room every day.
Most of the software which is written in science is just prototype grade to prove a point and get a paper accepted in a journal. Standards are low, so bringing something different (systems engineering, source control management, automation, hpc programming, testing, deep knowledge of a framework/programming language etc. pp) is also considered a plus. So whenever you think something could be improved you should speak up and have a detailed explanation at hand why this would be an improvement. Communication is key sometimes, remember most of the people you will be working with are not computer scientists nor did they ever work in an industry environment.
It's a good thing to have a deep understanding of at least one of the following commonly used frameworks/programming languages in (neuro)science plus TeX (not a complete list, just the top of my head). Though you'll probably end up learning or writing a new/established framework depending on the field of research you will be doing.
c/cpp, Python, Matlab/Octave, (statistics) R/Julia, (hpc/gpu) OpenCL/Cuda, (functional) Lisp/Haskell
I would recommend Python (Scipy/Numpy) if you're used to Javascript front end development (OOP/dynamic). Also i would advice you to get acquainted with your favorite unix shell and the core utils if you aren't already. (Plus getting to know at least one tool for plotting any kind of data)
Teams are rather small, depending on the budget. So in academia it's usually one or two group leaders with a professors degree, a handful postdocs and couple more phd students plus student assistants. Departments funded by industry are requiring a phd in my experience. Which does not mean you can't work there without having one, but you're less likely doing actual research. You will not exclusively doing one thing only, it's a rather versatile field.
I hope you'll make the shift into neuroscience. I think it's the last great mystery on earth which is to be explored. For me it's been a life changing experience and it still keeps on gi...
Thanks for mentioning that. I only recently realized that “mad genius scientist” stereotype has probably scared away a lot of fine folks from science.
http://www.cc.gatech.edu/brainlab/
However, it is completely possible to get a position "in a lab" without a degree. I found a research-assistant position, part-time, while going back to school to get a degree (after about three years off). That's one path, and depending on your situation, you may need to move to an area with a high concentration of universities to make this feasible. I can only speak to the US, but if you are in the US, start with Craigslist for major metros with good universities (Boston being far and away at the top of the list IMHO; also NY, DC, Chicago, LA, and San Diego. When I did this in 2006, I had several job offers in Boston for software-inclined research assistant positions I found on Craigslist - without any degree. I was kind of shocked, but it makes sense. HR everywhere is painful, so people with hustle go outside the system to find candidates they want)
You could also try cold-emailing lab PIs. A couple of points here: professors at top-100 US universities get a lot of email in general, and in particular from people in other countries looking for positions (probably same for European professors). Without a degree you can't compete on (perceived) credentials, but if you are in the same country already you will be much easier to hire (no immigration hassle). Make sure your resume is neat, positive (but accurate) and grammatically flawless. Make your cover letter personal, both in the sense of your story (why you are interested) and why the specific lab interests you. Especially look at youngish professors just starting labs. Graduate students are very expensive, so if you are willing to work for $20k then you will be about 1/3 the total cost of a graduate student. Young professors need people with hustle more than anything else (getting a lab started is a slog of ordering, unpacking boxes, and debugging equipment. Electronics troubleshooting, and "I don't know, but I know how to read a manual" are critically useful skills in any lab).
If you are in a place with one or more universities, go to talks! Most university departments hold public-ish seminar series bringing in outside speakers, and you can usually get on departmental announcement lists just by emailing an administrator. If you a frequent fixture at talks, and you ask good questions at the end, you can end up in very useful situations ("why don't you come along with us to lunch?" is the best possible outcome). If people see you a few times, they may start to ask you who you are - and why you are not at the school already.
A practical point: if you go the above route, and depending on your current situation, you may very likely have to take a (large) pay cut. SAVE AS MUCH AS YOU CAN, starting now (this is generally applicable advice!). Some employers offer split-deposit setups, where you can designate a percentage of your check to several direct-deposit accounts. I budget out what I needed to live on, send that to checking, and deposit the rest in a savings account in a completely separate bank. That second account is untouchable - except for tuition when I was in school (excepting true emergencies), and now saving for longer-term things.
To help find a way back to academia, you can get a big boost by contributing to an open-source project with strong academic connections (I cannot stress this enough. you want a project that is actively committed to by post-docs, grad students, and - ideally - a prof or two. E...
In his current situation, getting the degree was the original roadblock to his curiosity. Many undergraduate programs today are no better than an extension of high school.
Maybe I'm biased being among major research universities in brain science (adding Pittsburgh and Philadelphia to your list), but he'll be able to find a job with the right hustle.
Agree otherwise on your advice.
I mean "absolutely must" for the long-term (PhD is a separate discussion). Getting in the door is the critical first step, and definitely possible without a degree (modulo a pay cut, of course).
On Pittsburgh, the cost of living is much lower than the coasts and between Pitt and CMU I had an amazing experience.
Media Lab Director is not a tenure-track position, but there are indeed a handful of tenured professors in the country who do not hold a PhD. Essentially all of them earned tenure 30+ years ago in a much different environment. I've heard of some who skipped undergrad, got a PhD, and tenure - but it's rare, and even more so in today's academic climate. I don't recall hearing of any tenured person with no degree at all.
Moreover, many top universities have positions called Professors of the Practice. And that's a common enough path that Neuroscience, as an interdisciplinary field, would do well to adopt. Geoff Hinton now works at Google for a reason.
Woah, haven't thought about it from this perspective. Thanks.
Universities hire regular software engineers all the time for software development work. Biology labs hire full-time "build-it" guys, and computational projects with a lot of funding hire part-time and full-time software engineers too.
So, to break in I recommend you look up some large brain science computation projects online and contact them. There are quite a lot of them in Europe. You may also be able to get into some fMRI projects.
That said, at a university, the chances of you taking more than a supporting role without a university education is slim. So, I would recommend looking for a brain-oriented startup.
If you want to do moreso biology, then I do not believe this path would be worthwhile to you. Lab assistant work does not pay much, and it is often very tedious work. Some techniques may take a year to get proficient at before your results start to make sense (as was my case). That said, biologists constantly amaze me -- they routinely make heroic efforts to find evidence for tiny advancements (as is necessary due to the limitations of our brain technology).
Absolutely not. Every research lab I've ever known, even at MIT, has significant needs for what's called a Technical Assistant. It's similar to a Research Assistant, but you help code experiments, program analytic scripts, create visualizations and write reports. These labs run the gamut from single unit recording to whole brain imaging.
Do they need software development expertise?
Yes, all do.
Is it difficult to adjust my skillset from being just a software developer?
That answer depends on the lab and its existing group of researchers, assistants, and students. There's a learning curve but you are far better off than the many, many researchers and students who have no programming background.
How does division of labor usually work in groups like these?
The principal investigator (PI) is responsible for everyone and is the one to get the major grants, have or seek tenure, and plot the general direction of the research based on their history of publications. Post-doctoral researchers are recruited on their way to becoming PIs of their own labs. Graduate students usually work on their own research, sometimes with their own smaller grants. Research and technical assistants work for all of the above on the day-to-day responsibilities.
I imagine there are always some biology- and some software-oriented folks in one group. What could be my first step in that direction?
It depends foremost on geography and your interests. Before uprooting your life, look for research groups at the nearest university. Find the PIs whose research is most interesting to you. Write them a very brief email (4-6 sentences) explaining your background and interest in working part-time on technical software challenges they might have. If you don't have many PIs near you, it will be more challenging. You won't hear back from most. But remember, you're looking for experience. If you are dependable and professional, you'll find some to grow with. Then you'll be better positioned to seek a full-time job in a great lab that really fits your interests. After a few years, you'll be qualified for graduate school. You don't necessarily need an undergraduate degree if you are working with a leading researcher who can vouch for you.
This is true, in some sense, but don't plan on getting in to a top-30 school this way without some strong prior, independent evidence of ability (>99% results on quantitative reasoning tests, for example).
A solid publication in a good journal is more important. Ph.D. programs teach scholarship. To demonstrate that skill before admittance is the highest currency possible.
First, although modern science requires a lot of software, scientists refuse to recognize that crafting software is its own discipline and insist that they must be good at it because they're good at being scientists. Your skills won't be valued - they won't even be recognized.
Second, the realities of biology are very different from the realities of software. If you're working with living things, be they cell cultures or mice, you'll find your schedule frequently dictated by the cycles of your experimental materials. For example: suppose your experiments work best with mice age 14 days. If a litter is born on a sunday, that means you'll be at work on a sunday two weeks later.
Biological reactions are way worse than slow builds. So many biological protocols involve doing something tedious for twenty minutes, then waiting for a specific amount of time (perhaps 15 minutes , perhaps 45) and being back at precisely the right moment to do a few more minutes of painstakingly careful but tedious work.
In software you would never hire 5 developers but only give them two laptops - each person needs a laptop to do their job, right? In biology the equipment is so expensive that it must be shared. This can be ok, but it also results in loss of control over your schedule. now you're not just working on sunday, but because the other student sharing equipment also needs to experiment on sunday, you're either working sunday early morning to early afternoon, or sunday early afternoon to late evening.
I found science to be crowded with people trying to prove that they're the most brilliant ones in the room, people unwilling to collaborate because if a group effort succeeds you have to share the credit. In software I've found everyone happy in the knowledge that a well-functioning team can produce results at a scale unrealizable by even the most brilliant individual.
In conclusion, i hated being a biologist. I didn't like the culture of science, I didn't like the work itself, and I didn't like the schedule and lifestyle it demanded. I also really didn't like killing mice. Biology is dirty work - not the worst by any means, but software is a more fun job that pays 3-10X more.
Thanks for an honest perspective.
Scientists generally do not appreciate their software-based tools and workflows, and see writing software akin to writing short papers or presentations - they aren't built to be reused or improved, just "turned in" when done. It's very hard to build complex, improving systems in this manner.
It will take a long time before what appears to be common-sense in software will be taken seriously by neuroscience.
ps. If you could attend a university full time, I would consider pharmacy.
To clarify a few things:
1. I live in Russia but will move to US or Europe soon.
2. This is not something I want to do right now. Rather, I'm thinking about what I'd like to be doing in ten years, and how to get there eventually. It's just one possible direction.
3. I'm looking for some first steps that don't require me to drop everything and move somewhere. Maybe some ways to evaluate the field. Great suggestions I read in the thread included contributing to open source projects with academic connections, reading recent thesis, saving money, getting familiar with tools (R, Julia, Matlab) and sharpening maths, (later) writing emails to smart people, looking out for startups in the field that don't require academia background.