How to switch from software engineering to AI research if you are lazy as f**k
For 7 years I happily played with web. For 6 months I was burning out. Next 2 quarters I tried to reassemble myself, looked for the meaning in life and fantasized how I would switch from SWE to AI on a whim. After 3 more months, I have made barely any progress. At this pace, my first proper research publication is going to be written by my child in 30-ish years, and not me. Something has got to change. In this post, I am going to share my old plan that miserably failed, self-reflect on what went wrong, and publish my new awesome plan that is destined to succeed!
In the previous episode
Lived in the middle of nowhere in Russia working remotely. Joined Facebook and moved to London. met my enormous ego. Burnt out on my failed attempt to get a promo from senior to staff. Reimagined the value of money and my own definition of "success". Decided to switch to AI.
Plan A
The easiest way to switch in a big company - change your team. The easiest way to switch to AI for an SWE - RAISE. It is a special program designed for switchers. They expect you not to know a thing about ML/AI, but know a thing or two about software engineering.
I figured this half I would simply take a math refresher and a course from fast.ai in the background. Next half the company is going to pay you to learn on the job, right?
Surprize-surprize, in the current macroeconomic environment the program was cancelled.
Plan B
Well, one can always find a team outside of RAISE. I saw several stories of how folks found SWE positions in ML teams and started taking more and more ML tasks over time.
I started massively spamming managers who had either open headcount or whose teams did something of interest for me. Published a post advertising my desire to switch teams and my skills on an internal portal. Only to face a reality check.
First, the world has changed. Layoffs blew away the times when managers chased engineers and teams were always hiring. Second, I am basically a coding monkey bound to web. Conference talks and open-source in a different tech stack do not matter. 11 out of 10 times a hiring manager is going to pick someone with relevant skills instead. And in the current environment, there is no lack of volunteers with relevant skills.
Real world : my ego - 1 : 0.
Plan C
Other smaller companies should be anxiously waiting for an engineer from FAANG to notice them, right? I opened LinkedIn to prove the world that the tech stack does not matter as much as my awesome problem-solving skills.
You can guess the result. Yet another reality check.
Real world : my ego - 2 : 0.
Plan D
Alright, time to invest heavily in my hard skills. Given that I already had a positive experience of doing an online Master's, I figured I could do the same thing, but for ML/AI.
I did not have a spare kidney to sell, so I had to find something budget-friendly. These are the 2 options I found:
- Awesome Data School from Yandex (offered in Russian for free!).
- Incredible OMSCS from which I am to graduate this Fall, but with a different specialization - Computing Systems (I was trying to fill in the knowledge gaps from the old days when I tried to become a musician instead of a software engineer).
I could start taking ML courses in OMSCS, but that would massively set me back. After the last 3 years, I was getting anxious to graduate. So, OMSCS was not an option. It left me with the Data School from Yandex.
Pros:
- Well-structured program
- Community of motivated people around
- Top-tier teachers whom I could talk to
- Strict deadlines
You see, I am not a "carrot" person, a proper "stick" works for me much better.
Cons:
- Acceptance bar is pretty high. I could easily spend several months preparing for exams and then fail.
- The program starts in the Fall, and I did not want to wait.
- Not flexible. I will graduate from my current Master's in December. Having OMSCS, Yandex Data School and work, all of them with tight deadlines, could potentially be a challenge.
- Yandex is a Russian company (and you know what happens in the world now, right?). Even though I would not pay a single penny to them, any affiliation with them could be an ethical problem.
If only I could cover the pros of the program on my own...
- Well-structured program It is out there, in the open. Take it and learn at your own pace.
- Community of motivated people around No replacement :(. On the other hand, with a full-time job, I would have a chance to properly benefit from it anyway. Also, we have internet and reddit. It is not a proper substitute, but still something.
- Top-tier teachers whom I could talk to When I flooded DMs of many managers and research scientists inquiring about open roles, most of the time their replies were pretty short and dry (which makes total sense). However, a few people expressed their genuine interest in helping me. I just asked one of those research scientist to become my mentor. Boom! Problem solved!
- Strict deadlines I was hoping I would feel guilty towards my mentor if I did not have a proper progress report for our monthly 1:1 meeting.
My study plan:
- Self-study fundamental math and ML
- Calculus
- Linear algebra
- Probability and statistics
- Classical ML
- Computer vision
- Natural Language Processing
- Meet my mentor once a month
- After finishing with the fundamentals, go through a list of major papers in the area and recreate the experiments. In parallel, offer free labor to one of the research teams inside of the company.
The plan looked solid. On paper. A month passed by. I barely finished a single module on Calculus. Sure, I could find a gazillion justifications of why it happened - starting from unexpected fires at work, ending with issues in my personal life. However, feeling sorry for myself would not fix the problem. I needed a different approach.
Plan E
I mentioned that positive motivation is not really my thing, did not I? I crave deadlines and moderate stress.
How could I have them without a formal class with a formal professor setting them? Set them myself! Set them and make them public. Let the mere fact that I publicly committed to certain deadlines put pressure on me.
I need to acknowledge that I am lazy as f**k. I was always like this. Accepting your demons gives you the power to control them, right?
It turns out there is a whole movement for "learning in public". It is mostly about using Feynman's technique to explain complex stuff so that your grandma could understand it, but who says we couldn't adapt it to publicly commit to some goals and dates?
Here I am. Committing. That is the whole reason for this blog post to exist.
What to study
- Calculus
- Professor Leonard.
- Calculus: An Intuitive and Physical Approach
- Extra practice problems on Openstaxю
- Linear algebra
- Probability
- Course on math for ML
- Classical ML
- Free book from Yandex Data School
- Courses from Andrew Ng
- Computer vision (TBD)
- Natural Language Processing (TBD)
How to study
Two rules:
- Pay yourself first. I am at my most productive in the mornings when my mind is still fresh. I am going to spend this time studying. This is a MUST. Work comes later and has a lesser priority. Additionally and optionally, I am going to study right after work if I feel like it.
- Spaced repetition. To process new information faster and more effectively I am going to repeat a module on the next day from a different source. For instance, I go through module A on Calculus from professor Leonard on day 1. Then on day 2 I am going to read up on it in the book from Klein. In a week, I am going to do a few practice problems from Openstax.
Reporting format
- Public notes in my second brain.
- Weekly reports in my online diary.
- Google Sheet with a day-to-day progress.
Deadlines
- I am committing to finish Calculus 1-3, go through the probability course, finish the math for ML course, complete the first module on linear algebra by the end of June.
- I am committing to finish linear algebra and classical ML by the end of August.
What is next?
If I am lucky to manage the workload, my learning goes well, I enjoy playing with the experiments from the papers, I overcome my greed, I am going to try coming up with a semi-decent (for a newbie) ML portfolio to get funded PhD studentship next year.
Managing greed and lifestyle sacrifices are going to hit hard. Typical PhD stipend in London - 20k pounds.
If you are struggling with laziness just like me and would like to try learning in public, drop your email in the waitlist for a new shiny platform for learning in public. MVP is coming. Pinky promise.
Do not stop dreaming and do not hesitate to follow your dreams! Living a life full of adventures is not a given, it is in our own hands.
P.S. I would deeply appreciate any thoughts and comments.