Freitag, 31. Januar 2014

i have a head start

On March 1st, which marks the start of my unemployment, I am not starting from scratch. In fact, my quest to learn coding, began precisely on the evening of the 15th of December 2013. A week prior I had watched the code.org video which claims everyone should learn to code. Its message was bouncing around my head every night, slowly enveloping my brain with the idea that I myself, should learn to code. So on that fateful evening of the 15th, I took a long walk with my girlfriend and discussed for the hundreth time (sorry), the bleak outlook on life my Phd was giving me. But what separated this conversation from the others, was that suddenly, I presented the idea that had formed in my head. Learning to code. We talked about it for a while and before we got home, I had come to the conclusion that I was going to give coding a shot.

Back at our place I immediatly logged onto code.org and spent the next hour sending a licensed zombie around a maze. A short time later I found myself on codecademy.com and after a little research decided to give the Python course a try. I was hooked from the start. I had never seen programming as something accessible to me, something I could actually learn. And yet here I was, diving straight into it, typing actual code that the computer would interpret to do my bidding. It was exhilerating. Learning about basic concepts like if statements put me in awe - I was unraveling the underlying mechanism of all the games and programs I had been using for years - and I was learning use them myself.

As I continued on to learn Python, my infactuation with programming did not waver. I was still working from 9-6, but I gladly spent my evenings learning to code. I started getting really into it. I started researching the optimal way to learn coding. I spent my spare time on the learnprogramming subreddit, I read blogs and message boards, collecting a huge amount of resources in form of books, tutorials and online lectures in the process. My mind now started toying with the idea of actually becoming a professional programmer, and by christmas, I had pretty much decided that I wanted to give it shot. 

By January 7th, I had finished the first concrete project I had in mind, a simple application, performing a simple calculation, equipped with a simple GUI. By this time, I had already decided that I wanted to to expand this little program into a full fledged Android app. I felt comfortable enough with Python, so I decided that from now on, I would focus solely on Java. With thousands of libraries, the Eclipse IDE and a more verbose syntax, the initial learning curve was steep, but after a few days of settling in, I was transferring what I learned in Python to to Java. I now feel that my knowledge has exceeded beyond that of Python and although I do miss the simplicity of Python at times ('raw_input()' and dictionaries come to mind) I enjoy working with Java tremendously.

This is where I stand now, the bare basics of Java and OOP are under my belt and theres is still a month left to go before my official plan even starts. As of now, I am still working regular hours, although I find time to slip in a little coding or reading here and there. I can't wait to dedicate whole days, weeks and months to coding, and am excited about the potential for quick progression.

how am i doing it?

My goal is to reach a proficiency in programming, that will land me a job as a junior software developer. A lofty goal, that I quite frankly deem as unrealistic for a six month time frame. Instead the intermediate goal for these six months will be an internship as a software developer. 

Here's how I want to turn myself into a qualified intern:
  • Python (codecademy, several books)
    • A 'simple' language to get a basic grasp of programming principles and syntax
    • Make a small programm with a GUI (Tkinter)
    • Switch to Java once I feel comfortable
  • Java (Head First Java, Core Java)
    • My 'main' language
    • Relearn everything I know from Python
    • Hard focus on OOP
    • Make a slightly more complex program with a GUI (Swing)
    • Learn JSON and mySQL
    • Make an Android application for the Playstore
    • Make a 2D game
  • Additional
    • Complete CS50 online lecture of Stanford University
    • Complete 'Programming Mobile Applications for Android Handeheld Systems' online course of University of Maryland
    • Read 'Clean Code: A Handbook of Agile Software Craftsmanship'
    • Read 'Head First Design Patterns'
    • Contribute to an open source project on GitHub
    • Contribute to Stack Overflow
    • Attend weekly coding sessions with a professional software developer
    • Write a blog to document my progress


Donnerstag, 30. Januar 2014

what am i doing?

I like biology. Somewhat understanding the inner workings of living organisms is pretty cool. I like how I know that antibiotics won't treat a viral infection or that our adaptive immune system is a miracle. However, I could well live without knowing that USP15 promotes RIG-I mediated antiviral signaling by deubiquitylating TRIM25. Unfortunately, the duty to care very deeply about just that, is how I currently earn a living.

Being a Phd student in biology can be great. You work autonomously and essentially expand the boundaries of human knowledge with your own clever ideas. What it boils down to is months spent day and night in the lab only to be greeted by the frustration and eventual desperation of another failed experiment you cannot explain to your supervisor. This is science, this is normal. But to deal with this you not only need excellent psychological constitution but also a strong dedication and passion for what you are trying to achieve. For example to determine if a seemingly insignificant, protein of highly redundant function really does change the state of another protein you've never heard of. In fruitflies. Some people can be passionate about this, but they are few and I am not one of them.

I want to spend my life doing something I am passionate about. If I can't be passionate about my job, I at least want it to be easy and give me the maximum amount of time to do things that I am passionate about. As you can see, this is where the Phd fails. No passion, hard, no time. But I am not ready to settle for an easy job just yet. I want to do something completely different, something I believe I am truly passionate about and I will try my hardest to achieve my goal. I want to be a professional software developer.

I am in a unique situation, I have six months of spare time. I will be unemployed starting March 1st with no followup job. For the following three months I will work for 450 Euros a month, in a 15 h/week job that I have yet to find. The remaining three months, I will recieve around 550 Euros unemployment money. In these 6 months, I want to dedicate every day to becoming an employable programmer. This blog will document my journey.