At Rithm, we believe that one of the best ways to prepare students for jobs as web developers is by giving them opportunities to work on real-world projects. Working on personal projects can be fun, but working in a team or on an existing code base gives students insights into the day-to-day challenges of a developer that they might not otherwise learn. Our 14th cohort is wrapping up their company projects; one of them is building an internal app for inputting and holding client information for a law firm focused on helping disenfranchised communities receive fair wages and safe working environments from their employers. The other being LiveStack, which allows professional creators to monetize their work through live-streamed video events. We asked a few of our students to share their experience working together with us:
(S): I’m a (soon-to-be) mother of two, and before joining Rithm, I worked as a teacher and an administrator for 12 years. I decided to switch into the tech sector because I realized that if I wanted to continue growing as a person while making an impact on the community I worked with as an educator, I would have to do it on a larger scale – this is the promise of technology. There aren’t many other things out there that are both so integrated in our lives and can have such a profound impact on solving today’s problems.
(W): I’m a (current) father of one (cat), and before joining Rithm, I worked as a regulatory affairs specialist, tech writer, project manager, web designer, and 12 year daydreamer of becoming a software engineer. The stars finally aligned for me one fateful week and I began seriously looking into making the switch. After researching / interviewing / getting advice from friends, it seemed like the best route was the bootcamp route, so here I am.
Originally from the East Coast, I moved to California in 2011 and graduated from UCLA in 2015. Since then, I have been working in sales and project management, primarily in the solar industry. I also love music: I’ve been in a few bands and even founded a concert series in LA. When I was transitioning with a move from LA to SF, I considered a possible career change and tried my hand at coding. It immediately ignited a level of mental stimulation and fulfillment for me that I wasn’t getting in my other work, and I decided to shift into software engineering full-time.
How would you describe the experience of working on these company projects? Can you tell us a little about the projects you’ve been working on?
(S): In the education world, one of the ways we measure an excellent teaching or learning experience is that it is as close to a real-life experience as possible for a student. One of the reasons I chose Rithm over other bootcamps was because I had very little experience with coding prior to making the decision to move into the tech sector, and I recognized that if I really wanted to understand what the small concepts are about, then I’d have to really live and feel what it meant to work on and add to a large code base. My company project gave me that opportunity, and I am so grateful that it did because it allowed me to understand what it was like to break up a real project into tasks and simulate the frustrations and successes of working on a team.
The project that my team was working on was building an internal app for inputting and holding client information for a law firm based in LA that focuses on helping disenfranchised communities receive fair wages and safe working environments from their employers. We had a little bit of starter code, but built it out using React on the frontend, and Flask and MySQL on the backend.
(W): A lot of fun. It’s very similar to the sprints we did in lab, but with more structure, more git and more responsibility. The way we had it structured, we would partner up and receive a task (or more depending on how big the task), work hard to complete as much as possible, then one person would switch out and work on something with someone else every two days.
Some people preferred to stay on frontend tasks, and others backend, but really there were a lot of interesting things to try, decisions to be made, and opportunities to learn different concepts or tools that you might want to put on your resume. For me, it really helped give some direction to what kind of jobs I might be looking for.
The company projects have been my favorite part of the program. Our team was tasked with building a new web application called LiveStack. LiveStack allows professional creators (like yoga teachers or educators) to monetize their work through live-streamed video events. Working on this felt particularly relevant and important amidst the COVID-19 crisis, in which many professionals are out of work and don’t have an avenue through which to remotely make a living.
From an academic standpoint, working on this project has been invaluable. Building on the foundation of what we learned in the classroom, we were able to develop an entire application, including real payments, secure authentication, and legitimate live streaming!
How large is your team? What have you learned by working together?
(S): So many times, I had imagined that life as a web developer would be someone who just put on headphones and coded away on a problem on their own. And while there were plenty of times when I found that I was able to do some amazing coding that way, I felt a different kind of productivity when I was pair-programming on the company projects. Our team was 6 strong, along with two instructors. Because of the small size of the team, I was able to code at least once with everybody, and in doing so, I really got to see what it was like to pair-program on a multi-day project. You could really see everybody’s strengths shine when there’s that accountability to another person, and we had an opportunity to grow both in our ability to communicate effectively as professionals, as well as see each other’s technical strengths. Most importantly, we had a chance to support each other when things got hard, so we became better friends and colleagues, and I don’t think that we would have gotten that opportunity if this were just an individualized process on a long project.
(W): Everyone is as awesome as I thought they were. Really it felt like it picked up where we left off in class. I learned more about what people’s preferences were as far as programming now that we got to choose, but beyond that it was really just spending more time with the people you like and continuing to get to know them. I guess I got to see them in a more professional environment, but it still felt like a vacation.
Our team is made up of six students, two instructors, and a savvy project manager with impressive experience and major success at companies like Facebook. Amongst many other things, I have learned imperative team communication skills, how real companies approach problems, and how to navigate a full website in development and production.
What are some things you have accomplished while working on these projects?
(S): Working on our company project allowed me to see everyone’s strengths. We had a team member who had a lot of experience doing frontend, and when I worked with him on doing things like creating a side navigation bar that used state (which we can think of as representing the part of the app that is dynamic and can change based on an action), I had the opportunity to feel like an apprentice and really ask him why he made certain design decisions or ask him for advice on how to approach a particular issue. Then there was Will, who is a brilliant developer. Everytime I paired with him, I had the privilege of seeing how quickly he could pick up a new technology, implement it, and then explain it to me. Working with him allowed me to start seeing more patterns than I normally would have if I were just starting to learn about new technologies or sitting with code on my own.
As a result of this, I ended up becoming more confident in my ability to read through a large code base and understand what others had developed, design React components with several different libraries, troubleshoot and debug code that I did not write, especially on the backend, and know when and how to write tests, which is something that outside of a large code base feels very disconnected from the work we may do, but in the company project, is integral to making sure the code does what its meant to do without disrupting others’ work. Which is saying a lot for someone who knew very little three months ago. (I can go into more or less technical details, just let me know).
(W): Many hours were spent googling and reading documentation in order to utilize tools and libraries I hadn’t seen before.
We created a production-ready product within a few weeks! It is essentially ready to be launched, so that was a huge success. More personally, a teammate and I developed a live stream demo in one day, I built several React components, integrated them into our backend, and learned several new tools, libraries and APIs like SendGrid by Twilio, Cron, and Formik, to name a few.
What was the most challenging thing about working on your project? Have you faced any challenges in particular since working remotely?
(S): The most challenging thing about working on the project was the feeling that I was letting my partner down. Since we are sheltering-in-place and I have a toddler (who is normally at daycare), there were many times when working remotely meant that whoever my partner was at the time had to hear some toddler renditions of “Do your ears hang low” and adjust to me disappearing to check on an all-too-quiet toddler. It also meant that as a programmer, my focus was divided and that daytime was not necessarily the most productive time for me to get my work done. As a partner, I did feel very guilty about that. Luckily, I would be able to get some small tasks done on our project when my toddler would take a nap or go to sleep at night, which is one of the benefits of working remotely. Secondly, now that I know what it’s like to have to do work and do it while being a mother, I have some tools and skills I can use in the future.
(W): Communication was the biggest issue for me. Being remote creates a bottleneck when you need information – in-person you can just go stand over someone’s shoulder or rudely interrupt them when you want something. In-person, you can also time it to intercept the instructors between the time they finish helping someone else but before they can rush out to go to the bathroom to come help you debug something for an hour or two. Communication with my partners was mostly not a problem, though tech challenges occasionally got in the way.
Second biggest was remembering how all the configurations work in Python. You don’t realize how much context you lose in a month of not using it.
The most challenging part of the project for me was getting everything working during configuration whenever changes were made to our master repository. Building a more comprehensive website involves more tokens, security keys, etc. that need to be saved, and servers that need to be running for everything to communicate and function properly. I definitely learned that you need to be meticulous during that setup to ensure everything functions properly.
Working remotely has actually been surprisingly easy for me. I prefer person-to-person contact, but Zoom calls provide a very similar experience. I highly recommend having a good work station, though, which has definitely helped me stay focused. Two monitors for the win!
As a developer, what have you learned as a result of working on production code?
(S): I feel like we were still in the dev portion of our code, but definitely understanding that this code was going to have actual users and knowing that the impacts of our decisions would have huge ramifications for a company whose mission I really believed in made me realize that the code I was writing and refactoring was real. Not that the coding I did on our daily exercises at Rithm weren’t taken seriously, but there’s a different sense of urgency in debugging or getting the code “right” and written effectively when you know that the final user is not just you or your instructor. The process of checks and balances between writing the code, getting it reviewed, and revising code was great. The feedback I received when I got my code reviewed helped me see where my code could improve in the context of a growing application as opposed to a small problem in a daily exercise, and the reflections I had to make daily so that I could make sure I committed what I was learning to memory helped me grow my understanding of developing for code that would have real impact on users.
(W): Get an understanding of how the codebase works! If you know how your code fits into the larger project you’ll make better decisions, won’t get stuck as much, and generally just be more productive. I got the chance to refactor some code for a feature that got added early in the project, and man… I’ll just say it’s important to have that perspective. Working on production code makes you way more cautious about breaking things, but even just understanding how the immediate system you’re working on behaves can give you a lot of confidence to implement different ideas.
Also write good tests!! It’s so nice having that confirmation you didn’t just break something by running a single command.
So much! But something I found particularly valuable was our experience with Github. Following the structure of working in an actual company, we made pull requests, resolved merge conflicts, and performed code reviews for others.
It is not only motivating, but fun to work on code and features that will be used by many people. Check out more about our company projects here!