How I went from PhD to JavaScript developer

January 27, 2019 - 16 min

As promised in my Hello World article and to celebrate my PhD defence anniversary, you will find below an account of my journey from PhD to JavaScript developer. I describe which resources I used and recommend for someone starting on this path.

As you will read, this journey came with its challenges. Yes, it was difficult. Yes, it took some time. In the grand scheme of things, however, it was a very positive experience. It lead me to work full time as a developer, make new friends and discover the vibrant world of open-souce.


Before the positive outcome of my PhD, by which I mean passing my Viva (PhD defence in British English) exactly 2 years ago, let us go back to the end of Summer 2016, in good old Norwich, England.

Norwich Cathedral in the mist

Norwich Cathedral in the mist, Credits to Gyles Jeffrey.

I was in a pretty bad shape, sort of burnt out. The PhD was dragging on, my funding was about to finish, I knew with some certainty that I did not want to apply for postdocs and continue in Academia. My thesis was not going to be read by many people. There were not many incentives for me to finish.

A New Hope

That’s when I stumbled upon a Facebook ad for a Udemy Course to become a web developer. I usually use an ad-blocker and never really pay attention to ads otherwise. Call it fate. There was a great discount for The Complete Web Developer Course 2.0 by Rob Percival. For a mere €19.00, I not only got access to the course, but there were goodies like an E-Book and 1 year of free web hosting on the plaform of the author of the course.

The book has the catchy name of “How to Make $10,000 While Learning to Code”. I read its 65 pages in one sitting, I just could not stop. I felt so pumped and enthusiastic about the whole idea of becoming a developer.

Photo by Ben White on Unsplash Photo by Ben White on Unsplash

I just could not sleep that night!

PRO TIP #0: Read books! They are amazing teachers and when they strike the right chord, they can be so empowering and motivating.

By providing such a compelling way out, that book definitely gave me a surge of enthusiasm to finish writing my thesis: I just wanted to get started right away!

The Force Awakens

Fast forward to that day two years ago, I had just defended my thesis. I passed with no corrections. It was finally over.

In the same month, I moved from England to Prague, Czech Republic, to join my long-time girlfriend, now partner, who had had a job there since July 2016. Let’s say there were quite a few changes!

I did not know anyone in Prague and my partner was working all day. I obviously needed a few relaxing days: walks in the snow, a 5-day fast, and a few games of Dota 2. After that, Prague’s municipal library became my spot. I took my learning very seriously and went to the library like I would go to the office. My hours were not too strict, but keeping to a schedule was very important.

Prague Municipal Library

Close to my spot, Credit: Praha.eu, source

Although I was surrounded by people, the library could feel lonely at times. To meet new people, my girlfiend encouraged me to attend a meetup. After some research, I found the Learn by Doing meetup where I met some really nice people I now call friends. At first, though, it was very daunting! They knew so much, and I knew so little. I was so admirative of the extensiveness of their knowledge and I aspired to learn from them as much as they would be willing to share. However, there were a few Monday nights after the meetup when I felt completely overwhelmed too; there was so much I did not know.

PRO TIP #1: Join a programming meetup as early on as possible in your coding journey: you will learn a ton, meet people who can inspire you and maybe get some guidance.

PRO TIP #2: Get comfortable with the idea of being uncomfortable; you will learn so much more and so much quicker by being outside of your comfort zone. It goes without saying that you should also take breaks: making your life an endless series of discomforts is not an optimal strategy for success either.

Learning the basics

From the course

For the better part of January 2017, I followed the course I had bought. I went through 48% of the material. First HTML, CSS, JavaScript, then some jQuery and Bootstrap, and finally PHP and MySQL. That was pretty much all I needed to get started on my first real project. More on that later.

PRO TIP #3: If you’re considering a career in Web Development, HTML, CSS and JavaScript are very important. Having a solid foundation in those will pay its dividends in the future, guaranteed.

Even though I did not complete the course, beside the content, the greatest value I got from it were the goodies: the book motivated me so much, got me excited about becoming a developer and provided some sort of action plan to get started; the hosting plan on Eco Web Hosting was really helpful to get acquainted and experiment with hosting websites.

From the Meetup

Going to the meetup taught me why and how you should be using a version control system, e.g. git, to work collaboratively on code and also to keep track of versions of the same work.

It was also a great way to try and collaborate on web projects. I could see how people approached designing a website and breaking down the development process into smaller, manageable chunks. I took a bite at small issues and submitted my code for review. It was daunting, but terribly important that I get feedback on my code: I was mostly programming on my own and was never really sure that I was doing things in the right way.

PRO TIP #4: Get feedback as often and as early as possible. You should have time to expriment, make discoveries and mistakes on your own, but feedback will give you an idea of where you are and what you could be focusing on.

This was my first time using GitHub, a service to store and share code in the cloud. Since my university email was still valid, I could get access to the GitHub Student Developer Pack, which proved useful to store some personal projects in a private repository (this is now possible on free accounts too!).

From the Internet

Even though I already loved the Internet, my jaws dropped when looking for content to learn anything related to programming. There are so many blog articles, tutorials, free and paid courses, communities, code challenges. It’s easy to go down rabbit holes if you are not careful.

The GitHub Sudent Developer Pack also provided a free one-month membership to Flatiron School, an online bootcamp. That helped me to learn about testing and exposed me to some Ruby programming, which was really fun! Once it was over, I found out there were so many other online bootcamps.

Bootcamps be like, Photo by Victor Freitas from Pexels Bootcamps be like, Photo by Victor Freitas from Pexels

My favourite is freecodecamp.org. If I were to start over from scratch, I would definitely follow their curriculum. It is quality and up-to-date. They have forums and chats where you can ask questions and get help from the community. They have tons of Medium articles, dedicated YouTube channels and even a podcast. It’s definitely a positive and supportive space.

YouTube is also an incredible source of knowledge. There are so many great channels with quality content. Some cater to complete beginners, when others tackle more advanced topics. Plenty of conference talks are available. Here’s a few to get started:

PRO TIP #5: Don’t get distracted and procrastinate looking for new resources. Choose at most 5 sources and commit to learning as much as you can from them (and you should really consider freeCodeCamp as one of them).

MarkeTool.email

Motivation is great but fallible. In hindsight, my learning was more focused because I had a project I really wanted to realise. I believe this is crucial: learning by doing puts the material into context and perspective, it makes you question and reflect on them.

MarkeTool.email was my project. My partner was working as a marketing manager at the time and she was faced with a particular problem: when creating newsletters with Mailchimp, she could not really template a newsletter and have it auto-filled for specific people to personalise the newsletter for their local market.

Of course, I was going to be the one to make it happen. I was going to make a web-app and start a business!

MarkeTool's Logo

MarkeTool was born!

Or so I thought. (Note: this feature is now part of Mailchimp.) Here are the rough steps I followed:

Understanding what you’re trying to solve

I gathered requirements from my first user — my partner:

  • there would be two kinds of users: managers and regular users;
  • managers could create campaigns with a personalisable template and a list of users
  • managers should be able to track the metrics of email opens, etc.

This step is the foundation of your project. Misunderstandings at this stage can have dramatic consequences if you are hoping to deliver the right solution.

Understand the implications

Of course, since managers can upload newsletter templates, I would need to be able to extract all the images, make sure they are optimized for emails, and put them on some Content Delivery Network (CDN) to guarantee they would be loading fast.

Of course, dealing with mailing lists meant to be able to parse some kind of csv or excel spreadsheet with agreed fields to load them on my platform.

Of course, there were many more things to consider.

So I need a server, with a database, with some storage and CDN for pictures, and obviously, I need to send loads of emails without being flagged as a spammer.

Considering all the options, Photo by Startup Stock Photos from Pexels Considering all the options, Photo by Startup Stock Photos from Pexels

Now that I think about it: ignorance is bliss sometimes. I probably would not have undertaken this, had I known all the implications. Actually, Charlie from the meetup warned me about the likelihood that my efforts would not be rewarded with espèces sonnantes et trébuchantes. In some way, it was clear for me this was a learning experience, and if I made any money from it, all the better.

PRO TIP #6: Don’t put too much pressure on yourself that your efforts need to be rewarded in the short term. Of course, earning money is necessary but, if at all possible, you should consider your project as a learning opportunity. Remind yourself to have fun studying.

Research, plan and execute

Since I knew a bit of PHP at the time, I looked for efficient ways of creating apps and stumbled on Laravel, a popular PHP framework. There were some great resources on YouTube to get up and running. I spent quite a few days going through these tutorials, immersing myself in the examples and trying to replicate what I had learnt in my project.

There would be quite a bit of logic and functionality happening in the web-app, but I decided that classic JavaScript would be enough. Quite frankly, learning another framework to write web-apps in JavaScript would have slowed my progress down.

I used Vultr to set up my virtual machine which would host my PHP application; I chose Mailgun as my email provider; I chose AWS S3 to host my images. There were so many services and APIs I had to get familiar with. It was a steep learning curve. But, to this day, I still find it very exciting to SSH into a remote server and execute Linux commands there. It’s almost magical to me.

As I progressed and MarkeTool took shape, I had to establish some price for my service. I looked at my “competition”, made estimates for the cost of hosting pictures for a long time on S3, as well as the cost of sending emails through Mailgun, etc. Different projections led to different levels of wealth and success. It was exhilarating to consider I would “easily” make money ONCE it was built.

Photo by Dmitry Moraine on Unsplash All the Bitcoins I would have bought!, Photo by Dmitry Moraine on Unsplash

The long road

I was working long days, learning a lot and coding a lot. However, I had this nagging insecurity that I was too junior for this. Would it be secure enough and production grade quality? To me, security has always been a big concern; I see hackers everywhere. 😄

My social life was pretty quiet. Apart from the meetup, I did not meet many people. University life is so much easier in that respect. Not speaking much Czech was really isolating. My partner and I were sharing a small room in a flatshare with 3 other people. I was sleeping on a couch we had obtained for free and the springs gently massaged my back each night, so to speak… It was not the restful situation I had imagined for my post-PhD life. Oh well, life.

Photo by  Dan Wayman on Unsplash Almost my couch, Photo by Dan Wayman on Unsplash

I was verging on burnout again. After my loved one came back from work and I came back from the library, speaking about MarkeTool was not the best way to relax for either of us. That’s why I took a month-long break in May, in which I got to see friends, family, go back to England with my old choirs. A lot of nice and fun moments.

PRO TIP #7: Take good care of yourself, know your limits and don’t push too hard. When it’s time to take a break, take it! (Disclaimer: I really struggle with that!)

Saying goodbye to say hello

It looked like I would never get paid for what I was doing for my partner’s job, they seemed to have a somewhat complicated process to invoice freelancers. Besides, it might have become uncomfortable at her workplace if I did not deliver as expected. It was time to say goodbye to MarkeTool. You’ve taught me loads and I’m grateful.

Anyway, someone in France had asked me for another project and they seemed more serious about paying me. I decided to try a NodeJs backend, instead of PHP. NodeJs was used a lot at the meetup, so I wanted to go deeper. The project was an e-commerce website, selling personalisable items.

I was happy to experiment with new things again, amazed at how incredibly vast the world of web development was. I thought that it would never be a match for all the things I could have learnt/done/proved in mathematics.

But after a few months, the project was abandonned. It was the middle of summer 2017. I had not had any income for a year now. About time it changed!

But I could finally be called Doctor But I could finally be called Doctor, Credit to my Mum’s amazing camera skillz

My first interviews

On August 20th, 2017, I started applying for jobs. A week later, I got my first interview, and to my astonishment, for something I did not have a degree for. What are they thinking?!

I was so stressed. My impostor syndrom was at an all time high. My course of action was to be very honest with what I had done and, if anything, it would show that I am eager to learn. They decided I was too junior for the position. After I asked, they kindly sent me their takehome exam. Realising the extent of the missing pieces in my skillset was really important if I wanted to get a job eventually.

That first experience did not stop my job hunting. The idea of going to an interview was not so frightening anymore.

Two other interviews were planned on September 5th. But I only went to one of them: I got the job and started the next day!

The CTO was an advocate for bleeding edge technologies. Although I did not realise it at the time, this job opportunity was everything a first-timer could ask for! I learnt React, a library for frontend development (which, by the way, powers this blog through Gatsby), I tinkered on GraphQL servers, used SSH to query databases through the command line. I could ask questions to my colleagues and get help and I was given the time to complete tasks. Don’t get me wrong, I worked hard. But it was a great environment to be in.

I was so happy, I had a foot in the industry!

Two years later, I develop mobile applications at Kiwi.com, one of the most succesful Czech startups. I use every day really cool technologies like React Native, React Native Web and GraphQL. In my spare time, I like contributing to open source software on GitHub and writing on this blog.


Thank you for reading this far. I hope this was an enjoyable read and that it gave you the motivation to pursue your dream of becoming a developer. To summarise, here are the things you should keep in mind:

PRO TIP #0: Read books! They are amazing teachers and when they strike the right chord, they can be so empowering and motivating.

PRO TIP #1: Join a programming meetup as early on as possible in your coding journey: you will learn a ton, meet people who can inspire you and maybe get some guidance.

PRO TIP #2: Get comfortable with the idea of being uncomfortable; you will learn so much more and so much quicker by being outside of your comfort zone.

PRO TIP #3: If you’re considering a career in Web Development, HTML, CSS and JavaScript are very important. Having a solid foundation in those will pay its dividends in the future, guaranteed.

PRO TIP #4: Get feedback as often and as early as possible. You should have time to expriment, make discoveries and mistakes on your own, but feedback will give you an idea of where you are and what you could be focusing on.

PRO TIP #5: Don’t get distracted and procrastinate looking for new resources. Choose at most 5 sources and commit to learning as much as you can from them (and you should really consider freeCodeCamp as one of them).

PRO TIP #6: Don’t put too much pressure on yourself that your efforts need to be rewarded in the short term. Of course, earning money is necessary but, if at all possible, you should consider your project as a learning opportunity. Remind yourself to have fun studying.

PRO TIP #7: Take good care of yourself, know your limits and don’t push too hard. When it’s time to take a break, take it!

If you have any questions or comments, please drop me a line on Twitter. I shall reply as soon as possible. Expect some crypto-currency related maths articles in the near future. Stay tuned for more.

Join Robin's Gazette

Receive

every second Sunday

my favourite links and findings

on frontend technologies, writing and more!

52 issues and counting since December, 2020

    I hate spam, don't expect any from me. Unsubscribe at any time.



    Personal blog written by Robin Cussol
    I like math and I like code. Oh, and writing too.