Project Shift Blog


Cohort Project: Rebuilding Slack from Scratch

Project Shift students build dozens of projects throughout the course, but there’s an extra focus on the two final projects they present upon graduation at Demo Night (the last day of the cohort). One of these projects is an individual project, and the other is their “Cohort Project”.

For Cohort 1’s “Cohort Project", our students teamed up together as one large software team and re-built their own version of the popular workplace communication app, Slack - all from scratch and in 5 days!

To prepare for this real-life simulation and test of teamwork and collaboration, our students were trained in the Agile Software Development Methodology from our very own Board Member, Chris O’Rourke. As a Principal Engineer at Cisco, Chris has years of experience leading hundreds of engineers through building some the most advanced software systems.

With this in mind, the students self-organized into two teams, a Front End Team, and a Back End Team. Everyone from the cohort was to act primarily as a developer on one of those two teams, but a few would take on one the following additional roles:

Product Owner - The overall leader whose main job is to ensure that the team is organized, know's what to work on and is working toward completing the project and on time.
Designer - Worked closely with the Product Owner to create the projects design and wire-frames so that the front-end team knew what they should build, and the back-end team knew what data to provide. 
Front End Lead - Architecting and planning the hierarchy of user-flow based off what data they expect to get from the server. Also, this person ensured the front-end team stayed on task.
Back End Lead - In charge of choosing the database and architecting how the data would look when it's passed to the front-end. Also, this person ensured the back-end team stayed on task.

Now that the teams were set and roles had been decided, the students wisely set aside a day for planning their application. The Product Owner, together with the Designer set down to create wire-frames for what the application should look like, given requirements from the instructors. From there, they created a list of tasks that needed to be complete along with the schedule they would hold for the next several days (when they would work, when they would meet, etc).

Before any coding could begin, the Product Owner hosted a meeting so the team could conduct what’s called “Planning Poker”. Planning Poker is when a group of developers together estimate how much time each task or feature will take them to complete. With this data in mind, they can make some educated guesses on how long the project will take and which features they would be able to implement. Here is a screen of the spreadsheet Cohort 1 used for their planning poker:

After the planning session, the Front End Lead and Back End Lead organized their teams around the first tasks at hand. Since the Front End Team wouldn’t have any data yet to build the application from, the Back End Team had to decide what the data would eventually look like and provide them with some dummy-date until their side of the project was finished. With this dummy data in hand, the Front End Team would be able to build the React/Redux side of the application while the Back End Team worked in Node and SQL exposing an API that the Front End Team could eventually use to get the real data from the server.

Each day that the team met, the Product Owner updated a "burn-down chart" she had created to ensure that the team was on schedule:

Throughout these 5 days, the students spent late nights collaborating as they tackled bugs, overcame obstacles and even learned a few brand-new technologies that they had never used which they needed for the real-time chat functionality of Slack (, for example).

Moments before the deadline (4pm on Thursday), the cohort did it! They completed the MVP (Minimum Viable Product) for their re-build of Slack that they dubbed, ReSlack’d. After popping a couple bottles of champagne and demoing their app for the instructors and one of the mentors (who happened to be there), the students breathed a brief sigh of relief. Everyone was tired and emotionally drained from the sleepless nights they’d spent in the prior week, but they had set a seemingly impossible goal and tackled. However, this relief didn’t last long as the very next day the students were to begin coding on their final individual project.

Below is  screencast that the team made to show off whatReSlack’d can do:

Topics: Uncategorized