130 karma · joined August 15, 2013
1. maintain and update the main websites
2. administer other IT-related systems on-campus (may require brushing up on some Linux or Windows Server skills)
3. help with the coding side of their research
There's a lot of low-hanging fruit available when it comes to coding needed for a research grant. Sometimes it's just standing up a basic website for a lab, but you'd be invaluable if you were able to help someone scrape together their pile of perl/R/python scripts into something that can be be hosted on a website. And IMHO the bar for quality is usually quite low -- many labs just want to have enough to earn/fulfill a grant and then move you on to the next project.
I'll warn you that there's not a strong career path available for software developers in Academia at the moment. So you may eventually need to break out. But it strikes me as a viable way to get a few years of real software dev experience working on interesting projects which would definitely put you in a better spot to branch out elsewhere.
Another thing we did that really helped was artificially limiting inputs regarding advice. In those first weeks, we had a handful of books and dozens of blogs and websites that all had contradictory advice; it was really overwhelming. We decided we would only subscribe to three primary sources of info where possible: Mayo Clinic online, some book we had on sleep schedules, and our pediatrician. Only having three places to consult when we had questions (as opposed to the entire Internet) was an enormous help.
I went through a similar transition years ago and I've started working on writing up some of my advice here. It's still quite incomplete, but might give you some ideas: https://app.tettra.co/teams/rstudio/pages/technical-leadersh... In particular, I'd say the "Technical Team Lead" role is what I'd target as your next step.
Aside: if any of this advice resonates with you, we are hiring and I'd love to chat about helping you go through this transition with us.
Jeff, PE, MD, CPA, JD, CFA
On the open-source front, OpenCPU (https://www.opencpu.org/), Jug (http://bart6114.github.io/jug/) or plumber (http://plumber.trestletech.com/) are all built for this. Plumber has a page to guide you through setting it up on a server using PM2 here: http://plumber.trestletech.com/docs/hosting/
(Conflict of interest warning: I wrote plumber.)
I've been running an API on plumber (with admittedly low volumes of traffic) for months now unattended using a strategy similar to the guide mentioned above. Haven't had any issues yet.
My approach is here: https://www.npmjs.com/package/giza . It would just parallel your storage engine (whatever that is) and not the rest of the project. But I'd encourage you to consider how to subscribe to a channel hierarchy. I find that many of the event-driven projects I touch have at least some components that can be more neatly modeled under a bubbling pub/sub system like this.
I suspect a disproportionate number of bootstrapped companies that fall into the might-become-$1BN category get an offer they can't turn down at some point before they arrive.