Pile of books and a notebook

This Is How I'd Start an Ultralearning Project To Become a Software Engineer

Some days ago, I got a message from someone starting his journey to become a Software Engineer. He found my post with the 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 my long reply and how I would start an Ultralearning project:

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 as inspiration

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 this simple exercise:

Quite a lot!

ou 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.

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. This is not for absolute beginners.

I tried to challenge myself with mini ultralearning projects. I choose to learn enough React and Go in 30 days.

Happy ultralearning!