Looking for your first Developer Job?

It’s been a while since I’ve posted on Rails Mama, and I want to let my readers know about my new site, Dev Ready.

The new site is all about the path to becoming a professional web developer. I’ll be sharing tips on interviewing, job search, surviving coding bootcamp, and finding the best online resources for learning.

Check out my first posts (all related to the Junior Developer job search):

I would love to hear your feedback on the site. Good, bad, or neutral, all feedback is appreciated!

Join me at Dev Ready!

Coding Bootcamps: A Fork in the Road for Tech Diversity

For years tech companies have lamented “The Pipeline Problem”: the shortage of female and other diverse candidates in the hiring pool.

The opportunity to change that dynamic may come from a surprising source: Coding Bootcamps.

Computer Science and other STEM majors consistently fail to attract female students. The reasons are complex, but 3 important factors are:

  1. The stereotypical profile of a Computer Science major does not meld easily with the average woman’s self-image. Young women recoil from Computer Science for the same reasons that men recoil from nursing. We simply cannot reconcile our self-image with the image we attach to that career.
  2. Computer Science programs involve intense competition between students. This feels very uncomfortable to women, who are taught to cooperate rather than to compete.
  3. Men get greater exposure to and encouragement in technology and math throughout childhood, meaning that female students arrive at CS101 already at a disadvantage. The teachers assume a certain level of knowledge from their students, and when a student does not have that base of knowledge on day one, she assumes she must be “less talented” or otherwise unsuited to the profession.

Examining the issue more closely, however, we see that girls are given less opportunities to explore computers. Subtle messages from parents, teachers, friends, and popular culture steer girls away from computer games, tech camp, and the joy of disassembling household electronics.

We may never know how much of the difference can be attributed to societal attitudes versus natural preferences, but ask any 3-year-old, and they can tell you what gender a construction worker or a nurse “should be”. The ideas about Software Developers evolve a bit later, but only because toddlers are not yet familiar with that career. Try asking a 10-year-old to draw a Software Developer. If you find one who draws a woman, $100 says her Mom’s a developer.


So, how do Coding Bootcamps factor into all of this?

Coding Bootcamps are in their infancy. There’s still time to mould them into the missing link for tech diversity. Mistakes were made at the inception of college-level Computer Science programs. Those mistakes can and should be remedied, but it will be an uphill battle. Coding Bootcamps have the opportunity to “do it right” from the beginning.

Another advantage for Coding Bootcamps it that their students are generally a few years older than college students. Those few extra years of maturity can make a world of difference. An 18-year-old college freshman still has a relatively unstable self-image and still feels the pressure to conform. A few years later, she will generally shed her desire to conform, accepting both the popular and unpopular facets of her personality.

Coding bootcamps come in at just the right time–late enough to give the student a chance to experience the work world, but early enough to leave years for a fruitful career.

By the time women gain the maturity level and motivation to buck the ideals of popular culture and fight the uphill battle to claim their place in the tech industry, they have often assumed enough family and work responsibilities that the traditional CS degree–with all its forays into interesting but impractical subjects–is so time-consuming as to be impractical.

Coding bootcamps, with their narrow focus on practical skills, give students the chance to learn the critical fundamentals in a short sprint, and then fill in the gaps on their own time.


How can Coding Bootcamps take an active role in changing the dynamic?

  1. Explicitly state all prerequisite knowledge, along with how to obtain it. Never assume knowledge, no matter how basic you believe it to be.
  2. Give added support to diverse students. Recognize that they may have unique challenges, such as the need to balance outside responsibilities and school, gaps in foundational knowledge, impostor syndrome, or feelings of social isolation.
  3. Implement Social Rules: Stepping outside of your socially-ordained role is taxing on the ego. Micro-aggressions, whether intentional or unintentional, can have devastating impacts on diverse students. Hacker School has a very impressive student manual with social rules that I would love to see implemented in every Coding Bootcamp.
  4. Partner with companies that are looking to improve diversity. Large companies can pay for bootcamp training for employees who are looking to switch from a non-technical career into a developer role, or simply hold their jobs while they retrain.
  5. Give up on the ideal of the Natural Super Genius Developer. Natural talent? It’s a myth. Talent does have a genetic component, but genes are expressed differently based on environment. Deliberate practice is the key to mastery of any subject, and propagating the myth that some people are born with the ability to write beautiful code only discourages budding talent.

We are at a fork in the road, and now we must choose: Will we continue with the status quo, checking the box for “minimum diversity level attained” or will we recognize this unique opportunity, and address the systemic issues that sustain our homogenous technical culture?

What Coding Bootcamp Doesn’t Teach

When I was going through Coding Bootcamp, I wondered if I would really learn the skills I needed to be a software developer.

The answer is that coding bootcamp is only a small piece of the journey. Learning to code is a marathon, and attending coding bootcamp is like sprinting 500 yards to get to the gigantic water station. By attending coding bootcamp, you’re able to dump that refreshing, icy water on your head much sooner than the steady joggers, but the race doesn’t suddenly end. You still have endless miles ahead of you after you reach the water station.

Here’s a snapshot of what you learn in each phase of the marathon:

The Stretch (Learning Before Bootcamp):

  • HTML and CSS: The Building Blocks of Basic Websites. (see General Assembly’s Dash or Codecademy HTML & CSS)
  • Basic Programming Concepts: Exposure to loops, control flow, data types, etc. (see Codecademy Ruby or Learn Ruby the Hard Way)
  • Basic Command Line Skills: changing directories, moving files, etc. (see Learn CLI the Hard Way)

The Warmup Laps (may be before or during bootcamp, depending on school)

  • Object Oriented Programming concepts: Classes, objects, encapsulation, polymorphism, etc. (Lynda.com, $25/month)
  • Basic Database Concepts (SQL / Relational Databases)
  • Model View Controller
  • REST

The Sprint (during Coding Bootcamp)

  • how to solve problems with code
  • how to make websites with code
  • how to get data from other websites through web services
  • practice making and breaking a lot of stuff

The Water Station (reaching your first job, where you get paid to learn and have more resources)

  • Practice coding all day without sacrificing the ability to support yourself
  • Have constant access to experienced developers for help
  • Get company-provided resources: libraries of programming books, Lunch and Learns, etc.
  • Get a clear picture of what specific skills you need to learn

The Rest of the Marathon

  • Learn about design patterns (see Principles of Object Oriented Design in Ruby)
  • Learn about Data Structures (Lynda.com, $25/month)
  • Deepen your knowledge of every subject you studied: databases, Ruby, Rails, web services, command line
  • Learn the operating systems, text editors or IDEs, monitoring apps, deployment and hosting apps, and other tools your work uses. (God help you if you have to learn Vim as a newbie.)
  • Learn Agile best practices. Learn to scream and claw your face if your company uses Waterfall-style development.
  • Learn other languages that give you a new perspective on code: C++, Java, Assembly, and Lisp are frequently mentioned as brain-stretching languages.

The hardest part of the journey is the beginning. It’s like running without water.

Things get easier once you reach your first job. Coding becomes a built-in part of your day, rather than an extra task that must be squeezed into the crevices of your life. Yet, once you start your job, you find that just learning on the job is not enough.

There’s still so much to learn, so you lace up your running shoes and get back on the track. If you’re like me, and you love the feel of the road beneath your feet*, this will be a joy rather than a burden. You never reach the finish line, you just learn to love the race.


 

*You might get the impression from this post that I love to run. HA! I wish. I love running about as much as I love drinking Clorox.

 

 

Is Coding Bootcamp Right for You?

I often hear from aspiring developers who wonder if a Coding Bootcamp will teach them enough to get a job as a Junior Developer.

Although I got a great result from Coding Bootcamp, I have seen others who have graduated from coding bootcamp, only to remain stuck in their old jobs.

From what I’ve seen, the main differences between Coding Bootcamp graduates who get jobs quickly after graduation and graduates who go long periods of time without any leads are:

  1. The quality of their job search skills,
  2. Their level of motivation, and
  3. Persistence

There is so much demand for software developers that, with the level of skill gained at a Coding Bootcamp, it is absolutely possible to find a job.

That being said, it is NOT easy. Breaking into a new career never is. Job hunting in general never is. It takes a massive amount of effort to find a job, and entry-level jobs are often the hardest to find. Getting an entry level job means convincing someone that, although you don’t know enough to be immediately useful, you are worth investing the time and money required to train you to be useful.

As in other jobs, employers want to see that you’re passionate about what you do, you’re eager to learn, you learn quickly, and you have a personality that they can handle being cooped up in an office with.

Junior Developers need to demonstrate 2 additional traits:

  1. problem-solving ability
  2. foundational coding skills that can be built upon

So…does Coding Bootcamp teach you what you need to know to get a job?

Partially.

Coding Bootcamp should give you enough foundational coding skills to meet the technical requirements of an entry-level position. My bootcamp also tried to address problem-solving skills and job search skills, but either one of those skills could consume an entire course on its own.

Yes, most Coding Bootcamps offer job search assistance, but it is just that: assistance. They cannot sit in the interview room and force you to make eye contact. They cannot save you if you become despondent and give up the first time you apply for a job and are not taken seriously. They cannot light a fire under your rosy little cheeks to make you chase a job like your life depends on it.

What they can do is help you get the technical skills you need.

But wait–can’t I get those for free, by working through online resources?

Yes. Yes, you can.

Then why should you go to Coding Bootcamp?

That’s a great question, and maybe you shouldn’t. You can save some big bucks by teaching yourself or by doing FreeCodeCamp.

The benefits of Coding Bootcamp over teaching oneself are:

  1. It’s faster. You will be sprinting for a few months, learning faster than you would ever naturally push yourself to learn. You will be fighting to keep up, and as a result, you will cram more information into your skull in a shorter period of time.
  2. Focus. You will have a period of time that is fully dedicated to learning to code. Having deadlines will keep you pushing forward on days when you otherwise would have prioritized other things. You will also have an excuse to tell your family and friends when they want to distract you from studying.
  3. Live Help. You have access to your teachers and other students, so you spend less time fighting problems and more time moving forward and learning.
  4. Resume Fodder. You will have concrete proof of skill that you can list on your resume, and this could be the difference between getting and not getting an interview.

If you are highly motivated and have time to spare, Coding Bootcamp might not be the best option for you. You can learn the technical skills through FreeCodeCamp and other online resources, and attend meet-ups to get live help and make connections. The job search might take a little bit longer, but you will eventually find something.

The path to the finish line will be faster and easier with a Coding Bootcamp, but it’s not the only option. Whether or not it’s worth the price tag will depend on you: your personality, your timeline, and your finances.

Coding Bootcamp: The Good, The Bad & The Ugly

Looking back on my experience juggling a full-time coding bootcamp and a full-time family, there are things that I did well, and things I would definitely try to do better, if given the chance to relive the experience.

The Good:

  • I did a great job prepping my husband for the experience, explaining in detail how absent I would need to be, and what that would mean for him. I think it helped him (mostly) keep his sanity, and when all else failed, gave me an “I told you so” get-out-of-jail-free card to keep in my back pocket.
  • I said goodbye to my friends, telling them that over the next 3 months, I would be available if, and only if, their life caught fire. It allowed me to devote all my limited free time to my family, without feeling guilty about lapses in friendships.
  • I prepped heavily for the coursework, allowing me to start from a position of only-slightly-behind (as compared to the other students, from my own, self-critical point of view).
  • I prioritized networking events, attending only the ones that seemed likely to either: a) teach me something vital, b) significantly improve my chances of getting a job, or c) help me keep my sanity. (Rails Girls was the one event that addressed all 3 goals.)

The Bad:

  • I should have used “time blocking”. As ignorant as it makes me sound, I had never heard of it before attending The Iron Yard. I blame the fact that the majority of my friends belong to a fatalistic culture that does not believe in the importance and/or existence of time.
  • My default answer to all requests should have been “no”, because it is much easier to change a “no” to a “yes”, than a “yes” to a “no”. —> “No, I cannot attend that event. No I cannot go to your party. No, I do not see the poop smeared on the walls, and no I will not clean it up.”

The Ugly:

  • My biggest struggle was an internal one: Impostor Syndrome. I still don’t quite feel like a coder, despite the evidence on Github, and I spent an unhealthy amount of time worrying that I would fall behind in class, and no one would come back for me.

and one more….

The Beautiful:

  • I made it! And now I can help others make it, too.

If you’re considering joining a coding bootcamp or learning to code on your own, I’ve been there, and I’m happy to do anything I can to help.

Surviving Coding Bootcamp with Kids

You have to be a whole lot of crazy to join a full-time coding bootcamp with a family depending on you.

60-hour-workweeks + 12 weeks to learn 2 years worth of material + 3 hours of daily commute + 2 irrational, demanding, adorable balls of sweetness + 1 husband who is losing his mind being alone 24/7 with those adorable, irrational creatures equals:

……(trying to find a calculator)….

…..Ah, yes….insanity.

In an abstract sense, I knew what I was getting myself into. I knew it in much the same way that I know the Earth is round and the universe is infinite.

Am I proud to have survived this experience?

Not really.

Mostly I’m shell-shocked, with a loud ringing in one ear, disconcerting silence in the other, and a small trickle of blood coming from some location that I have yet to identify.

If I am proud of anything, it’s that no children were harmed in the making of this final project.

Now that it’s all said and done, I wipe the blood on the sleeve of my shirt, and ask myself:

Would I do it again?

Yes. Yes, I would.

 

Sanity is a Finite Resource

Sanity is a finite resource, and this weekend my tank hit empty. I’m talking about light-flashing, engine-choking, pull-over-on-the-side-of-a-six-lane-freeway empty.

We’re in week 10 of coding bootcamp, and somebody decided it would be a great idea to schedule a semi-mandatory internal Hackathon over the weekend.

A Hackathon, for those of you who have not experienced one, is an all-weekend event where coders get together in small groups, choose or get assigned a massive coding project, and attempt to tackle it in a single weekend by forgoing all sleep. Clearly a concept designed by someone who does not have children.

The timing was incredible–my class (Ruby on Rails) and the iOS class are at the beginning of a sprint to complete a final project in time for demo day. The third class (Front End) is only 2 weeks into their course, which presents an entirely different set of issues.

I had also volunteered to help out with a Rails Girls workshop the following weekend, giving me one less weekend to work on my final project. I had really, really been counting on this weekend. Unfortunately, I’m not good at knowing when to cry “Uncle”.

Which brings me to the “bat-shit-crazy” part…

….. Let’s just say I broke down in tears, and walked out a few hours before presentation time….

Yeah, that pretty much sums up the important points.

The long version of the story is that things started out pretty well. I got assigned a project I really liked: creating a “Panic Button” app that notifies family members of an emergency with a click of a single button. I also got an incredible team, packed with extra features like–gasp!—real, live social skills!!

I became leader-by-default, and we were able to agree on a beautiful, simple design. My teammates were even wise enough to understand that having the web app match the mobile app was more important than indulging their individual design preferences. The iOS app was especially impressive, with a simple interface and appealing colors. Things were looking up.

And then day 2 came.

Day 2 was when I realized that by some form of black magic, we had to link the web app with the iOS app–no super glue allowed. Neither of us had any clue what our side of that equation was supposed to look like, and half-way through a stressful, sleep-deprived weekend, in front of some theoretically potential employers, with the guidance of some programmers who did not know our particular technologies but knew enough about programming-in-general to make us feel like Special Edward, was not a comforting place to learn.

I went into complete brain-paralysis.

My teacher tried to help, but I kept thinking, “Your lips are moving, but no sound is coming out!”

By the morning of day 3, it was pretty clear this ship was sinking, and my teammates were smart enough to pull together a Power Point presentation showing what our app was supposed to look like (given 2 more weeks and / or a greater reserve of sanity).

I, on the other hand, was sitting on the sidelines thinking, “There is no freakin’ way I’m presenting a Power Point when other people have working apps to show.”

And that’s when I broke down and said, “I’m sorry, but I just can’t do this. I’m going home.”

Sanity is a finite resource, and you can only run on fumes for so long.

I went home and decided I would not even think about coding for the rest of the day. What I really wanted to do was tell my school, “You can shove my final project up a deep, dark hole. I’ll do it in my own time, and find my own job.”

There were just enough fumes-of-sanity to keep me from doing that…at least temporarily.

Since the start of this course, I have pretty much devoted every second of my time to learning to code, sitting in class and/or traffic, and trying to be a mother to my 2 children. I’m not exaggerating when I say that I haven’t so much as watched a 30-minute TV show (unless you count having cartoons on in the background.)

It was funny to see what happened when I gave myself permission to not code for one entire day.

For starters, my children, who — every five minutes — ping the Mommy Server with, “Can you pay attention to me now?” were shocked to get back a “Yes”.

They both spent the entire day in my lap, and my son told me about 100 times, “Mommy, I luh yoo”.

I enjoyed it so much that I decided to take Monday off too. I woke up at 8:30 a.m. (can’t believe I slept in so late!) and then went back to sleep at 9:30 a.m. and slept for another 3 hours. We then went out to eat with my brother, and on the 30-minute drive home, I fell asleep in the back seat like an old person / young child / motion-sick-Golden-Retriever.

Tomorrow I suppose I’ll drag myself back to school, even though that seems like an incredibly unproductive way to spend my time. I’d get a hell of a lot more actual coding done in my dark, cold, quiet basement, but I suppose I need to prove (or fake) that my sanity is still intact.

On a side note, we won the contest. Believe it or not, we took first place.

On another side note, WTF?

If all they wanted was a Power Point presentation, I could have knocked that out in an hour.

I’m beginning to think this is all a big government-funded social experiment to test the limits of human sanity. Oh sorry…that’s just the empty tank speaking, (psst…this place is bugged.)

How to Prepare For Ruby on Rails Coding Bootcamp

Coding Bootcamps are an incredible resource for accelerating the learning of beginning programmers.

It is, however, important to remember that the courses are only a few months long. It would be unrealistic to expect to learn everything you need to know to be a Junior Developer in just 2 or 3 months.

The biggest piece of advice I could give to any person who is planning on attending a Coding Bootcamp is this:

Teach yourself first.’

If you start the course with a basic understanding of the fundamental concepts, you will struggle less and learn more than the students who do not have that strong foundation.

First, here are the top free and paid resources you should use:

Free:

  • Codecademy:  Well-designed introductory courses on multiple common programming languages.
  • Learn Code The Hard WayLess fancy, but more in-depth courses on several common programming languages. Note: You may have to dig for the link, but there is a “Free HTML version” of each course.
  • Coursera: Courses offered for free by major universities. The content and availability of the courses varies.
  • EdXSimilar to Coursera
  • Hartl’s Rails TutorialThe definitive introduction to Ruby on Rails. Like “Learn Code the Hard Way,” the same content is offered for free online or as a paid PDF download. ***Note: The recently-released 3rd edition is much more beginner-friendly than the previous edition, but the 2nd edition does teach one important skill: setting up a development environment. Going through the first chapter of the 2nd edition to would be a good exercise once you have more experience.
  • Google(Yes, Google.) Never underestimate the power of Googling the error messages you see. 90% of the time, you will find the answer in Stack Overflow
  • Stack OverflowA website that allows programmers to post questions and get answers from other programmers. As a newbie, it will be very rare for you to encounter a problem that has not already been documented on Stack Overflow. Be warned: you are expected to check that the question has not already been asked, and make a reasonable effort to troubleshoot the problem before you ask a question. (The penalty for not doing so is death by humiliation.)

Paid Resources (each worth their price):

  • Lynda.com: $25/month. An extensive library of high-quality videos on a wide range of topics. Programming videos range from Introduction to Programming through advanced, language-specific courses.
  • Treehouse: $25/month (Basic account, which has all the features you need) Interactive courses that include videos, quizzes and code exercises. The topics are more limited than on Lynda.com, but the interactive exercises and well-moderated forum make these courses especially helpful.
  • Codeschool: $29/month Similar to Treehouse, though possibly a bit more advanced. Has more up-to-date Rails courses than Treehouse.

Here are the concepts and technologies you should have a basic familiarity with before starting a Ruby on Rails bootcamp.

Critical Knowledge:

  • Fundamentals of Object Oriented Programming: This will give you the basic understanding of programming and the vocabulary that you will need. Lynda.com is my top choice for this. Second choice would be a free open course on Coursera or EdX (the courses offered vary, so I can’t point out a particular one).
  • Command Line Proficiency: (You know that black box labeled “Terminal”? Stop double-clicking on things and start using that instead.)  Learn CLI The Hard Way is an excellent resource, but you will only become truly proficient if you use the command line (aka bash) regularly…so read that and then stop double-clicking.
  • Basic Text Editor Familiarity: (This is where you will write the code that you will run in the terminal). Sublime Text or Atom are great text editors to download. Both are free-ish, but Sublime will bug you to buy a license. You may hear that Vim is the best text editor, and that is true for experienced programmers, but is not worth fighting with if you are just starting out.

Pretty Darn Critical Knowledge:

  • Basic Ruby: Codecademy is a great starting place. If you have time, try “Learn Ruby the Hard Way” as well. If you have time and money, try Treehouse and Lynda.com.
  • Basic HTML and CSS: Again, start with Codecademy, then try Treehouse or Lynda.com, or just build some sites for practice.
  • Basic Rails Knowledge: You MUST go through Hartl’s Rails Tutorial, but don’t be surprised if you have to spend a significant amount of time googling error messages. For additional practice: Lynda.com can give you better explanations of the Rails concepts, Treehouse can walk you through more projects, or Codeschool has an excellent series called Rails for Zombies with videos and exercises.
  • Git and Github: Git is a version control system that you will be using to save your work. It is very complex, and very important to understand. Lynda.com has an excellent course on this, but if you cannot do that, here is a very poor second-best: http://git-scm.com/book/en/Getting-Started-Git-Basics . Github is the website where you will back up your work remotely. They have their own usage guides: https://github.com/.

Slightly Less Critical Knowledge:

  • Bootstrap: Pre-built CSS and Javascript components that can be dropped into your website to save you a ton of time and make your site look much better.
  • Jquery: A library of pre-made Javascript elements that will enhance your website. Codecademy is a good start. Deepen your knowledge with Lynda.com or Treehouse.

Other Things to Learn (or at least become familiar with):

  • How the Internet Works: this is an article that explains a lot of terms you will hear thrown around, such as “node”, “client”, and “server”
  • Regular Expressions: At a minimum, know what a regular expression is. Learning how to use them can be saved for later.
  • JSON, XML, and API: 3 terms worth googling, but I would not try to dive into learning much about them before bootcamp.

Considering Coding Bootcamp? Here’s The #1 Thing You Need

There’s one characteristic that distinguishes the students who graduate coding bootcamp from the ones that drop out a day, a week, or a month after starting.

It’s not their technical background, their outside responsibilities, or even their innate intelligence.

It is this:

Resilience!!

Coding bootcamp is not easy for anyone. 10-12 hours per day, 7 days a week of intense mental exertion is hard–very hard. 

It might be a little easier for someone who has a technical background, or a little harder for someone who has a family, but either way it is HARD. Either way, you will have days when you feel like you are drowning.

The one and only thing that separates the graduates from the dropouts is resilience.

The question you need to ask yourself before you sign on the dotted line is this:

When my mind shuts down, and my body is exhausted…when every cell is screaming “Give up! Give up! Give up!”  How will I react?

For most people, the answer is “I will make an excuse, and tell myself this wasn’t right for me.”

For those of us who graduate (and I WILL be one of those who graduates), the answer is “I will take a break, curse the world for a few minutes, and then get back to work.”

 

Why The Iron Yard Code Academy is Worth Every Penny

school

Yesterday, I had lunch with Rene, a student from The Iron Yard’s iOS class. I’m in the Rails class, so we pass each other in the hall, but this was the first chance we got to really talk.

Something Rene said really struck a chord with me:

“I have been teaching myself to code for a year, and I learned more in my first week at The Iron Yard than I learned in that entire year.”

Well said, Rene!

I also have a year of self-teaching under my belt, and the first week of class was equivalent to at least 6 months of that time.

Why? Here are a few of the reasons:

  • My teacher (James Dabbs) is awesome. He knows what he’s talking about, and knows how to teach. Most internet resources are written by people who have (at most) one of those 2 skills.
  • The class pushes you past what you THINK your limits are. Several times a week I get an assignment and think “There’s no way I’m going to be able to do this,” and then I DO IT.
  • You don’t waste time fighting stupid issues. Without guidance, you can lose five hours fighting a stray comma. Here I have 12 other students who can look at my code and, because they haven’t written it and haven’t been staring at it for hours, can immediately see the problem.
  • You are surrounded by smart, successful people every day, and if you have any sense you will realize that this is the best networking opportunity you will ever have in your life.

When I was trying to decide whether to go back and get a second Bachelors degree or attend a coding bootcamp, I wished I could find a real student’s opinion.

So here it is: I can’t speak for the other coding bootcamps, but if you’re looking at The Iron Yard:

Yes, absolutely, YES go to The Iron Yard.

Just make sure you’re prepared before you do. (But that is an entirely different blog post).