Leaving Academia – A Practical Guide to Ditching Your Ph. D and Learning to Code


03/16/2021 03:40

Ever wonder why those in academia and the like think the suggestion “Learn to Code” is problematic. Well, other than their tired motto “problematize everything”, I think the real reason is because they are realizing people are actually leading successful lives once leaving the ivory tower. I will never forget my advisor asking me “Well, what else would you do if you left academia?” Literally anything else. If you made it to a Ph.D. program, you can succeed elsewhere. It will just take dedication and motivation. There are two rules here: (1) Don’t give up; and (2) Keep going.

This document is meant to serve as a guide to becoming a Python developer quickly and easily. You can apply it to other coding languages, but why would you? Python is the most sought after [hard] skill in tech right now (check out this article that I did not read that proves my point: https://www.wired.com/story/python-language-more-popular-than-ever/)

I am not going to hold your hand here. I will post links to some resources but that is all. This is based on the route the I took and have suggested to friends and family with successful results. It took me ~10 months to land my first full-time gig. I know you can do the same.

Disclaimer: You should read this whole document before starting, especially the part at the very end on how to google.

  1. Learn Web Development

    1. Python

      1. Learn Syntax: https://www.youtube.com/watch?v=rfscVS0vtbw (save each part of this video to its own file. You can use it as a reference going forward)

      2. Learn Object Oriented Programming: https://www.youtube.com/watch?v=ZDa-Z5JzLYM&list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc

      3. Learn Flask, a python web framework: https://www.youtube.com/watch?v=MwZwr5Tvyxo&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH

    2. Learn HTML & CSS: https://www.youtube.com/watch?v=mU6anWqZJcc

    3. Learn SQL: https://www.youtube.com/watch?v=HXV3zeQKqGY

It is at this point you should be able to shakily put together a blog-type website. I recommend you take this knowledge you learned in step 1 and build your portfolio website. You will not have anything to put on there yet, and you will not have much to say about who you are yet and your skills. That is fine, use dummy data. The point is you are building something that will be useful in the future. If you want to see a good example of a portfolio site, check out my wife’s site here: www.madeleinema.com

It is at this point that you can either continue on to the next step, or make some more websites! Do you have a friend with a business who needs a website? Maybe a customer? Getting real world experience that is client based is going to look great on your resume. Do you have a good idea for a site? Maybe a simple game? While I always find being creative is the hardest part, just remember this: your ideas are not going to be groundbreaking at this point. We just want to show off you are a competent programmer.

At this step you have already learned the basics of: Python, Jinja2, HTML, CSS, & SQL.

  1. Operating Systems:

    1. You should be using some form of Linux. Linux is the most common operating system across all devices. Knowing how to use the terminal is very important and a time saver. You have a few otions here

      1. Windows Users: Download and use Windows Subsystem for Linux https://docs.microsoft.com/en-us/windows/wsl/install-win10. This will allow you to use a linux virtual terminal fully integrated into your windows machine.

      2. Mac Users: Mac is built on Unix. You can use the terminal already on your computer and it will be virtually the same as Linux at this point for you.

      3. Cool Users: Ditch your OS and Install a Linux Distro. I suggest Arch Linux or Manjaro. Do not use Ubuntu, they sell your data. Motivation: https://www.youtube.com/watch?v=3Qec7Gj4DcQ

    2. Learn how to use the terminal. I watched a bunch of videos on YouTube for this. Just search and you will find tutorials.

    3. Get your own server. https://www.vultr.com/ it is free for the first month and pennies a day to keep running. Learn how to set up and maintain a server for web-hosting. See episode 13 or 14 of Corey Schafer’s Flask tutorial for help. I have also posted a handy checklist on setting up a server for non-noobs here: https://www.domdit.com/post/7

      1. https://www.youtube.com/watch?v=3dIVesHEAzc

    4. As you begin using the terminal more, learn how to automate away your repetitive tasks through bash scripts (look it up on YT).

While this will not be the most glamorous point on your resume, these skills will prove invaluable throughout your career.

  1. Version Control:

    1. I struggled deciding where to put this. On the one hand, it would be super useful if you started out using version control, on the other hand if you have no idea what coding is, this may not be useful in the beginning, and perhaps a bit confusing.

    2. Learn Git

      1. Image google docs for code, but better. https://guides.github.com/activities/hello-world/

      2. Github for poets: https://thecodingtrain.com/beginners/git-and-github/

With Github, not only will you be able to version control your code for easier develoment, but also show off your repositories to your future employers and begin working on open source projects. Here is a piece of advice that I wish I knew when I started coding: go on some bigger projects on github, become familiar with their code, go to the issues section and take out a pull request and start contributing to open source code. This will get you some real life experience as well as look good were a potential employer check out your github. Google: Contributing to Open Source Software.

  1. APIs:

    1. You need to learn how APIs work: https://www.youtube.com/watch?v=GMppyAPbLYk

    2. I have not watched the above video, but I suggest you learn to create and use APIs, they are a key feature in most desgns.

  2. Take your code to the next level:

    1. Learn how to document your code: https://realpython.com/documenting-python-code/

    2. Learn how to write clean code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

    3. Learn how to write Readmes https://www.makeareadme.com/

    4. Go back through all of your repositories and clean them the hell up. Make them presentable with the resources from the previous three points.

  3. Practice coding interview questions:

    1. I hate these. I do not think an interviewer asking these questions actually cares about your ability as a programmer, only your SAT score. A real interview will give you a take home project to work on to actually show you are capable of solving a real world problem instead of some riddle.

    2. That being said, these interviews do exist and if you want to be prepared for them, or atleast learn some valuable coding knowledge, check out ww.hackerank.com or any other site like it.

Okay, you are now at the point where you know enough information to begin exploring different coding paths. You can pick from the list provided below or look around for yourself. The goal here is to learn more skills in order to create and add more projects to your resume.

  1. Coding Paths:

    1. Javascript based Front End Frameworks

      1. React is a popular framework you could learn. It is a framework for creating dynamic web-apps. Usual paired with a backend written in NodeJS, Python or .NET

      2. I had a rough time with Angular,

      3. I never tried Vue

    2. Data Science

      1. Corey Schafer has great tutorial videos on Pandas and Numpy.

      2. Why not add visualizations to your data with something like MatplotLib or Plotly

    3. Make a video game with the p5.js framework with The Coding Train on Youtube

      1. Check out the games I made my menu bar above.

      2. p5.js is not only for video games. Did you like making images on your graphing calculator? Interested in an easy way to get into procedurally generated graphics? Perlin Noise? I think you can even make virtual instruments.

      3. Apps created in p5.js are easy to host on a website, so that is a plus

    4. Get Microsoft certified for some field knowledge and an extra boost to your resume. I recommend AZ-900 Intro to Cloud Computing. It is very easy.

    5. Cryptocurrency & Decentralized Apps

      1. I wish I had more time to do this. Check out: https://github.com/bitcoinbook/bitcoinbook

      2. I do not know enough about this field in a practical sense, but we are in desperate need of decentralized solutions to censorship online.

    6. Fight bloat with Suckless software

      1. https://suckless.org/ How can I recommend React and suckless in the same article you may ask? Well suckless philosophy may not help you get a job, but it is something to strive towards at least.

Okay, I hope you chose a few of the paths listed above and found some of your own paths as well. Once you have 4 solid projects completed, on github, as well as in your resume (Yeah, you need to figure out how to write a resume) and on your portfolio site. Bonus points if those projects were actual paid gigs. Preferably one or two of the projects are exciting or unique. My asteroids game helped me land a job offer; when I got to the interview the CEO told me he was playing it all morning (no better compliment than that!!!).

Go on LinkedIn, Angelist, Indeed, Monster, Handshake and apply for every freaking job remotely related to you. Keep an excel document of every job you have applied for so you do not apply to the same job twice. Apply to 30 jobs a day, every day. Keep working on new projects while you do this. This part is going to suck. You will get no calls for a month or two. Fake companies will try and still your information. Remember our two rules from the beginning of this.

It is at this point you need to be as creative as possible. I have provided the tools and the roadmap, but you need to execute and find your own job. Don’t burn all your bridges in academia either, you will need some recommendations most likely anyway.

-----

What if I get stuck and can’t figure out why my code doesn’t work:

Subscribe to Blog

Software Development
academia, coding, howto