Code School Survival Tract
So, you’ve decided to go to code boot camp. Learning how to code in this manner can be incredibly valuable and transformative. If you decide a coding boot camp is the right choice for you, I am so excited for you! Tech needs more folks with non-traditional backgrounds and non-traditional educational tracks like you and I. More diverse backgrounds informing tech and everything it can create means the problems that tech can solve just become that much more all-encompassing. Not to mention, programming is fascinating. You get to work on puzzles for a living! And the opportunities to learn and grow in tech are truly endless. Doors can be opened to a whole new career path by signing on to do a code school like Epicodus, the school I attended.
That being said, anytime a course or program has the phrase “boot camp” in it, it is wise to heed the warning inherent in the name. Coding boot camps are hard.
If I were to jump in a time machine to before the start of my program, there are some things that I would have shared with younger me about how to get a leg up. Some of the items below will be specific to the structure of Epicodus, but the core of every item still holds value to the code school experience. I hope some of the tips in this article will be helpful to you, and give you a boost to your own code school journey.
Technical Stuff
- Don’t skimp on your READMEs! Seriously. Add a kickass README // kickass README2 // kickass README3 to every project in your GitHub repository, even if the project is an unfinished, unhappy little mess, even if it’s short & sweet. Feel free to say something to the effect of it being unfinished or a simple practice project.
2. Start and end every project with your README. Get clear on your planning and MVP (Minimum Viable Product) goals before you code. Write clear, concise documentation and setup instructions once the project is complete and you’ve tidied up your code. Make time to re-clone your project and walk through your setup instructions in full to ensure you’ve made your instructions as clear and correct as they can be.
3. Take time to click on and read the further exploration links in the lessons, if you have the bandwidth/time to do so. Come back to them when you can.
4. Get smart about solo projects.
- Print or write out the weekly objectives first thing every week, put that paper somewhere you see all day, and use it as a checklist to track what you feel comfortable with and what you don’t yet get. (!!!) Those objectives will be that week’s bible to prepare you for the independent project.
- For each week’s project, get clear on what you understand and what you don’t understand by Tuesday night/Wednesday. (!!!) Ask questions in standup Wed/Thurs for demos or answers to the things you’re unclear on, and focus your study time those nights around the gaps in your knowledge.
- *** Do NOT wait to finish a not-yet-completed independent project!!!*** Do everything you can to get as far as you can through the prompt before the end of Sunday, and DEFINITELY before starting a new independent project. Request a meeting with a teacher if you haven’t solved the problem yet.
Real talk. Getting behind on independent projects was a MASSIVE downfall for me early on in the program and almost got me sent back to restart the program. Having to juggle multiple projects at once will domino into new weeks, take away time you can be practicing new material, and take away opportunities to get resubmission notes back and guidance from teachers. Not to mention make your workload/you miserable. Seriously, I can’t stress this one enough.
5. Testing/Unit Testing/TDD — it’s important! And really do write the tests out first. It feels tedious at times for SURE, but you will know your code inside and out by the time you’re through, AND if we’re talking deployment of real apps — “production” mode — thorough TDD will drastically reduce your headaches as a developer. Check out this video for a demo & some inspiring stats to believe in the power of TDD. (REPL-driven development is also a very valuable tool, as is README-driven development.)
6. Get reaaaaaally comfortable with reading/Googling/deciphering error messages and debugging. Use that REPL, and check your log errors carefully.
7. READ. THE. DOCUMENTATION.
8. Especially if you want to land a full-stack or back-end role, practice technical interviews on the reg(-ex?) with Edabit, Leetcode, Codewars, HackerRank, Exercism, etc.
9. Leave strategic, concise comments in your code, describing what’s happening — especially for daily projects. Your future self (who will have no idea what the hell you were doing in this file three months ago) and any potential collaborating developers reading your code will thank you for it. Comments can also be a great way to up your documentation game. They can also make or break the ability of other developers to be able to use your code.
10. Pseudocode can be invaluable to breaking down what you need to accomplish when trying to wrap your head around a tough problem. Handwriting out code/plans/notes away from a computer can be helpful, too.
11. Arrays & Loops are never going away, but they’ll make more sense the more you use them. Practice, practice, practice.
12. On that note, don’t copy/paste from the lessons - for real-real. Muscle memory will trump your plain ol’ memory every time.
Think of muscle memory like weight training. If you only lift a 10 pound weight, 20 repetitions, once a week, you won’t get any stronger, at least not any time soon. But, if you get more repetitions in (in weight training and in coding), or you lift more frequently in a single week (i.e. type all the code), you can build up your strength (coding muscle memory) much more efficiently and move on to bigger weights (coding problems) sooner.
13. Templates are your friends. Build yourself a solid README template to reuse in projects, as well as bare bones templates for different types of projects and coding environments. Automating tasks where you can will save you a lot of time.
14. The sooner you can get started practicing how to code (not just reading about coding, or watching videos — you have to actually do coding), the better off you will be starting a coding boot camp. (This will also ensure that you like coding enough to do it every day before you have to do it every day.) I was stubborn and scattered leading up to my course’s start date, and avoided getting into the actual meat of what I’d be learning until classes had started. I figured that it would be fine to just learn along with the course schedule, but I suffered more than I needed to in the first few months of my program under the weight of incredibly fast-paced, labor intensive work loads. Do yourself a favor and get to learning how to code before classes start. Even if all you have time for is a few “Hello World!” projects.
Human Stuff
1. Pay attention to what helps you learn best — your learning style — & make sure you learn that way, at least for a chunk of the day, every day.
- Do you learn better if you talk out the material you’re learning or reading out loud? Heck yeah. Do it — read out loud (even if that doesn’t work for your pair — put yourself on mute and read to yourself for stretches.)
- Do you learn best by doing (i.e. getting hands on keys)? Great. Set a timer to go off every 30 minutes so you can switch who’s driving in your pair/mob, and practice by doing.
- Do you learn best if you slowly go over materials & take lots of notes? Awesome. Keep those notes organized & well-labeled. Create checklists with instructions of how to do more complicated coding tasks, listing the steps out in small, achievable steps. Also, be mindful of how much other work you still have to get through. If you’re not finding the solution to a problem within 30 ish minutes in the homework or in pairs, ask a superior for help, or give it a break and come back later.
- Do you learn best by getting lots of “reps” in? Same. Do all of the above to get more reps of the same thing in different modalities for the material to stick in your brain better. Read, re-read, and read the lessons/your notes again. Most importantly though, get hands on keys.
- Are you a visual learner? Make a flowchart. Watch a tutorial. Get a visual planning tool like Asana, Monday.com, or Trello. Get a mini whiteboard. Charlie Day the heck out of a wall.
2. Pay attention to your body and what it needs.
- Sleep is everything. You are not a better programmer for pulling an all-nighter, even if it means you occasionally can’t finish a task on time. Your brain will thank you for getting a full night’s sleep, and it’ll help manage your stress levels to boot (which very well might be high during these first several weeks).
- Take fidget/bio breaks. You are not a better programmer for never leaving your computer. You will think more clearly, be more productive, and be able to problem-solve in brighter & more clever ways if you make a point to keep your blood flowing and to get away from the computer on a regular basis.
- Feel like you’re spinning too many plates? Reduce cognitive load by automating tasks and making a schedule that you stick to. Set an alarm every hour to take a fidget break or drink water if it helps you remember to do so. Set an alarm to log in, log out, log your pair, sign off and get to bed. Do a little digging into task batching, where you do all common tasks at the same, instead of popping around to other tasks. Planning ahead gives your brain a break from having to make so many decisions.
- Remember to drink water! I’ve heard we humans need it or something.
- Stretch. Exercise. (But don’t beat yourself up if you can’t fit your normal exercise routine in because homework, or sleep, or an hour to yourself. Scheduling adjustments are realistic and necessary for this boot camp process.)
- Be kind to yourself. This program is designed to be intense, but at the end of the day, rest assured that it’s only temporary!
** — Sidebar: If you find you are perpetually unable to finish your work on time, talk to one of your instructors. There are other options (the part-time track, getting the chance to start the program over again, time management or planning support, family needs adjustments, etc.) that are likely in reach for you.
3. Advocate for yourself.
It can be really hard to say what you need or want to do. But the sooner you speak up for yourself though, the sooner and better you will …
- get the help you need,
- get support from peers or teachers (and remember how to ask for help),
- get more hands on keys, etc.
The longer you wait to advocate for your needs, for your learning styles, the more time you lose …
- building your new skill set,
- moving towards your future career goals, and most importantly,
- building yourself up.
Letting your pair or group drag you along through materials you’re not understanding will not help you learn. Ask questions. Ask to slow down. Ask for a peer or a teacher to explain materials to you (again). Remember, you are paying for this program, and your time here is incredibly valuable and finite. You have the right to advocate for yourself, and every right to make the most of this experience.
4. (Remote School Folks) Turn your videos on, when you can! Your instructors love to see your shining faces, and additionally, non-verbal communication cues help us all to not run over peers in conversation. Make sure your Discord/chat names are your *actual* names, too — it is no help to your peers to not know who is who in the chats. Learning how to code is challenging enough without having to remember people’s names.
5. Be kind. Be patient. For your peers, for your instructors, and especially for yourself. Support your cohort peers and lift one another up. Do your best to protect yourself from negative talk, and avoid ruminating in negativity — it will not serve you.
6. Practice clear, kind communication and do what you can to get comfortable with the uncomfortable. Getting into tech means that there is literally an endless amount of knowledge out there that just keeps growing by the second. We can’t possibly begin to fathom the depths of technical knowledge, languages, frameworks, tools, technologies, environments (you get the picture) that exist, even if you never stopped coding and learning until the day you die. We’re all human, and it’s OK to be honest when you’re having a rough day.
The stronger you learn how to communicate, the more this skillset will propel your career forward, too. Every informational interview I’ve done with senior or lead developers all say the same thing when I’ve asked the question “What does success look like for a developer early in their career?” Without fail, that answer is communication. Not anything technical or complex. Communication. Don’t underestimate the power of communication, or your humanity.
7. Be honest with yourself about how much time it’s going to take to learn an entirely new skill, and recognize that work/life balance likely will not be on the table for the next few months of boot camp. It is not easy to juggle the responsibilities of family, life, and work under normal circumstances, but especially in a boot camp environment. Adjust expectations and plans as needed. It’s okay to scale back, or start small to be more realistic about the bandwidth you have to give.
8. Become an active reader.
9. Work at keeping a growth mindset. That flexible, learning-focused mindset will save you time and energy that will otherwise be wasted on stress.
10. Have fun while you’re learning! The coding that you get to work through is the jam to learn. Such puzzle! Much learn!
11. Reach out to folks in the tech industry (that you know or don’t know) now. Ask for informational interviews to learn about what all is even out there in the wide, wide world of tech because there are so many possible roles outside of and related to development. Ask to connect with folks at companies that excite you, and figure out early what it would take for you to be a stand-out candidate when you dive into the job search, even if a company is not currently hiring. Building real relationships will be a boon to your career, and networking truly is the best way to get in the industry.
12. Don’t forget self care! Even if you can only get a few moments to yourself here and there. (Rhyme accidentally, totally intended.)
13. Failure is a part of the gig, especially in the early weeks. But it is OK and even expected that you will fail. Failure is how we all learn and grow, and can be a transformative experience. Use your inevitable failures to improve yourself — in your boot camp, and in your life.
That being said recognize that …
- The first several weeks can be brutal, especially for folks who, like me, came in with little to no technical experience. Trust the curriculum and your resilience to get you where you need to be. The materials will start coming together soon — promise!
- There is no shame in moving at a slower pace than a pair. They will inevitably be slower than you at other things.
- There is no shame in needing to have something explained by a peer or a teacher several times before you get it. Asking questions is important. (And you will get it in time with practice!)
- There is no shame in asking for help from peers in general. If they are in a position to help, your peers will benefit, too, by getting the opportunity to solidify their own understanding of the materials and explaining them to you.
- For that matter, remember that you can and should ask your teachers for help, too. Their job is literally to help you! Even if they do not give or share the specific answer that you need for your problem, learning how to learn is just as meaningful.
- There is no shame if you end up needing more time with the materials and are required/choose to start at the beginning of the program again. This is about your learning and growing process. Relish the process. Honor yourself and your own unique abilities and timeline.
Most of all, you might not be able to figure out how something works, or understand a concept — but that is only true right now. Remember that big, beautiful word “yet”! You can’t do X, Y, Z … YET!
Written by Danielle Thompson, 2021.
She is becoming a burgeoning software developer, slowly but surely, through much networking, many a mentor, much learning, MUCH practicing, and much growing. She’s not #TechTwitter famous, but give it time and there will be a “yet” added on to the end of that statement.