When you don't have an Ivy League degree and rich parents.
One day you will realize that you will never work at FAANG.
Not just because there are thousands of Indians (supplied by Tata Consulting and Infosys) but because there are thousands on young and bright graduates from top Math and CS schools like MIT, Caltech, CMU and Stanford are entering workforce every single year.
They have what you do not - an internationally recognizable certificate of their above-average abilities (they were able to pass through a world-finest tech school with very high entering barrier).
So, what could you do? There are essentially a few options or ways.
- Prove that you are able too, by passing through a tough Udacity specialization.
- Show the world what you are capable of by publishing your code on Github
- Bootstrap yourself to a freelancer and then to run your own IT shop (this text).
Motivation and rationale
One might have to fall back (or resort) to freelancing (or to what it is called to inflate ones's self-esteem - "digital nomading") for variety of reasons.
It might be a very rational wish to simply stay away from a country in severe political turmoil or a major social unrest. It could be some form of down-shifting, while you do not want to wage-slave in an grossly over-priced and highly-competitive and distressed locality or in some toxic corporate environment. Whatever other reason you might have.
Usually, it means that you are traveling to another country on a tourist visa, which means you have zero rights, nearly zero business opportunities and basically a nobody.
Remember, that you cannot afford to stay on Thai beaches a few years in a row, otherwise you, probably, should not looking into freelancing at all.
The goal is to eventually become self-sustained and to run one's own IT shop.
The other important notion is Anonymity. It allows autistic and socially awkward persons to participate in meaningful social activities (being part of an organization) without being constantly overwhelmed by idiots. The best (of the highest quality) comments on public forums are anonymous.
Here is what you need
But before you could become a boss you have to bootstrap the basic living as a freelancer, in other words, to become a self-employed.
The bare minimum you need is: a place to stay, some
money to pay for rent and food for at least
a year, basic laptop with Ubuntu and reliable internet connection with a cellular backup (a SIM with a data-pack) to download books and tools of the trade and communicate with your contractors.
Knowledge Is Power
The hardest thing is to decide what is that you like (not just willing) to do. If you do not like what you do you will never become even slightly above average (leave alone a top performer) which means you will fail.
Yes, to survive in this racket you have to be a top performer. A member of a premier leagues in your trade. This means you better to really know your shit. No amount of cosplay of intelligence, self-imposing and hand-waving will do. Know what you do.
You must have something you are very good at. Something you very love and really enjoy. Usually it is serious programming (as opposed to a dumb coding) and general problem-solving (this is what
Unfortunately, no one wants a remote problem solver, especially if one cannot present a world-recognizable certificate of a really decent problem solver, which is an Ivy League degree in applied math. Really, applied math is just a systematic problem solving (while writing of proofs is modeling and programming put together).
Basically, this is what you shall offer to the rest of the world as a freelancer - to solve someone else's problem cheap.
I personally could solve problems with UNIX servers and problems which arise in serious programming.
The problem is - everyone wants PHP, Java (Android) and webshit for $5 per hour.
So, lets set everything up and run it.
There is a list of the basic skills we must have
- How to set up an OS (Ubuntu LTS).
- Basic shell commands (local and remote).
- Controlling versions with git.
- Quick editing with vim (with essential plugins).
- Programming inside emacs (customizations, using packages).
- How to lean from The Best Books by doing.
- Understanding of how to make an executable using a C compiler (gcc or clang).
- Basics of compiling, linking and debugging (objdump, ld, gdb, lldb).
- Basics of project management (make, cmake, ninja).
- Essential Python scripting, modules.
- How to set up a basic web service (nginx, uwsgi, Go, hhvm, Node).
- Setting up a Trac private server.
- What are Django, Flask and Go micro-frameworks.
- What are ABIs and Interfaces and Protocols.
- How to use low-level C/C++ libraries from Python.
Tools of the trade
- C and C++ for subcontracting in serious programming.
- Python for scripting, ML and data-"science".
- Go for webshit server-side back-ends.
- Rust for micro-services and shit.
- Haskell to program gray fin-tech.
- Erlang for real-world, telecom-grade Functional programming.
- Ocaml just for fun.
Java crap (once you have trapped there is no way out).
- Clojure (makes life tolerable)
- Scala (what Java is supposed to be)
- Kotlin (No, Thank You).
- React (pseudo-functional framework for creating widgets out of elements).
There is a huge problem with modern books. They are being written by idiots and demagogues instead of real gurus. All modern books are disgustingly bloated and stuffed with bullshit, self-raise, liberal arts abstract nonsense and so on.
The 1000+ pages bibles by Stroustup the demagogue, full of narcissistic bullshit and self-praise, are the canonical examples. They could be reduced to a 250 pages without any loss of quality. (His bibles are must read nevertheless, since he has a good point (he is a demagogue, but definitely not an idiot) per couple of pages).
The last great books were HtDP and some obscure titles like
- Algorithm Design Manual
- Science of Programming
- That wonderful title by Michael Jackson (another one) which was the precursor and inspiration for HtDP and works of Gregor Kiczales.
- CS 61A by prof. Brian Harvey
- Programming Languages.