Lambda School: CS Front-End Recap
Have you ever seen a greyhound run? They are the embodiment of evolving for pure speed and efficiency. Watch a video of it in high definition slow motion, it’s stunning. Their running gait has two separate points where all four of their legs are off of the ground. Go adopt a retired racer.
Okay, I’ve had my dog plug.
Lambda School is a greyhound; a program carefully constructed for speed and efficiency. I have built more in these first weeks than in six months of daily self study. The difference is that I actually finish full projects now. Every. Single. Day. Not only do I understand what is happening underneath the layers of abstraction, I can explain it to others.
The school day begins bright and early. I sip my cup of coffee.. and then suddenly it is dark, the project for the day is done, and the brain juices are fully depleted. Hopefully I remembered to eat, move, and breathe.
A normal day’s schedule goes like this:
- 8:00 am — Mini Coding Challenge (Example: Write a bubble sort function)
- 8:30 am — Get into small groups to review the Coding Challenge
- 8:45 am — Live video solution of the Coding Challenge
- 9:00 am — Two hours of live video lecture on new concepts
- 11:00am — LUNCH BREAK (Try to remember to see some sun)
- 12:00pm — Start working solo on a project applying the new material
- 2:00pm — Pair up with another student to program on video chat.
- 4:00pm — Group Standup session reviewing student’s progress
- 4:30pm — Project Managers give Q&A’s about the project. Sometimes a student will present on their project.
- 5:00pm and beyond (outside of class time) — Self-study to review and stretch my abilities, who needs a life anyway?
On Friday the whole week culminates in a kind of test day. All of the week’s concepts are put together into a project that is assigned first thing in the morning.. now see how far you can get in 3 hours. Remember the greyhounds? SPRINT! Following lunch there are occasionally other goodies. The graduating classes might present their capstone projects or a professional guest speaker will give a lecture. Around 2pm there is a one-on-one video conference with your Project Manager. These are generally to talk about how the week went, but also to talk you down off the ledge if it was a hard week. They are a life saver, 100%. If you didn’t finish the sprint project then it is right back into coding mode deep into the weekend.
So what have we learned
Rather than focus on explaining the gritty technicals of what we have done (There’s the syllabus and the internet for that), I’m going to focus on the bigger picture of the development patterns we learn. Just like in math class the trend is that the later material builds on the early material.
Warning: Technical Words
Week 1: Responsive Web Design (CSS3 & HTML5)—This week is really all about thinking about the end users. People may be on different devices, have different impairments, or be on browsers that don’t support the newest features. Build for everyone. Learning about the CSS cascade and specificity primes the mind for thinking about Javascript’s scope and how the browser interprets code. By the end of the week you can build the markup of a simple responsive website.
Week 2: CSS Preprocessors & Bootstrap — Unlock the true power of styling! The important conceptual building blocks of this week include the importance of using variables to employ the DRY principle, file structure, breaking down large files into pieces, the power (and drawbacks) of a framework. Now that simple responsive website is looking pretty.
Week 3: Javascript Fundamentals— The foundation of everything. This is the week where repetitions now will really pay off later. To be fluent in the computer language we speak in daily is vital. The most important front-end week. Prepare to see the world around you as a bunch of objects with various properties and methods on them.
Week 4: Applying Javascript (Document Object Model) — This week opens your mind to how the browser interprets code and then builds the pretty websites everyone knows and loves, DOM enlightenment. Prepare to visualize websites as a tangible 3D family of puzzle pieces. By learning about user event objects and how to handle them you will see playing around on the web in a whole new light.
Week 5: React.js — There are multiple hot JavaScript library choices, but we learn React because of the development patterns it exposes: Encapsulation, thinking about State and dynamically changing it, and Composability. Our humble little markup is now a clean modern Single Page Application’s user interface.
Week 6: URL routing, HTTP, & AJAX — Time to expand our small little bubble to how the World Wide Web as a whole works. This is the first encounter with servers, API’s, and consuming data. It is a big big world out there and the first steps into it are exciting. We also learn how to deal with some of the faults of working in a single threaded language by using promises or the newer ES7 async.
Week 7: Redux — The week that everyone fears. The Model-View-Controller design pattern is hammered in. Reps reps reps. Getting a handle on it is the best feeling. The time put in here makes entering into back-end come naturally.
Week 8: Front End Project Week — Everything from the past 2 months mashed together. My favorite week thus far. Concepts include: project management techniques such as Kanban, Agile methodology, the Waterfall model, and Scrum. The cherry on top was the final day’s lecture, a Q&A about the varying paths to choose from and daily lifestyle of a software developer.
The Path to Success — Repetitions
My advice to those that are about to start into the world of coding is — focus on the fundamentals of your language. Do Lambda’s mini-bootcamp, then do it again. Take Harvard’s free Introduction to Computer Science: CS50. Penn also has a good free course. The stronger your base the easier it is the build on top of it.
The key to getting better is to learn something new every single day. When I say learn it, I mean actually use it in a project and become comfortable with it. I wasted so much time just learning theory and none of it has stuck in a way I can apply. Spend some time on the weekends making fun projects that involve your interests and stretch your current abilities. There are endless resources out there to help along the way. Google is your best friend. Never be ashamed to check the documentation.
Seek out other people near you who are eager to learn. A huge part of what I am proficient at now was reinforced by meeting up with classmates. We do this every week or two to review for 8 hours. Just talk code. Talk to anyone and everyone to absorb what you can from them. Be in a growth mindset. This is the path to success in any field.
Finally once you are decent at something, assist others to become the same. Teaching is the final step toward mastery. It isn’t until I explain a concept to help someone with the bugs in their code that all the pieces finally fit together.
“If you can’t explain something in simple terms, you don’t understand it”
— Richard Feynman
Thanks for the read. The next recap will be on Back-End and Computer Architecture followed by a reflection of my choice of taking an alternate path to going back to University or self-study.
Human connection sure beats talking to my computer screen. Feel free to reach out to me anytime to talk about coding, fitness, or just life. ✌