Codesmith’s Full-Time Software Engineering Immersive programs prepare residents to break into the...
Tests Are Tough but a Team Perseveres: Building the Open Source Product
It is Week 7 of the Software Engineering Immersive: the famed Ideation Week. We have officially learned all the core technology in Codesmith’s curriculum, so every day, we venture out into our research, and try to learn about new technologies we could possibly integrate into our new grand assignment, the Open Source Product (OSP). This is a big undertaking, where we'll encounter new tech stacks. We only have Google, the official documentation, and our teammates to rely on, to make sense of what each piece of tech does.
Chromagen dev tool during the early stages of Iteration
PICKING A PROJECT TOPIC
For our team (shoutout to the most amazing team, MSLED), it did not take us too long to figure out that we wanted to do an Iteration (rather than a Scratch) project. The criteria for narrowing down OSP projects we could iterate on was simple:
- Does it have the tech stack that we want to learn?
- Does the codebase pique our interest in any way?
- Does the application work on at least half of our local machines?
- Can we actually pinpoint the “20% higher problem” of the application and try to enhance the app?
The winning project for our team was Chromogen: an automated Jest unit testing tool for applications written in React Hooks or Recoil. The codebase we had inherited was quite substantial in size and well-fleshed out for the Recoil side, but the React Hooks portion—especially the tests—seemed like it needed a bit more work. We would have the following four weeks to reproduce a revamped and fully functional version of Chromogen with additional features.
Chromagen dev tool, finalized version
There were certainly many challenges we came across while working on Chromogen. One of the main challenges was that, because it had not been touched for nearly 2 years, a lot of the libraries and frameworks used in building the Chromogen tool were outdated. It was also difficult at times to get in touch with the previous team members, and we initially had many questions about the hefty codebase. Our team members relied on each other to dissect the code and research the tech stack used on the app to have a better understanding of the purpose of certain functions, the overall layout of the design, and the data flow.
Chromagen 3.0 launch announcement on Slack
Eventually, our team was able to iterate through the inherited codebase and successfully reproduce Chromogen 3.0, an automated Jest unit test generation developer tool for applications written in Recoil or React Hooks, which not only has kept its download functionality to download the generated tests onto the user’s computer, but is also now capable of rendering in the Chrome browser extension an editable version of the test file, as well as an SVG visualization of the state tree chart.
A big role that I had taken on in renovating Chromogen was capturing the state of the user’s app and producing a state tree visualizer for easy debugging. D3.js was the most fitting technology to use in order to achieve this feat—and because I had never used D3 before, I had to learn how to use this new technology, which, while challenging, was very much an enjoyable process. There were certainly many sleep-lacking nights, but in the end it was very rewarding to see the fruit of all of our hard work, very much visible on the page. And what a relief it was that I did not let my team down, either!
APPLYING THESE LESSONS LEARNED BEYOND CODESMITH
I imagine that the 4 weeks of OSP phase was just a taste of what my future might look like in the tech sphere, iterating on someone else’s code, exploring a brand new tech stack, and learning to work with people and knowing how to contribute.
Our amazing team, MSLED
Just a couple of weeks into Codesmith, I started doubting my skills as a software engineer. But the four weeks of OSP has unquestionably made me a stronger engineer who does not back down when dealing with a brand new technology. This experience also refined me as a team player, both in knowing when to rely on my teammates, as well as learning when to speak up to contribute to a solution.
I truly owe much of my positive OSP experience to every one of my very supportive teammates who were such hard-working, compassionate individuals that put their best foot forward for the team. I now can be a more confident engineer, and I'll aim to emulate my teammates' qualities when I am working with others in the near future.
Now, time to tackle some job interviews!
Blog written by Erica O, LA Immersive Cohort 49.
Hear another grad's experience building the Open Source Product in this blog post by Savitri.