What do you learn when you pursue something? There's obviously the skill itself at face value.
As a musician, you learn to play music. As a programmer you learn to code. As a writer, you learn to write.
There are intricacies within each subdomain that apply to the specific pursuit, but these skills often don't transfer between pursuits.
But, if you take a little peak under-the-hood, there are always transferrable skills that translate very well between different pursuits. These are the meta skills, or the "life lessons" that each pursuit has to offer.
Here are 7 of my favorite life lessons that attending a coding bootcamps will teach you.
Lesson 1: Accept Responsibility
If you're contemplating joining a coding bootcamp, you likely see coding as an avenue to solve a larger pain point in your life, whether that be finances, fulfillment, or anything else.
Solving for this pain point with a career move requires dedication because it isn't easy.
You need to be intentional. Your actions need to serve your long-term vision. You need to be able to discern good and bad choices.
You need to be in control.
But exactly how do you develop this control in your life?
You accept responsibility. The thing about accepting responsibility is that it breeds control. Take these examples:
- When you accept that your habit of overeating has caused you to become overweight, you can begin eating healthy to lose weight.
- If you accept that your habit of escaping with alcohol has lead you to a drinking problem, you can begin coping with stress in other ways to curb your alcohol intake.
- If you accept that your habit of overworking has lead you to marital problems, you can choose to spend time with your spouse instead of work to begin healing your marriage.
Every behavioral shift starts with the acceptance that your actions in the past have lead you to an undesirable place in the present.
This also implies a belief that your present will influence your future.
A coding bootcamp will force you to accept responsibility by being blunt that your outcomes are your responsibility.
Realistically speaking, they can't guarantee a specific outcome anyways, as not everyone is guaranteed to graduate with the same level of expertise, experience, knowledge, and skills. This is an obvious given. In other words, what you get out of the program is entirely dependent on what you put in.
What a liberating realization.
This freaks some people out because it's scary to be on the hook for your own success. But being on the hook for your own success means your success isn't dependent on someone else. It's not dependent on your present situation or your past.
You are in control.
Lesson 2: Believe That You Can Learn
I can vividly recall when some students at Hack Reactor would show discontent with the curriculum because the material was nearly impossible to finish in the allotted time.
I would respond bluntly:
The curriculum was designed to be difficult, and getting students through everything isn’t the primary objective. Our primary objective is to get you to become coders who believe in their own capacity to learn.
“Drink from a new firehose every 2 days,” we would tell the students.
We gave them assignments that included way too many technical topics in order to be thoroughly understood in the timeframe, and then outlined “bare minimum requirements” to ensure they understood the core lessons from the materials. They would constantly be challenged to work through problems they had never seen before. They would get 48 hours to work through it.
Students would then repeat this process in 2-day sprints for 6-weeks.
Is this the most effective way to learn?
Understandably, some students were skeptical and inevitably asked the question. I'll be the first to admit that this teaching model is not the most effective way to transmit knowledge from one brain to another. But thankfully, knowledge transmission is only the very first part of the learning journey.
The rest of the learning happens when you go apply your understanding on a topic and find out for yourself how the knowledge plays out in practice. It's in this "rest" of the learning that you actually internalize skills so you don't just forget how to do things later. Giving students an opportunity to actually go find out for themselves what each lesson has to offer is the most effective way to teach something.
In other words, you learn by doing. Not by sitting in a lecture.
If you do this for 6 weeks straight and you see yourself repeatedly picking up core lessons about programming along the way, you begin to develop confidence in your own learning ability.
And once you start believing in your own ability to learn, there’s no stopping you.
Lesson 3: Remember What Learning Feels Like
Here's a quick story from a few years ago.
My son had just turned one a few days ago.
He had been working his way up to standing against the coffee table, letting go, and taking a couple steps without holding on to anything.
This particular afternoon looked promising.
Although his legs were still a bit wobbly, he was getting closer to finding his balance on each additional attempt. He stood up against a coffee table just like one of his other attempts. He let go of the table and started leaning forward and led with one foot.
Usually he would come down after 1 or 2 steps so I was ready to help him get back up.
But this time, he took a third step.
I was ecstatic.
Then he took his fourth step. Then his fifth. Then his sixth.
By the end of that night, he was walking around our apartment with a big grin across his face. He just couldn't get enough of this walking thing.
He was unstoppable.
This is the story I like to recall when talking about the difficulty of learning to new coders.
Learning is not supposed to be easy.
Just like how a baby can barely stand on his own two feet at first, let alone walk, coding feels similarly slow and painful at first.
You can't debug anything quickly. You have to google the meaning of each and every line. All you have to show for your hard work is the few contrived snippets of code that won't impress anyone.
Learning feels hard because you always start out at the slowest part of the growth curve.
The process of learning starts out with pain and agony.
Coding bootcamps will drill this into you by giving you novel challenges that are seemingly impossible at first sight.
Each challenge will start out painful, but that's expected as it's not supposed to be easy. Just because it's hard at first doesn't mean it's impossible. Look no further than the thousands of graduates that have learned the lessons and made it into industry.
A coding bootcamp will push you to travel this growth curve. You'll intimately understand what it feels like to work through learning. It'll teach you not to be demoralized at the first sign of difficulty.
This is an immensely valuable skill in programming and in life.
Lesson 4: Set Aside Time
How hard is it to learn programming by yourself?
It's not impossible, but you have to be savvy with how you study.
It's not enough to muster up enough "willpower" to work through the materials. It's not enough to tell yourself that you'll study X hours today. It's not enough to lay out a big list of things you need to study.
There's a lot more to environment design that people underestimate when it comes to effective learning.
A central key component to environment design is to set aside time.
How Coding Bootcamps Set Aside Time For You
By yourself, you're looking at overcoming these problems:
- A schedule that you have to come up with yourself. You need to then communicate to others why this time is important.
- No social accountability unless you proactively find an accountability partner for yourself.
- No financial accountability. No strong financial disincentive to slack off.
Coding bootcamps triangulate a 3-part solution to this problem. These three things are already done for you:
- A schedule is laid out and the purpose of the schedule is crystal clear: To get you to transition careers.
- Social accountability is baked into the cohort as well as the teacher-student relationship.
- There is a strong financial disincentive to start slacking off. These programs are usually a steep financial investment.
The biggest trick to getting better at anything is to set aside time for it and make it likely that you'll follow through.
Coding bootcamps enable you to say "no" to other things so you can say "yes" to coding.
Lesson 5: Protect Your Focus
Coding bootcamps are constructed around the central idea of optimizing your learning environment. They do this because they know that the practice, or the actual act of coding, results in learning, so they optimize for your act of coding.
They know that it has less to do with the specifics of the curriculum or the credentials of their teaching staff. In fact, they often even hire their own graduates (I was one of those hires.)
The last lesson was about setting aside time. The thing I didn't tell you about setting aside time is that it has a twin brother: "Protect your focus".
The act of learning occurs precisely when you are deeply intertwined in the complications of pernicious problems. But in order to get there, you have to protect your focus, and not allow your train of thought to be interrupted. You must eliminate distractions ruthlessly and protect your focus.
Some coding bootcamps will reinforce policies like:
- Put your phone away during programming time.
- Block distracting websites.
- Find a quiet room when you are self-studying.
If setting aside time was about the quantity of time you have for an activity, protecting your focus is about capitalizing on that time by maximizing the quality of learning that occurs.
These fundamental principles are not unique to coding. They are universal to any pursuit. Your ability to set aside time and protect your focus dictates your effectiveness at anything.
Lesson 6: Practice Deliberately
Possibly the most underrated skill of all time is the ability to choose the right practice and actually follow through on the practice.
At the core of learning to learn is the ability to practice deliberately. It's the secret sauce and the key to unlocking one's true potential in any pursuit.
Here's the most important lesson I've learned about practice, and how a coding bootcamp teaches this lesson:
There are two kinds of practice:
- "Practice" (in quotes)
- Deliberate practice.
At surface level, this doesn't make much sense. Deliberate practice sounds like a subset of practice. That's just a technicality of the grammar though.
Deliberate practice is the only kind of practice you should consider doing.
Everything else, as in non-deliberate practice, is just masquerading as practice and not actually serving the purpose of making us better. Non-deliberate practice might look like peaking at your phone every few minutes while you "study". Or it might look like a college student sitting in the library but browsing Facebook for half of the time.
Don't kid yourself. You can do better, and you should do better.
Deliberate practice is about understanding where one's gaps in understanding or skills are. And then tailoring the practice to address those specific gaps.
A coding bootcamp will teach you how to practice deliberately by introducing challenges that are targeted at learning a very specific skill, in the appropriate order.
By actually walking the walk and becoming engrossed in the process of programming all day while at a coding bootcamp, you come to appreciate the carefully crafted order of the curriculum contents to get you from "not able to create a web app" to "can't get enough of creating web apps".
It's important to be able to go beyond the consumption of a curriculum and realize the meta lessons being taught. The kind of deliberate allocation of focus and time on the most important challenges you should be facing unlocks your ability to improve quickly at any skill.
Lesson 7: Teach What You Know
Some coding bootcamps will nudge you to start a blog. I followed this advice and started a technical blog on programming back when I was a student at Hack Reactor. It taught me several key lessons:
- Technical topics are best understood when you work through teaching it to others.
- Writing about something makes you realize just how unclear specific constructs are in your head.
- You turn your vague mental models into presentable, crystal clear explanations of how something works.
The thing about "teaching" that nobody talks about is that teaching solidifies the teacher's understanding more than the student's understanding.
That's because there are two kinds of teaching:
- Convey a message to transmit an idea from one brain to another.
- Show the ropes for someone else to actually climb and develop themselves.
The former kind is the stereotypically understood teacher-student relationship. The latter kind is the homework assignments, and where the actual learning occurs.
The former kind of teaching benefits the teacher because the teacher is the one with the most difficult assignment of presenting a coherent message. The latter kind of teaching benefits the student because the student must complete the difficult task of climbing the ropes themselves.
There's a theme here: the more difficult something is, the more likely you are to learn something in doing that thing.
As an effective learner, you want to be the teacher that conveys coherent messages to others, and you want to be the student that is actively showing up, doing the work, and participating in the process of developing your own skills.
A coding bootcamp will show you the ropes to climb which is where you'll learn the most, but it won't give you teaching opportunities to round out your learning experience. This is why "starting a blog" about the technical topics you learn in a coding bootcamp is great advice. It addresses holes in your understanding by forcing you depict your mental model clearly to others.
Conclusion and Parting Advice
There are meta lessons in anything we do in life.
Look no further than your current job and your current situation. There's probably a few key insights that you can walk away with that are going to serve you for the rest of your life if you look carefully enough.
Do whatever you can to hold on to those lessons. Let these ideas marinate in your head and then write about them. It could be publicly just like I did here or it could be in a private journal.
Make it a practice to realize, acknowledge, and appreciate everything useful that your past and current situation has to offer you. It's only when you realize the value of your past that you can make use of it and let the lessons learned serve you going forward.