Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a student studying biochemistry, and I've been learning some programming because I like it and it seems like the more one knows about computers the better. I've learned a good deal of python and also dabbled in unix, java, and HTML.

I've written a couple of semi-useful programs for myself, such as a program that keeps track of my grades and a program that keeps track of how much I go to the gym.

However, recently I've hit a bit of a wall in that I just don't know what else I can do with the programming I've learned. I'm nowhere near proficient enough to contract out and program for companies (as I'm completely self taught), and making the semi-useful programs I talked about above has lost its novelty.

So my question is: what can I do with programming? It seems like such a powerful tool, and I enjoy learning programming languages, but I'd like to find something more rewarding to apply it to. Thoughts?

share|improve this question
1  
Check out area51.stackexchange.com/proposals/19727/… (not trying to plug, I promise) for some ideas of what types of areas you'll find out there. – jonsca Jun 18 '11 at 14:09
9  
'What can I do with programming?' - Holy cow. You actually thought that would be an appropriate title? – Jim G. Jun 18 '11 at 15:00
4  
". I'm nowhere near proficient enough to contract out and program for companies (as I'm completely self taught)" I'm self taught and I have always had engineer posts because I was good for the job. Proeficiency and being self taught are two unrelated things. You'll see a lot of very high profile around here that are self taught. – Klaim Jun 18 '11 at 18:34
show 3 more comments

migrated from stackoverflow.com Jun 18 '11 at 14:04

16 Answers

Broadly, I would say that since you are studying biochemistry, look for parallels between how genetic code is expressed inside of a cell and how executable code is run on hardware. Use them to figure out the rules for how the grammar of the genetic code works, and use that to create a cross-compiler that can convert standard C (or Java, or whatever) code into a sequence of base-pairs capable of being interpreted inside of a basic living organism (like your standard bacterium or what have you).

Then we'll be able to create all sort of cool designer organisms, and you'll be celebrated the world over for making it possible. Or someone will take it too far and unleash an engineered super-plague and you'll be reviled as the destroyer of humanity. But either way, you'll be famous.

Also, I second the Project Euler recommendation.

share|improve this answer
4  
I'm not sure whether to lol at your example, because that sounds pretty cool. Probably pretty far off, though. :) – jonsca Jun 18 '11 at 14:05
6  
-1, I assume you are trying to be funny, but it seems a shame that a broad joke is the highest rated answer when there are already several useful answers. For those of you who might be confused, analogies between computer code and the genetic code are poetic, not practical. – Charles E. Grant Jun 18 '11 at 17:37
show 4 more comments

You are studying biochemistry. You can apply programming in your field. I do not know the subject, but you can program simulation programs and study about it. A sample: http://www.dmoz.org/Science/Biology/Biochemistry_and_Molecular_Biology/Software/

share|improve this answer

You can use your programming skills as a hobby, as @nightcracker suggests. Alternatively, you can try to apply them in research at university, which is what my answer is about.

There are several areas of research in biology where programming skills are important (see the Wikipedia entry on bioinformatics). Ones that are very close to biochemistry deal for example with predicting structures from amino acid sequences, with one goal to understand how posttranslational modifications affect the ability of proteins to form complexes.

More generally, and more in line with what you have done so far, there is big challenge in biology that the experimental procedures are becoming increasingly powerful, so that they produce huge amounts of data, which cannot simply be analyzed by taking an average on an Excel sheet. Writing simple data analysis procedures can save other experimental biologists tremendous amounts of time. Such small programs are usually extremely situational, and thus not of commercial interest. However, they can make the difference in being first to publish, or in getting any interesting results in the first place.

If you're at all interested in doing science, you can start right now on your first publications, since as a student of biochemistry who understands programming, you're uniquely qualified to help solve other biologists' problems: It is not sufficient to be able to program to do scientific programming, you also need to understand what you're doing if you want to produce something useful.

I thus suggest that you have a look at what research is done at your university. Are there already people doing bioinformatics? Are there labs doing medium-to-high throughput work that don't know what to do with all their data? It may not be too late to start a summer job in a research lab, and you certainly can find a project for next semester.

share|improve this answer

A rewarding exercise for you and for others is to get involved with an open-source project. You can learn to apply your skills in a real-world context while working on a larger (and hopefully useful) project, and the project gains an active contributor.

share|improve this answer

You can apply your computer programming skills to your major. Computational methods are becoming more popular in biochemistry, especially in genomics and proteonomics. Folding@Home is a good example of this. My parents are traditional molecular biologists (by which I mean bench scientists) and they have a much harder time getting grants than some of their colleagues who work in bioinformatics (a field at the crossroads between CS and biology).

In the short term, you can learn more about scientific computing. If you know Python, check out numpy and scipy. They are two very popular scientific computing libraries for python.

share|improve this answer

Can you think of any real world problems that people or businesses are having that aren't currently being adequately solved? Are there people that have problems that don't even know they have a problem? Could any of these things be solved with software? If so, you have an idea for an app.

share|improve this answer

Look for projects that are more directly useful to what you are doing. Basically, look at what you do every day on the computer, and see if you can figure out how to automate it. Perhaps you have specific calculations that you do all the time; maybe you can make a special-purpose biochemistry calculator. Or maybe something to help visualize an aspect of your studies.

One of the interesting things about many endeavors is that you may not know what is really useful and what is semi-useful until after you've done it. A large number of really useful items appear only semi-useful when you first contemplate them. You'll find out how useful they really are after you make them, then find yourself away from your computer in a different context, thinking "I really wish I had that tool I made right now...". (And if you get there, see if your peers would be willing to pay you for a copy as well.)

share|improve this answer

As an EE (and thus programmer) who wants to be a biochemist, the link between biochemistry and programming is somewhat tenuous in my eyes. By the time you grow from the level of organic chemistry (which is governed by a few rules; sterics, resonance, etc) to biochemistry, you're relying on hundereds of enormously complex constructs (proteins) that have exploded far beyond some simple rules. It's more analogous to systems engineering, which does have some overlap with "programming".

That said, programming is useful everywhere. If you do computational biology, being able to script is extremely handy, speeding up your work many-fold. If you want to do structural biology, knowing Python and/or Scheme can allow you to create addons to some common programs (Coot, PyMOL).

share|improve this answer

You could want to slowly learn programming concepts on your own (e.g. Object Oriented Programming ..) and data storage mechanisms like SQL, flat file databases and code refactoring.

These could add a plus to the softwares and programs you build.

You do not need to be professional if you do not want to but the possibilities of understanding how a system works is infinite. You can use your knowledge and skills in writing programs to automate tedious tasks in life and add meaning and value to your work.

However, if you decide to be professional with codes, you may want to look for courses that can provide you solid foundation in IT systems and programming.

The satisfaction you get from, when your software finally works and people appreciate your hard work is tremendous.

There is more to programming then simply just lines and lines of codes.

share|improve this answer

You could find all the distinct prime factors of a given integer. Not that it's useful. But you could.

share|improve this answer

When I was in my introductory biology class, the similarity between computer viruses and biological viruses freaked me out.

Maybe it was just me, but everything that biological viruses did was pretty much what computer viruses do -- infect and modify some of the host's [genetic] code, activate at some signal sometime later, replicate themselves, infect others, etc.

Obviously, that's why they named them "viruses" in the computer world. :)

If you go into computer security, I think you might draw some parallels between biology and computers, and might be able to come up with some creative solutions to problems in either world (e.g. a genetics problem).

share|improve this answer

My suggestion is once you've learned how to write code, start exploring software architecture.

These are php projects, but php is pretty easy to pick up:

  • Play around with the Symfony framework and figure out how it works. That will give you an introduction to the model-view-controller software architecture pattern
  • Play around with Drupal, write a module, and see how the observer pattern works.
share|improve this answer

What can I do with programming?
-> Programming is actually a method of defining, how to solve a particular problem. So with programming you can instruct a computer (or other computing machines) to solve any particular given problem, as far as you can define it mathematically/logically in the language understood by the computer. So its upto you what you can do with programming - upto you to define any particular problem to the machine that you are using.

share|improve this answer

Almost every non-theoretical research lab I've run across has serious deficiencies in two areas: automation and data storage/analysis.

The lack of automation comes from an easy evolution: set up the experiment to run "just a few times"... three years later, it still requires typing things into Excel by hand. Almost every modern benchtop commercial instrument has an RS232 port for serial communication (or USB for shiny new ones). Learning to automatically log the data from these ports can advance the rate of research by double or more.

Which leads to the second deficiency: data. Creating a database of results (SQLite is my current favorite for one-off, small scale things) and a shiny interface to explore results can bring really amazing insights into the data, that the common spreadsheet makes almost impossible.

It takes a some time to learn to do these things well, but they're pretty good skills to have... they've kept me (physical chemist) fed for the last decade.

share|improve this answer

Biochemistry has a great need for looking up DNA sequences in databases. If they are not 100% correct, this is actually an interesting problem.

Consider looking into the current tools your seniors use and learn what they do and whether you can improve them. You might strike gold.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.