Actionable insights to improve your experience.
Having struggled independently through much of my career as a software engineer, I love the fast paced, practical experience provided by Code Schools. While being self taught is a path many have taken to mastery, focused attention can produce greater results in much less time. If you’re just starting out and choosing to attend a code school, I’ve compiled a few thoughts I hope you find useful.
Adjust Your Expectations
Own your own experience.
Code school is not a magic bullet. The information doesn’t flow seamlessly from instructor to student. A tremendous amount of effort and mental flexibility is required to maximize the opportunity that these code schools provide. Between your instructor, community manager, and peers.. a wealth of knowledge exists but it’s up to each student to make the most of it. The students who own their own experience and take it seriously often gain the most.
Learn how to learn.
More important than any one language you’ll learn, reflect constantly on how you learn best. Also, draw connections between what you’re trying to learn and what you already know. Learning how to learn is the most valuable contribution of any code school. They’ve often done the work of making the knowledge practical and modern, but it’s up to you to internalize the process. The rate at which technology evolves, adaptability is a skill in and of itself.
Focus on good enough.
You’re not going to achieve mastery in a few weeks. If you’re hoping to nail everything at 100%, you’re optimizing for the wrong thing. With a bootcamp style experience, information will flow faster than you’re able retain. ‘Drinking water from a firehose’ is a great analogy of the road ahead. Yes, you’ll miss things and feel overwhelmed, that’s fine. Gather as much knowledge and skill as possible. Don’t sweat areas that aren’t in perfect focus. Deliberate practice and experience have a way of bringing things into focus over time.
Keeping it Practical
Making sure to provide some practical tips, here are a few pointers that should help maximize your experience:
Keep your folder structure organized.
Use thoughtful names and clean things up when they get overwhelming. Rather than deleting old code, create an ‘archive’ folder. It’s helpful when you feel discouraged to look back on old code and see how far you’ve come.
Schedule a time each day to practice.
This time should be in addition to classwork. Deliberate, independent practice is key to achieving mastery of anything. If you’re expecting to learn everything within class, prepare to be disappointed. Whether in the evening or early mornings, set aside a time and place where you invest consistently in your own independent exploration.
Setup a waterfall of skill levels.
Get to know a student that is more proficient than you, another who is at about the same level, and one that’s a little further behind. The first (more proficient) student will be able to provide helpful insight you may be missing. When you get stuck, their assistance can help you overcome barriers. The peer will push you. The benefits of working through things shoulder to shoulder can create an edge over time. For the student who is a little behind, they’ll present an opportunity to teach. Teaching something you’ve learned, regardless of how fresh, will refine your understanding of the material. Regardless on the experience level, focus not just on what they do, but how they think about the work. Remember, you’re trying to learn how to learn more than just complete the assignments.
Keep a simple journal.
This framework is simple and shouldn’t take more than a few minutes each day.
What did I learn today?
What do I hope to learn next?
Where am I getting stuck?
What am I going to do about it?
P.S. I wrote a letter to novices a while back. I think is still applies today.