I originally posted this post on my blog a couple of weeks ago.
Some time ago, I got a message from a reader starting his journey to become a Software Engineer. He found my takeaways from the Ultralearning book and asked for feedback.
On the email, my reader explained that he wanted to become a professional Software Engineer with a one-year ultralearning project. Also, he wrote he had a list of resources compiled and already made some progress.
I want to document my reply to help others and preserve my keystrokes.
This is how I would start an Ultralearning project to become a Software Engineer:
1. Set milestones
Keep yourself focused and motivated with milestones.
For example, after 2 or 3 months of studying, make sure to complete an introductory CS course or have some features of a coding project ready.
Often we underestimate what we can do in a year or get easily distracted.
2. Choose Math subjects wisely
This might be controversial. But don't get too focused on learning advanced Math.
Depending on the business domain you're working on as a Software Engineer, you might not need a lot of Math. Unless you're working on Computer Graphics, Finance, or Simulations.
I'd stick to courses on Linear Algebra and Math for Computer Science.
3. Use roadmaps
Find lists of subjects to learn from roadmaps.
If you search on Google or DuckDuckGo or GitHub "programming roadmap <insert year here>," you will find good resources. But you don't need to learn all those subjects at once. Instead, understand how a particular subject or tool fits into the larger picture and when you need it.
Only zoom in when you need a particular tool.
4. Write an end-to-end coding project
Write a coding project that reads data from a webpage, calls a backend, persists data into a relational database, and displays it back.
You will learn a lot from that simple exercise:
- HTML/CSS,
- a UI library,
- HTTP/REST,
- a backend language,
- SQL, and
- a database engine.
Quite a lot!
You will be surprised by how many "real" applications boil down to read and write data from and to a database.
5. Be consistent
I know this is cliche at this point. But...
Set a regular study time and put it in a calendar. I find the green squares on my GitHub profile inspiring to keep myself in the loop.
6. Learn the tech and tools companies are hiring for
Probably, you will hear or read people arguing to learn "X" instead of "Y" or "X" pays more than "Y."
Instead of looking for the best-paying languages, use a more tactical approach, find what companies around you (or on LinkedIn) are looking for, and learn those subjects.
Or, in any case, it seems there's always a shortage of COBOL developers. I've read they're well paid.
7. Keep a journal
Keep track of what you learn, the resources you use, and the subjects you find challenging.
You don't need anything fancy. A simple .txt file works. Sorry, if you were expecting Notion. I'm a plain-text lover.
I found this advice about the journal on the book "Never Stop Learning" by Bradley R. Staats.
Conclusion
Voilà! That's how I would approach a ultralearning project to become a Software Engineer. My last piece of advice is you don't need to learn everything at once. In the beginning, learn a handful of tools and learn them well. But don’t be afraid of learning something else. Later you could start expanding your toolbox and finding what you like the most.
I wrote my own roadmap for intermediate C# developers. It points to C# resources, but its overall subject structure works for other languages too. That's not for absolute beginners though.
I tried to challenge myself with mini ultralearning projects. I choose to learn "enough" React and Go in 30 days. Pure FOMO.
Hey, there! I'm Cesar, a software engineer and lifelong learner. Visit my Gumroad page to download my ebooks and check my courses.
Happy ultralearning!