A Deep Dive Into the Immersive Program's Project Phase
Published by Codesmith on
Jul 31, 2020 12:00:00 AM
One of the many things that distinguishes Codesmith grads is the sophistication of the projects they build during the program. Codesmith’s recent grad Taylor shares insights on what goes into building each project and the impact they can have on your journey of becoming a Software Engineer.
The first half of Codesmith is a blur of two day units, where you learn one topic over a two day period and then move on to the next subject. This is a stressful time, but I’ve never learned so much in such a short timespan. The amount of information is overwhelming and I found note-taking to be crucial to retaining as much as possible.
The remaining time at Codesmith is dedicated to projects. There are multiple projects that compose this half, including three that are three days long (a personal project, and two group projects) and the production project which is done over about four weeks. The groups are four to five people and assigned by Codesmith after preference forms are completed by everyone and taken into consideration.
While I greatly enjoyed the first half, the second half of the program was more exciting because you actually get to apply the knowledge you’ve just gained. The project phase really gives everyone a chance to focus on subjects they felt less confident in, or to specialize in things they enjoyed learning about.
The first project is the personal project and is done solo. Everyone is encouraged to complete a full-stack application with CRUD functionality (create, read, update, delete). A common choice for this project was creating a basic to-do list. Many from my cohort chose to make different apps in an effort to avoid ‘cookie-cutter’ projects.
The scratch project is done over three days in a group of four to five people. It’s called the Scratch project because you are starting with a brand new idea and no codebase. It’s also the first time working in a team, and the first project that requires the idea to be signed off by the Lead Technical Mentor (LTM). Each team ideates on different project ideas and presents their best ideas to the LTM for consideration. This ensures that the projects have sufficient technical depth, are within scope for a three day project, and present a good narrative for the job search after Codesmith.
Working in a team environment is definitely a learning experience, especially around subjects like version control (Github) where one person’s mistake can cost the team precious time. Constant communication is critical for these short projects to make sure everyone is on the same page.
The Iteration project is also done over three days and with a group of four to five people. The group is not the same as the Scratch project group, but there may be slight overlap. For this project, each team picks one of the scratch projects to iterate on. The team can choose to continue any stretch features of the original idea or to take the project and go in a different direction. Again, each idea must be signed off by the LTM.
The Iteration project was challenging for a few reasons. Being thrown into a pre-existing codebase comes with a period of trying to understand the code that was previously written. Also, working through code that was written under a very short time constraint can unfortunately mean working with some spaghetti code. This is all part of the learning, as these are both things that are likely to be encountered out in the workplace.
The production project is the meat of the project phase. This is where you develop with a group over the period of four weeks. Codesmith highly encourages creating or iterating on a developer tool for the production project. An entire week is given for ideation to allow time for the appropriate research and discussion. Ideation is said to be the toughest week at Codesmith and I’d say that’s probably true. Coming up with a good, original idea for a tool for a technology that you don’t fully understand is no small task.
The LTM signs off on production project ideas only after the idea meets strict standards, and it's not uncommon for groups to still be searching for an idea at the end of the week. It’s important that the production project tackles a real world challenge and to have enough technical depth to be talked about during the job search.
The production projects are launched into the world as real projects and some even end up as popular tools in the developer community.