How I learned Python
Hello! My background is in biological sciences and I thoroughly enjoy puzzles, games and on the more extreme side wakeboard as often as I can. So you may be thinking, why would this biological scientist be interested in coding? Surely that's for computer scientists? Well, I once thought that too but early on in my career I soon found that effective and streamlined data analysis is an essential skill which, if done well, can massively enhance the output of a project from stunning and interactive visualisations to fully automated analyses. I then investigated further and came to the realization that the ability to code is extremely transferable to various domains of employment but perhaps more importantly, a desirable addition to one's skillset.
Why I wanted to learn Python
I wanted to learn python because of the good things I had read about it through various blogs and it was also introduced to me part of my formal education. There isn't much which can't be achieved using python and it is a very good general purpose language to leverage for those data needs. As I move into the more advanced uses such as multithreading on distributed systems, it really is the language which keeps on giving.
How I approached learning Python
I undertook several online courses such as CodeAcadamy and Coursera. I was then recommended using the engaging problem based resource called Rosalind which offers a variety of puzzles with a bioinformatics focus but I would still recommend to anyone looking for an extensive list of practice puzzles. There is also a website called Kaggle which focuses on machine learning and data science to solve problems from real world data provided by the users.
I quickly found that it would also be useful to learn how to use a linux machine from the command line to really apply theses skills. If these two things are foreign to you I'd recommend looking at this tutorial. Even now I still enrol myself in courses because practice is the name of the game when it comes to learning a new language.
Challenges I faced
One of the challenges I faced coming from a biology background is getting to grips with the core principles. For example data types, data structures, Linux, git were all new to me and twinned with the vast minefield of open-source resources one can quickly be faced with an overwhelming sense of 'where do I start'? This can be a daunting time for a budding programmer and I found for a while that there was constantly something I needed to know about to understand the why and how of something. But do stick with it. Things become clearer, and when the syntax starts to flow freely you can really start working on that exponential growth of one's skills!
Tips and advice
If I was to offer any advice it would be the following three things in an unending loop:
But once you start to get to grips with it, try to be creative, combine concepts in new ways, learn different or new libraries even if you won't always need them now, you may in the future.
Final thoughts and next steps
Anyway if you like puzzles and being creative or simply have a repetitive task to perform several times then coding is for you! It really is a great feeling when you can write novel programs for custom solutions and oh the creativity is boundless!