Last spring I attended Hacker School, which is a 12-week retreat for programmers in NYC. It is a truly fantastic program and many other Hacker Schoolers have written lots of nice things about the program and advice to new folks that you can find elsewhere on the internet.
The reviews mention the friendly environment, curious peers with a breathtakingly wide variety of skills and interests, the fanatical focus on projects that push deeper understanding, and the profound intellectual transformation of the experience.
The advice to new admits, including mine, generally also addresses the structureless nature of the program: there is no curriculum, no set goals, no staff of ‘teachers’ to tell you what to learn each morning. Many people find this daunting, and in many ‘end of batch’ recap blog posts I see people regretting that they didn’t ‘figure out’ how to navigate this until late in the batch and lament the ‘wasted time.’
But the discomfort and the time spent floundering are precisely the point. They are what makes Hacker School so valuable for you, long after you walk out the door on your last day.
In the space between the step-by-step beginner tutorial and your little project that ends up on the top of Hacker News is where you have to find the path for yourself. In the outside world, in your job, in your side project time, in the hours left in your life, who is going to tell you what path to follow and put a curriculum in front of you each day? To make a real difference and push the human race forward, you have to learn to blaze trails into the unknown, pick up new skills quickly, and decide for yourself what to learn next.
Hacker School does this by getting out of your way. They create a hyperbaric chamber for learning by fanatical obsession with the perfect environment. They pick curious and generous peers, hire thoughtful and energetic facilitators, remove extrinsic motivators like interview preparation as much as they can and then they get the hell out of your way.
They let you chart your own course, even if that means a little floundering as the floundering is an essential part of this learning. You are figuring out what excites you. How to balance the lure of the new and shiny with the need to buckle down and polish core skills. How to explore when you have no idea what lies ahead. How to use source code and fellow programmers for help when you don’t understand. And how to tell when you have wrung the last bit of learning and enjoyment out of a project.
Figuring out how to chart this path for yourself is much harder back out in the world where you are faced with distractions and uncurious peers, unhelpful or non-existent mentors, pressure to ship uninteresting code for other people, and bills to pay. A 3-month gap where you can pursue anything that interests you is a breath of fresh air, and in that ideal environment have a very real shot at learning how to learn.