Post-Hackbright Post

Parul Baweja
5 min readApr 2, 2018

--

I finished my bootcamp, Hackbright, a little over a week ago. With some time to reflect, I wanted to share thoughts about my experience, pro-tips and next steps. Enjoy!

Why I Chose Hackbright

For its emphasis on balance and community — the bootcamp 100% lived up to the expectations I had in these two areas.

Balance: In terms of my personal work habits, I knew I needed ~some~ structure, which Hackbright provided during the day for 8 hours. Basically, I needed someone to point me in the right direction day-to-day and teach me about practical tools. In the evening, I felt free to google away about whatever sparked my curiosity, like concurrency or playing a CLI game. This approach doesn’t work for everyone, but it did for me.

Community: For background, Hackbright is a bootcamp for women and has a clear focus of changing the ratio in tech. Beyond anything else, Hackbright impressed me with its ability to cultivate and sustain a supportive community. Now that I’ve completed the program, I know it’s true from firsthand experience: post-bootcamp, I’ve seen or chatted with a fellow Hackbrighter almost every day since. In fact, I’m going to a Hackbrighter’s birthday in a week! The sense of community doesn’t stop there — I feel incredibly lucky to have friends, colleagues, fellow SWEs that will share resources, teach me a new concept and empathize with me.

How I Self-Studied

Briefly, Hackbright’s curriculum generally covered these concepts: getting comfortable with Python, web development tools (Flask, React, AWS, etc), computer science fundamentals and algorithms. As I mentioned, though, I spent my evenings with Google. So, what was I searching for?

Systems

I informally took CMU’s Systems course (the videos are all available online for free) and learned a lot. Learning about low-level concepts and web dev tools concurrently offered a good mix of activities to keep me entertained. Having conversations about systems early on helped me appreciate how my own machine worked. So, later when I implemented WikiRacer, I had an idea about how Python makes system calls for new threads or coroutines and how my program might actually get broken down into assembly language.

Data Structures

Implement every data structure. Seriously. If you implement a basic linked list or tree or heap, you’ll be able to understand more complicated problems that involve them. For example, I implemented a red-black tree, which helped me understand how a binary search tree is balanced. In an interview, if I want to use the data structure, I now have the foundation for why and how.

I would recommend white-boarding/writing and coding these implementations so you feel confident in both mediums — save all your code!

Algorithms

I filtered Hackerrank and LeetCode by ‘Algorithm’, started with easy and made my way up (still making my way up). I figured this would help me get comfortable with these popular coding challenge interfaces and I’d learn a new concept along the way.

Playground

Don’t google this — just make a playground directory for yourself. This is where you can write up random scripts or programs to check things out. For example, I wanted to see what happened in a never-ending recursive call, so I wrote one out and ran it. I obviously knew it wouldn’t work, but I wanted to see how my machine responded. The more you tinker, the more confident you get.

How I Approached My Project

At most bootcamps, students learn a bunch of tools and then their learning culminates in the form of a project! Projects are fun — it’s your chance to have full ownership of your tasks and schedule.

Think in terms of MVPs

Focus your attention on one particular problem at a time. My project was to build a job search management web app — instead of using Google sheets, I could use this tool. Take a look at my MVPs:

  1. Learn to use React. I spent 3–4 days trying out tutorials to get comfortable. I also asked for help to figured out my dev setup.
  2. Build a form that allows users to submit information about a job application and view a table with all relevant information.
  3. Use Material UI (a React component library) to enhance my current MVP.
  4. Flesh out in-line editing feature.
  5. Use the NewsAPI to curate articles for companies.
  6. Refactor to abstract away common code and reuse a component.
  7. Learn about passing URL parameters with React Router to reuse previous component for an archive page.
  8. Create a Comparison tool so users can compare options. Pass props from parent to child.
  9. Create an Analytics page with a charting library.
  10. (Use a different charting library)

I could probably add more sub-MVPs, but you get the idea hopefully. Each time you add a new feature or apply a new technology/concept, make that a new MVP. The process of finishing each MVP was rewarding and I could follow my own workflow trajectory easily. If something went wrong, I could backtrace and still be ok.

Using a New Technology

By new, I mean new relative to the curriculum — something that might require a steep learning curve when you are pressed for time.

  • Understand their concern: instructors want you to succeed, so don’t take their warning as negative feedback. Instead, consider what all it takes to use ‘x’ technology and determine whether you have the bandwidth to learn and apply it.
  • Give it a trial run: before using React on my project, I spent the week prior learning from online courses, reading the React docs, and asking my mentor for guidance. Provide yourself with as many data points as necessary to make an informed decision.
  • Ask for help: ask anyone — your mentor, your friend, your friend’s friend.
  • Be ok with putting the idea on the back-burner: sometimes, we just can’t do it all. That’s ok. It may not feel like it, but there is plenty of time to learn something new.

My Next Steps

I am so happy and grateful for the experience I had — for the community I now have. As I job search, I’m taking this time to continue learning and sharing my experience. Here are my next steps:

  • Continue interview prep with Cracking the Coding Interview, Hackerrank, LeetCode, etc.
  • Get a job, hopefully.
  • Try out Cryptopals — Based on the website, it’s a good way to learn a language. There are also clear instructions and sets of problems, so I can focus on the learning and problem-solving rather than the designing or deciphering of the issue. I was thinking of doing it in Python, so I can feel really comfortable (almost an expert) in the language. Plus, I’ll learn something about cryptography and security.
  • Discrete Math.
  • Keep writing.

--

--