Here's an interview with Will Willems who talks about breaking into tech as a self-taught programmer. Will doesn't have a CS degree and learned completely online by building projects.
This is always a tough question for me since I'm usually working on a lot of different things so the answer kind of depends on the week/day that you ask me. After graduating high school I started a bachelor in Physics. After coasting through my secondary education without any problems or hard work I was pretty stoked to start. (Un)fortunately after 5 years of messing around I finally had to admit to myself that I really never was going to finish this.
This presented a pretty interesting anxiety-inducing problem. With quite some student debt amassed and 5 years of doing nothing much professionally my career prospects didn’t exactly look good.
I had previously messed around with C++ a bit which I needed to build my own digital instruments but besides that and inspect element I really didn’t know anything about coding. I vividly remember visiting a bar around that time and some CS dude, 6 beers in, trying to explain to me that a server was just a program running on a computer and me just absolutely not getting it after 30 minutes.
At this point I had read a lot of articles from people like patio11(Salary Negotiation), Beau Carnes(The standard pace is for chumps) and others and concluded that it should be relatively easy to get to 80/h without needing actual CS skills. I had planned to study/build on my own for a couple of months to get from 0 to useful and then, as quickly as possible, get to 5/h then 10/h then 20/h then 40/h then 80/h.
In order to do this successfully I figured these jobs had to be as short as possible and more importantly as educative as possible. Every job had to be a trampoline to get to the next. I have no idea how much of this was luck but this worked out really well. I was able to do this without any connections, completely online.
Having six months left to figure out what I was going to do with my life and simultaneously supposed to be working on my finals that were going to get me back on track put a real fire under my ass.
For 3 months I woke up, got some shitty coffee from the living room (I was living with 15 roommates at the time), put on my polkadot bathrobe and got to “work”.
Almost everything I’m writing here I’m not certain of but of this I am. I started out building something real that people were actually using.
No FreeCodeCamp or anything, just googling How to persist data on website even when reloading… it takes a while to know you need a database when you don’t know what a database is.
At some point I got stuck for weeks wrestling with the concept of a database. Even after I got SQLite up and running through sheer trial and error I still didn’t get it. It’s pretty hard to learn about something when you don’t know what you don’t know. This almost had me giving up.
The thing I was building can be viewed here and is somehow still in use, although this is version 3.
Version 1.0 was a PHP “file”, I didn’t get the concept of a server at the time, used with SQLite. This was really just about getting a grip on the whole web ecosystem and figuring out what the basic concepts were so I could learn about them.
The next version really was a playground to learn about as much stuff as possible. A custom Flask backend, websocket server, mail server, task queue, message broker, CRON web scraping jobs filling the DB. It contained as much cool stuff as possible and was completely unmaintainable.
At last I mustered up a final rewrite in Vue.js and Firebase which I had decided to specialise in. This is the version that’s still online.
I derived a lot of motivation from the fact that my roommates were actively using my web app. I’d say try to make something simple and useful for a very small group of people that you know well.
If you have any connections through which you can get some work, use them!!
Else… Upwork! Terrible platform for more expensive work but absolutely perfect to earn your first dollars. In hindsight I should have asked more sooner. Until I got to $40/h I was way overqualified.
When you do get to 30/h 40/h and you’ve worked with some clients already I’d try to get away from UpWork asap. I had specialised (do this, don’t be a general programmer) in Firebase + Vue.js so I got some of my gigs from VueJobs.
One unexpected source of work was IndieHackers where I met a now friend of mine who was trying out a new remote work concept. He was doing a remote project for Red Bull in Bali. For 20 hours of web development a week he provided an absolutely stellar accommodation + food for the team. This didn’t make me any money but the ability to namedrop Red Bull was a huge trampoline for me so I really didn’t need to think long about this.
The ability to namedrop this and show off the project we worked on in Bali eventually got me my first 80/h 100/h jobs with ease (mostly VueJobs).
For none of the jobs I got I used existing connections or existing experience in an adjacent field, everything was online and from scratch.
When interviewing/applying try to get talking to the people in charge as quickly as possible, I’ve never in my life created a resume and I never will. I rarely send over my GitHub. Interviewing is one big shitshow. Nobody really knows what makes good candidates and interviewers are biased. The process is completely broken. Use it to your advantage. Don’t be another piece of paper on the pile.
What advice do you have for someone without a CS degree who wants to get an entry level software engineer job or become a freelancer?
Learn by building actual stuff, don’t do courses. Focus on jobs with the most educational potential, not the most monetary potential. If you want some specific advice, feel free to reach out to me via twitter.
You can’t get it all, you have to pick one thing. Keep your head down. Follow the rules. Do as you’re told. Play it save. Wait your turn. Ask permission. Learn to compromise.
My personal favourite?
You better enjoy it while it lasts because it only gets worse. Usually aiming at your next life-stage, these people are encouraging you to savour your current laid-back existence because it’s pretty much a downhill slope from here.
What. The. Absolute...
Every year of my life has been the best year of my life and I don’t see any good reason why this should change anytime soon.
You can have it all. Everybody around you is wrongly regurgitating common “knowledge" from half a decade ago when you could still buy a two story house for a chicken nugget.
For me, a typical day? There really is none. I wake up, whatever country I’m in, decide what I want to work on and then (most of the time) do exactly that.
This is what my desk at home looks like right now:
I’m working on a series of indie DJ-gear and kits that are meant to upcycle high quality gear that has become obsolete because of the dated tech inside it. Last week I primarily spent trying to figure out how to throw a virtual festival, something I’m trying out with my digital music concept Herres. I’ve recently launched Devsync and am currently putting a lot of work in Loopground.
I have no idea, there are no rules. You can leave who you are right now behind at any moment and start over. Everything around you that you call 'life' was made up by people who were no smarter than you. And you can change it, you can influence it. Life has no inherent purpose so you’re free to mess around. Be creative, be kind and have fun!
If you enjoyed this article please send it to a friend
And you should totally sign up for the newsletter
If you are job hunting, head over to the job board for entry level software engineers