Here I am, 5 months into Lambda School. Wow. Time sure flies when you’re learning awesome sh*t. Here’s a recap of timeline of the Program:
- Unit 3: Advanced React
- Unit 4: Node.js Back-end
- Unit 5: Computer Science Fundamentals. I just completed this 👩🏽💻
- Unit 6: Labs aka a one month project with a large team
I didn’t give monthly updates (I know, shameful) but instead of trying to do a large recap, I’ll just start with where things get juicy in the program (aka Unit 3 onward) and then hop into some discussion points.
Unit 3: Reacting 😍to React
This was when I actually started to get the feeling of being a legit software engineer. This unit was broken down into three Sprints: Advanced React, Advanced State Management, and Advanced Web Applications.
Components, components, components! Do I use class components or functional components? This one took me a few weeks to figure out so let me give you the gist so we’re all clear: functional components came first, with no state included. Then class components came along, allowing you to set state within the component using state and this.state. Then useState() came along, bringing the awesome state feature to functional components, thus making them the cool kids on the block (for now). There was confusion on my end between the two, but some practice quickly brought me up to speed.
Advanced State Management
Wonderful state management. I immediately understood the reason for Redux because of its predictability, immutability and accessibility from each component, but the actions and reducers had the biggest learning curve. We had two days to learn this. TWO. But it finally clicked. We also dabbled with Context API but I ended up going with Redux with the two Build Week Projects.
Advanced Web Applications
In this sprint, we covered testing via React Testing Library, client-side auth and Deploying via Vercel. I’ll never forget the testing technique “Arrange, Act and Assert”. You Arrange to set up your test cases. Here you prep a database, log into a web app or grab certain components. In Act, you act on the target behavior by doing things like calling a function, a REST API or interacting with a button. Finally, you assert your expected outcomes. You are verifying that something happened. In simplest cases, this will be checking a numeric or string values. Assertions will determine whether the test passes or fails. We then deployed via Vercel. I also went ahead and learned Netlify as well.
Understanding Redux and the required Store, Reducers, and Actions. The idea of state management took a bit to grasp but once it did, it was awesome. Creating the Initial State, creating the Reducers, creating the Actions, and mappingStateToProps was such a great feeling!
Build Week Project
Project Name: Anywhere Fitness — a Web App where instructors can create workout events and clients can build them.
Tech Stack: JsonWebTokens, Bcrypt, React.js, Node.js, Express.js, PostgreSQL, Material-UI
Team: Two Unit 2 React Developers, Two Unit 3 React Developers, One Java Developer
Unit 4: Getting to know 💡Node
Time to go to the back-end! I’ve always heard of this back-end, but what exactly was it? Well, here I found out! This Unit was broken down into three Sprints: Building Rest APIs with Express, Adding Data Persistence, and Authentification and Testing.
Rest APIs with Express
Express became my best friend during this unit. Such an awesome framework. I created my first web server with routers to keep our back-end modular and organized. Learning about Server Requests and Responses was awesome as well! Get, Post, Update, Delete. Classic CRUD Operations. We then got into the middleware and keeping things D.R.Y. before finally moving onto deployment! Good ol’ Heroku! I quickly learned that it’s a hobbyist server though and learned AWS S3 instances. Shoutout Amazon and Big Jeff!
Adding Data Persistence
Just like Redux in React, we had a mere 2 days to get familiar with DB Schemas and relational databases. Considering there are entire careers on this stuff, 2 days was definitely not enough. But, like many boot campers, I absorbed the information, read the documentation, and got to action.
I enjoyed using DB Designer to create a Database Schema and ensure table relations made sense. Here is where we learned about the different types of relationships (One to One, One to Many & Many to Many) and how to connect tables with primary keys and foreign keys. Once the tables looked good, it was time to create the tables. We used Knex.js for this. Knex is a SQL query builder for multiple dabatases that allows you to build right within Node! It’s surely a time saver but you still need to know and understand SQL queries. After creating the tables via Knex migrations, we seeded the data.
Finally, we created Database Access Helpers or models. These are called within your Requests to go into the database and get a result. Standard models are find, findById, Add, Update and Remove. The routers call the models and return with the data response that the front-end uses.
Authentification and Testing
Authentification was one of my favorite sprints because it’s something that we all interact with so often when we login to our favorite applications! We used Bcrpyt.js, a password-hashing function, to hash the password and JsonWebTokens to create a token to give to the front-end.
For testing, we focused on Unit Testing and Integration Testing. For Unit Testing, we used Jest, since it’s already included with create-react-app. For Unit Testing, the goal is to be independent, focused and only testing one unit of code. That means focusing on one behavior or functionality per test.
Integration testing is for testing how different parts of the system work together.
Build Week Project
Project Name: Water My Plants — A web app to save and manage your plants and their watering schedules.
Tech Stack: JsonWebTokens, Bcrypt, Node.js, Express.js, Knex.js, PostgreSQL
Team: Three Unit 2 React Developers, Two Unit 3 React Developers, One Node Developer
Being able to use Knex Transactions to handle data base entries on tables that had foreign keys. If all the table’s data (including foreign keys) didn’t get properly added, then the entire entry was
Unit 5: CS, Data Structures and Algorithms 👨🏽💻
No catchy header on this one. This stuff is no joke. Arguably, one of the most important parts of this entire job search and also the most challenging for me. I got familiar prior to this Unit with some of the basic Data Structures, but I still had a learning curve picking up Python (yes, I know the syntax is easy and straight forward, but there are still some nuances to pick up). I passed the minimum requirement (650 on the GCA and 60% on the Final Sprint) and could’ve certainly flexed (repeated the unit), but I know Data Structures and Algorithms are an ongoing process. I didn’t want to get even further time from consistent coding practice.
Discussion Points 🗣
The Pace of the Program
Extremely fast. One day for each new subject except with Redux and Database Designs (two days for this one). But it’s not bad by any means. Afterall, it is a streamlined Bootcamp. There’s certainly value in that speed. I had to not only absorb information quickly, but also heavily relied on the documentation. Afterall, documentation was made for a reason so learning to look through it was great practice.
In Unit 1, we got paired with a student who was 2 units ahead of us. I was lucky to have a unique and valuable mentor who was very passionate about technology and provided great feedback. We met 4 days a week to discuss the days assignment, something like a Code Review. The Mentor Program had good intentions, and I was lucky enough to have engaged mentor, but I saw many instances throughout the units of people just not getting the support from their mentors. I was paired with a mentee and I did my best at being available to him whenever I could be. Being a mentor is certainly valuable, but in order to gain something, you have to want to do it. I can’t knock the people who weren’t good mentors, but I don’t think Lamdba should require everyone to do it, as it can be detrimental to students who are their mentees.
A Track Team was one to three students of each Unit (4–12 students total) where we did two important things: 1) Meet 3 times a week to discuss Career and Work Place Related Topics and 2) Work on the Build Week Project. Again, I was lucky enough to be in an engaged group that participated in nearly all of the Track Team meetings. Having career experience, I’d say that the Track Team was extremely valuable and relevant. Topics covered included Project Management Techniques, How to Give Feedback, Empathy in the Workforce, Workplace Automation Techniques, and Mentorship in the Workplace, to name a few. All very valuable, especially if haven’t worked in a professional setting before.
What’s Next? 🏎
Next up is Labs, a one month project with a team of 6+ fellow Lambda engineers. This is where we get a much more thorough development experience as if we were really in the workforce. I’m talking fully fleshed out designs, a Project Management System and Process, a Sprint Plan and a Dev Ops system. There is no reason why this project can’t be production level after the month. I plan to continue getting daily reps in Data Structures and Algorithms and working on a few side-projects I have to keep my React and Node skills fresh.
Thank you! ♥
Thank you so much for reading. The next update will be in one month when I’ve fully completed the program. Look out for other interesting pieces coming out as well. The writing bug has bit me. 🐞
I’m 1000% open to any apprenticeship, internship and full-time opportunities following completion of my project. I am also very open to discussing / helping out bootcamp students on their journey.