I value all the knowledge and, more importantly imo, experience that 5 years of professional programming has given me. But I'm surely not the first self-taught computer person to wonder about the gaps in my theoretical knowledge.
I've made a plan to fill in those gaps, and more. I've selected a set of courses, all of which are available online and none follow a rigid schedule. My aim is to grow, develop the muscle for consistent self-study, grow some more.
I don't worry that a course is too basic or too advanced. There are no hard deadlines, after all－I want a strong habit for self-learning, but I also have a professional career to run.
Projects and self-learning curricula go together like peanut butter and more peanut butter. I'll use the project work to:
- ground my study in practice, and
- apply what I learn in constructive creation.
A friend has kindly agreed to help me choose these projects, for which I'm grateful. I'd prefer to have projects which span multiple topics I'll be covering; their computer science experience can help me see how potential projects could overlap and evolve.
On their advice, I will select up to three projects, although fewer is better. I expect fewer projects to be easier to manage in the long-term.
It'll be a better learning experience for me to build up the projects as I move along my curriculum, instead of abandoning the work already done.
Projects are one of two possible artifacts I expect, the other being a simple language glossary.
I didn't create this curriculum from scratch, oh no! The thing about a gap is that one doesn't necessarily see its boundaries, especially before beginning to explore it. I relied heavily on the experiences of others (mainly teachyourselfcs.com) to create a broad personal curriculum. I fully expect it to change as I progress, especially when I discover advanced topics that interest me years from today.