Overcoming the Goldilocks Complex
Learning how to code — when you’re stuck in-between novice and expert.
“I’m over 101 courses. I want to try 201 and 301.” — thoughts on the lack of classes for self-taught developers between novice and expert.
Lately, I’ve felt a bit stuck with my progress on learning how to code as I think I’m comfortable with the fundamentals. As I’m starting to immerse myself in coding, reading article’s like the Viking Code School’s “Why Learning to Code is So Damn Hard” strongly resonate with me. I recommend checking out that article if you are currently transitioning from breadth knowledge of an area to depth knowledge of a more specific domain.
I have picked up a habit of attending technical Meetups regularly, but I find myself pausing when signing up for a class or workshop as I am afraid I will feel like Goldilocks, disappointed by a class that is not the right fit. The material in the courses I’ve come across is often too elementary or too advanced.
After taking a handful of classes and having a strong grasp on the essentials, it becomes more important to ask yourself questions about your goals before jumping from one class to the next.
Why am I interested in taking this class? Are the perquisites too advanced or too rudimentary for me? Will the material feel repetitive and if so, will the value outweigh the initial boredom? Would it be more beneficial for me to roll up my sleeves and use my current knowledge and skills to tackle a challenging project?
I’ve learned the fundamentals of programming. Now what?
Contribute to open-source software (OSS).
GitHub and GitLab have large communities of developers contributing to various projects across every sectors and technology stack. I am still learning a lot about software development but I recently contributed to CodeCorps, a friendly community that uses EmberJS and works on open source for social good. The great thing about OSS is that anyone can contribute.
If you need help getting started in OSS check out Your First PR and Up for Grabs which are both sites that help surface open issues that work well for individuals new to contributing to tackle. Additionally, Free Code Camp has a nice Medium article on landing your first open source contribution, from your browser, in 15 minutes.
If you are more seasoned in open-source software or just curious about the landscape, check out this piece on top GitHub projects in each country. It shows interesting patterns about the most popular types of open-source software, and it may help you find the next project you can contribute to.
Share what you learned (even if it is just for your future self).
Be sure to document your learnings. You gain a better grasp on material by teaching someone what you know. Presenting the information to others — via blog or in person — will reinforce what you’ve learned and allow you to prioritize the information in a meaningful way that you otherwise might not have.
I recently had to call myself out for imposter syndrome — I seriously considered signing up for a college-level Python class where I already knew ~90% of the content. In fact, it wasn’t until after I requested a copy of the syllabus that I realized I’d be disappointed. If you have a strong grasp on the main topics a course and have satisfied any applicable prerequisites, then perhaps you could gain more as a TA than as a student. In addition to teaching others, written documentation in a README or blog is a great way to allow you to look back at your learnings. Your future self will thank you for writing meaningful comments in your code.
Don’t be afraid to attend conferences and technical events that are outside the comfort of your current scope.
Earlier this month I was awarded an O’Reilly Media scholarship to attend O’Reilly’s Software Architecture Conference in New York City. The “Who Should Attend” section of the conference advertisement reflected their openness to novice techies, calling for “Aspiring software architects seeking the skills necessary to move up”. If you identify as a member of an underrepresented group within the tech community, apply here for a scholarship to an upcoming O’Reilly conference.
My biggest takeaways from the Software Architecture conference included learning first hand from Google Developers about how Accelerated Mobile Pages (AMP) and progressive web apps (PWA) can increase user engagement and increase second-visit performance in addition to the technical ways cutting-edge technology such as AMP can be implemented. I was able to bring that valuable information back to my job.
I found out about this scholarship opportunity through Elizabeth Ferrao of Women Who Code NYC and Jessica Waite of Hello World. Being involved in communities like Women Who Code, Ladies Storm Hackathons and Ladies Get Paid is a great way to find out about local opportunities and meet up with other women in the tech industry.
In addition to the technical topics that I was exposed to at the conference, I was able to engage in a discussion with other scholarship recipients about how important it is to speak at conferences even if you don’t feel like an “Expert” on a subject. There is definitely some realm where you are the expert — sharing valuable information from a personal experience is a great way to be an expert (e.g., How I overcame imposter syndrome, How I broke into tech without a CS degree, My experience as a bootcamp grad etc.)
Despite initially feeling like I was just an aspiring software architect, I was able to walk away with invaluable information from not only the various speakers but also the other attendees.
If learning how to code has taught me anything it is that learning how to learn is crucial to advancing. To conclude this article, I want to share an important quote from a Harvard Business Review article about how to get better at Learning to learn:
It speaks to the uncomfortable experience that goes with letting go of the training wheels:
“I’m not talking about relaxed armchair or even structured classroom learning. I’m talking about resisting the bias against doing new things, scanning the horizon for growth opportunities, and pushing yourself to acquire radically different capabilities — while still performing your job. That requires a willingness to experiment and become a novice again and again: an extremely discomforting notion for most of us.” — Erika Andersen, Harvard Business Review
Do you have any tips for leaping from a Novice coder to Expert programmer? If so, I’d love to hear your tips.
If you enjoyed reading this article consider tapping the clap button . Wanna see more of my work? Check out my GitHub to view my code and learn more about my development experience at http://aboutmonica.com.