What programming language should I learn in order to freelance?
March 19, 2013 12:51 PM   Subscribe

This Fall I will be starting a PhD in the social sciences. Because of my research interests/subfield, I will have to know the ins and outs of statistical software like R, Stata, and SAS. Can this knowledge enable me to freelance for some supplemental income or should I being learning another programming language?

I already have a MA and know a required real-life language, so I won't have too much coursework or requirements other than my comprehensive examinations. I also won't have to travel too frequently for my research. Freelance part-time programming will pay better than adjuncting during the dissertation research phase, and makes me more employable if and when I have trouble finding a postdoc or a tenure track job.

So, can I make some freelancing with my SAS, R, or Stata knowledge or should I try and pick up another language like Python or Java?

Also, I may defer my admission for a year, so I may have plenty of time before school starts to get my skills in gear.

I have no programming experience other than dabbling in high school and college.
posted by MisantropicPainforest to Education (13 answers total) 33 users marked this as a favorite
If you know R and Python, that would put you in good shape to work in a variety of academic settings. Java would be useful if you intend one day to be a software developer at a large corporation that is a Java shop.
posted by Blazecock Pileon at 12:59 PM on March 19, 2013

IMO, Python is easier to learn than Java, but Java is considered more of a "real" language. I made decent money in university working for other departments with my junior-year-level Java knowledge.
posted by ethidda at 1:11 PM on March 19, 2013

Python. Definitely- far easier to pick up than java, and it's pretty good for doing basic data munging; has good libraries available for specialized tasks, and lots of online community support.
posted by lyra4 at 1:15 PM on March 19, 2013

The in-demand consulting skill is Hadoop and MapReduce, HBase and all that. Probably a natural extension of your existing skills.
posted by jeffamaphone at 1:16 PM on March 19, 2013 [1 favorite]

You might also look at employment at the university itself in institutional reporting. Plenty of call for SASS there.
posted by phearlez at 1:34 PM on March 19, 2013

It depends who you expect your clients to be and what kind of projects you want to do. R is not really a general-purpose programming language, so you'd more or less be restricted to doing statistics-related stuff. Java and Python are both good choices for your next language. Python is very popular in academic fields (at least in the sciences); Java is very popular in business environments. Both have huge ecosystems of freely available libraries. Both are fairly easy to learn and have lots of online learning and reference resources.
posted by pont at 1:41 PM on March 19, 2013 [1 favorite]

Python would probably blend better with the kind of programming you are going to be doing. Python works well for writing standalone scripts in the same way that you would be using R and whatnot, whereas Java is more designed around being used for large multi-developer production systems.
posted by burnmp3s at 1:54 PM on March 19, 2013 [1 favorite]

I think this really depends on what your goal of freelancing is. If you want to make the most money for your time, then it might make sense to learn python/java and do some kind of web development in your free time. I'm not sure, as I don't have much experience with that route.

However, if your goal is to further your career in the Social Sciences, then I would focus my time on REALLY understanding statistical languages (especially R), and the statistical models most relevant to your field. Then try your hardest to get an RA-ship or RA hourly in various Social Science departments -- I'd focus on economics, education, law, and public policy departments. My experience is that these departments have statistical programming work that their own students can't/don't want to fill.

This way, you're spending your time learning skills relevant to your field, and having this type of work on your resume will help you get a job outside of academia that is still "social science research" work. A research role in a think tank might care that you can write a python script, but will probably care more that you implemented and interpreted a regression model for an interesting research project.

(A combination of a RA-ship with an Econ professor, and some STATA consulting work for nonprofits paid for a good portion of my masters degree. Feel free to PM if you'd like more info.)
posted by tinymegalo at 5:12 PM on March 19, 2013 [1 favorite]

I have worked for 3 financial sector organisations that run SAS, maybe more. Having said that, I don't believe they employed terribly many SAS developers. Some, but not a lot.
posted by Diag at 6:48 PM on March 19, 2013 [1 favorite]

A few ways to look at this:

Learning some SQL will help you extract data from databases for further analysis in in R, etc.

Python is a general purpose language that can be used for simple one-off scripts that can help automate mundane but repetitive and error prone tasks (like massaging messy data into shape for importation and analysis in R), or creating more substantial, complicated, longer lived software. It is often used as a glue language (a lot of YouTube was originally built by lashing together various C/C++ libraries and programs with Python). There are Python frameworks that help jumpstart development of stand alone web applications, and it is a decent choice for making existing data/tools available via a web interface. For these reasons, and others, it has a good foothold in areas of scientific computing (certainly bioinformatics/computational biology, and others). In short, Python should be useful in your chosen career path, common alternatives to your chosen career path, and areas even further afield.

Java is, well, Java. It is widely used, though not widely loved. In a corporate setting, it has its adherents in places that haven't embraced Microsoft .Net instead. A lot of tools for working with "Big Data," like Hadoop, are written in Java, but unless you are actually working on the computational plumbing, you can often write the custom analysis code in Python or even R.

My suggestion is that you start by looking into the market for freelance programming for people with a strong background in statistics and the social sciences. I am sure that there is large and growing market for the former, and likely also the latter. The first question you should answer is: What connections/relationships do I need to build to get enough of those jobs. The second question is what language(s) will best help me secure those jobs through those connections. Making a first or second approximation on an answer to the first question will get you a good distance to answering the second question.

While you are doing that though, you should start learning some python. Python Tutor is an interesting approach to teaching programming which happens to use Python. Its most obvious distinguishing feature is the way it walks you through exactly what the code samples do, line by line.
posted by Good Brain at 10:01 PM on March 19, 2013 [2 favorites]

Learn Python! It's not just for writing scripts and munging data anymore: with NumPy and now pandas, it's become a powerful tool for statistical computing. Plus, iPython is the most useful interactive interpreter I've ever used. Your R and STATA knowledge will come in handy, and you can use it to jump start learning general purpose Python programming. (Though you might find there's more demand for the stats!)

Outside of statistical stuff, there are very popular and well-supported web frameworks like Django and Flask that make it easy to crank out web apps. It runs out of the box on Google App Engine and Heroku.

Wes McKinney's Python for Data Analysis is a great introduction to stats in Python (see if your academic library has a Safari Books subscription), and I think Alan Downey's books would be good intros to the language if you already have a stats background.
posted by ecmendenhall at 11:27 PM on March 19, 2013 [1 favorite]

nth-ing Python. It's more fun, easier to learn (IMHO), and probably more conducive to freelance work. (Whereas Java is more likely to be used in larger, more complex development work.)
posted by FreelanceBureaucrat at 4:23 PM on March 20, 2013

not my opinion, but many in the "real world" think that SAS is better than R because there are no data size restrictions, and they have an irrational fear about it. also SAS is easier for a big company IT department to control. so SAS + SQL is a good combination if you want to do freelance work.

but for your PhD, use R + LaTeX + Sweave, and don't look back. also, check out Kieran Healy's paper about choosing workflow apps.
posted by cupcake1337 at 5:50 PM on March 20, 2013 [1 favorite]

« Older Landlord taking unreasonable amount from security...   |   How can I most peacefully exit an abusive housing... Newer »
This thread is closed to new comments.