Pile of books and a notebook

My Advice on Starting an Ultralearning Project

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:

  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 list of subjects to learn from roadmaps. If you search on Google 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.
  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. HTML/CSS, a UI library, HTTP/REST, a backend language, SQL, and a database engine. Quite a lot!
  5. Be consistent: 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, use a more tactical approach, find what companies around you (or on LinkedIn) are looking for, and learn those subjects.
  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. I found this advice on “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!