Hello. This might come off as a rant or you might think that I'm complaining but I hope it won't be like that at the end.
I'm on the first year of my MSc and started working in a bioinformatics lab. This was exactly what I planned a year ago, I'm glad that so far I've achieved what I wanted but there's that thing which is bugging me.
I have almost zero programming skills and never had any courses in bioinformatics before. Now I'm trying to teach myself Java as it is being used in the lab. At the same time I'm expected to learn R and also I'm a total stranger for many of the basic terms. I'm a person who needs to see the learning path completely to get motivated but in my case, other than learning programming, because I can follow a book as a guide, the information I could reach coming very scrappy: hearing one term and trying to learn what that actually means, for that needing to look into other five new terms in the definition of that term, finding out what another new weird name suppose to mean for that approach to that technology... etc. Yes, constant learning but they don't come together to shape something. And as a student who draws trees to understand connections between the subjects before starting to study something, that is utterly uncomfortable to me.
There's also another thing that me being one of the oldest in the lab and knowing the least amongst others which demotivates. People in the lab have that ego thing going on also as far as I can see, so so far asking questions didn't help me greatly. They are generally not bothered to break down the subjects and simplify the what and why we are doing what we are doing. I'm not blaming them though, it's not their responsibility to teach me stuff. But I'd like to say that it deepens the feeling of inadequacy.
Any advices would be appreciated.
PS. My English kind of sucks but I hope it's intelligible.
4 answers
In my opinion bioinformatics is a scientific domain unlike any other - it is the first new scientific field of the 21st century. Studying bioinformatics today is a bit like learning classical mechanics in 1700 or quantum mechanics in 1935 when people did not have the formalism right.
Bioinformatics is also the first domain that got established in the internet era - and that solves some of the problems of information dissemination but also brings about a whole slew of other challenges such as flawed/outdated/misleading content.
In addition the word "bioinformatics" itself is greatly overloaded - it can cover a very wide array of topics - no one actually knows them all. Just as a "Physicist" is most likely highly specialized a "Bioinformatician" too will be only be able to become confident in a subdomain.
Finally the concept of bioinformatician has been greatly conflated with that of system admin/programmer. That is because initially getting the tools to work seems to be the greatest hurdle. That may have been true in the past but proper training in the life sciences is and will become progressively more important.
Overall don't despair just keep working and pushing ahead - a refreshing thought is that nobody knows all of bioinformatics - we all know some topics and are clueless on others - in fact you can easily know more that most of us if you pursue a topic with passion.
Talk to your PI about taking a programming class, even if you just audit the course. Be upfront with them about your worry over not having any formal programming training. They might push back but I think it would be worth it.
I was a 'traditional' biology student with research experience in organic synthesis when I started at a (mostly) computational biology lab. The last time I had coded C++ was when I was 14-15, the only thing I knew about machine learning and neural networks was that they sounded super cool.
I did take programming courses, but this was after a semester in the lab. I was incredibly lucky in that my PI took the time to sit down and teach me some programming, but most of what I learned was by doing. I took three classes, two were introductory (basic programming and OOP), these weren't all that useful outside of filling some gaps. The third was data structures, this was the first class that actually got into 'proper' CS and is the one I actually enjoyed.
I can tell you that having to solve real problems, deal with real data, and deal with actual obstacles will grow your programming skills more and faster than any class will. You'll write the worst code and use awkward solutions but that's fine. When you look back at this code you'll find yourself cringing and wanting to re-write everything because of how bad it is, which means you've learned.
I completely understand where you're coming from about feeling like a squeaky wheel. I was the only 'biologist' in the lab, everyone else was math, CS or math + CS. It sucked, there were plenty of lab meetings or project meetings where I sat there staring at the floor waiting to leave or feeling useless because the ten minute discussion over the biology was done and the math wizzards were talking about stuff I could loosely follow for a few minutes, usually in a "general idea" way. There were plenty of projects where I was either not involved, or involved for the early stages but 'lagged out' as the programming/math became more complex. It sucked and it was hard not to get demotivated at times.
What I did take away was an understanding of how important these things were and a desire to improve myself in these areas (mainly programming). It was tough, but I wouldn't trade my time there for anything. I gained greatly from it as a scientist, student and person.
Always read up on what they're talking about if you don't understand. Always ask questions even if it is "I have no idea what you mean by that", they're not fun questions to ask, but if you don't ask you won't learn. People might get annoyed and there will be people who are elitists who look down at you, but I say fuck 'em. You're there to learn, not be a people-pleaser. Don't let the despair get the better of you, use it to motivate. Find the people who have the skills you want and try doing what they do. If they're good at databases, try making databases, if they love Perl/BASH, write as many scripts in Perl/BASH as you can. If you want to do x, try doing x. If you don't understand x, find someone who does and ask them.
Lastly, Istvan is totally correct, programming is a useful skill in bioinformatics but bioinformatics isn't programming. Additionally, programming (especially in bioinformatics) occurs over a very wide range of things that is totally dependent on what you are trying to accomplish. I've written two C programs in the past two years, but hundreds of scripts written in different languages (Python for the most part), yet I'm perfectly capable of bioinformatics. There are plenty of tools that I use in windows or have GUIs that I never write scripts for. I'm even one of those people who makes most of their plots in excel.
Look at the posts on this website, a huge majority of the posts are about troubleshooting output from programs others have written or writing/troubleshooting scripts. There are plenty of people who come here who don't know any programming but are accomplishing their bioinformatics just fine. Being an expert programmer is absolutely not a requirement to be a good bioinformatician and the degree of programming you need to know is totally dependent on the bioinformatics you're trying to do. The only unifying thing is that you need to understand the science behind what you're doing.
psetha, you are not alone as you can see! pretty much like joe I was a wet lab biologist, and just in the past few years I started studying and working (in this order) in bioinformatics. at the beginning of my doctorate, in wet lab biology, not only I had a hard time grasping the concepts but even grasping the language since I didn't really speak English...so your English is pretty much exceptional for what I can see.
it took a long time to get used to words, to the "wet lab thinking", to the routine in the lab, to the experiments done, why they were done and why they work/didn't work and, as everybody here is saying: asking was the solution, independently from the fact that the first person was willing to help or not.
a few years ago I then had the brilliant idea to start fresh a new MS in Bioinformatics so, granted a nice huge debt to pay tuition fees, I had to take the CS prerequisites, data structures and all that crap while working as a postdoc, having two lab projects to follow + students to form...and yes, time was never enough for learning, I had all the problems that you had in finding what something meant, having al algorithm to work or understanding why my Java skills were so shitty... but again, asking in this case was the answer!! as you I got frustrated when I didn't get the answer I expected/wanted/wished for, but I can assure you that this steep (very steep) learning curve will somehow mild up and will be easier with time.
they call them "programming languages" because is literally a whole new language, with rules that dictate how you can "speak it" in order to be understood...and, just like a spoken language, if you don't use it you lose it! I can assure you that I left my country 8 years ago and every time I go back visiting my parents I spend two days like a retard trying to remember how to speak my native language....for programming is the same: keep writing, keep coding, even the stupidest things, but never stop!!
being tenacious, as I'm sure you are, is the best gift and help you can ever give to yourself. as far as learning goes, that'll never stop but the curve won't be as steep anymore, but smoother.
and ask yourself this: would you prefer busting your ass now working hard or look back ten years from today at this moment and tell yourself "I wish I kept going, now I really regret it!".... you are on the right path and I'm sure that you can do great things if you keep being perseverant. and this post was my hint that you do want to succeed :)
good luck man!
Being a scientist, and certainly becoming one, is a vocation, that is also at times very much a job.
What you are describing is simply the process of learning science, be it bioinformatics, or otherwise. When I joined my lab I had the help of senior graduate students, sometimes. Other times I was left to struggle through a protocol on my own at the bench, learning the purpose of each step of the protocol, component of the buffer, etc. Now, I struggle to learn bioinformatics, not knowing programming, the vernacular of the field, or the best way to approach a problem. Classes, one in particular, was incredibly helpful, but you can't learn to be a scientist in a class, they can only serve to lower the activation energy, nothing more. The path to becoming a scientist isn't always paved with flowers and butterflies. Which brings me to my actual point:
Think of the scientific problem you are trying to address, Does wanting to know the answer trump the difficulties required to obtain that answer? If so, keep going. If not, maybe you have chosen the wrong question, or lab, or field. Further, think about ALL the questions you can start to ask, and potentially answer, with the skills you are learning (that is by, becoming a scientist). These are the questions that should really motivate you, because the scientific apprenticeship is about obtaining the skills to ask, and systematically and logically answer, those questions compelling enough to motivate you past the obstacles.
Lastly, the quicker you acknowledge you are in a field (science generally, not bioinformatics specifically) that can be full of large egos, and the sooner you learn to be motivated by factors other than your own, the quicker you will move past the second obstacle you mention and the better of you will be.
Log in to answer this question.
the more difficult is the path, the more you can learn! Hang on, keep asking questions, follow online courses, and be patient.
Following online courses is a very good suggestion, I can also add Project Rosalind (http://rosalind.info/problems/locations/), a platform where you can practice solving bioinformatics-related tasks. Note that you can use programming languages other than Python to solve them. The general suggestion is to keep practicing: in bioinformatics you need to learn how to get things done and be effective at fixing something that is not working.