The Rising Coder - Week 13/13 (Project Week 3/3)
Tags: javascript, typescript, webdev, programming
Published: 2022-11-26 00:39:58

Good morning, good afternoon and good evening! It has finally arrived, the final blog entry to The Rising Coder and my journey at the [Northcoders Bootcamp](https://northcoders.com), and what an absolute pleasure it has been and I would not trade in this precious 13-week experience for anything at all. 

From the mentors that supported myself and fellow students, my fellow cohort members that were always approachable and supportive during every step of the way, and to my final project team that were an absolute pleasure to work with over the course of the past three weeks.

Throughout the bootcamp I was regularly talking with a previous alumni [Atlas Sproson](https://www.linkedin.com/in/asproson/) who I coincidentally met through a mutual Discord server, and his advice & words stuck with me throughout the bootcamp. He had told me that once the clock hits 5PM and you're on your way back home on the train that the reality begins to set in. You realise that your journey has ended for now, and whilst it was a bittersweet parting, it's definitely not goodbye forever! 

So, what exactly happened during my final week at the Northcoders Bootcamp and what are my future plans going forward? Feel free to skip ahead to the specified sections below at your pleasure:
* Match Me If You Can - Internal Networking Event
* Final Week Schedule
* How the final day went
* Team G3O's Final Project
* Self-Reflection
* Thoughts going forward - what now?


## Match Me If You Can - Internal Networking Event
As Northcoders has a large network of hiring partners that are interested in hiring Northcoders Graduates, one of the events that Northcoders holds is called the "Match Me If You Can" that is abbreviated to MMIYC. This event aims to connect Northcoders Graduates with hiring partners so that we can get our foot in the door with our first Junior Software Engineer positions. I will be completely honest with you, I'm not the **social butterfly** by any means and I really felt out of my depth and comfort zone when I signed up for this event.

However, going into this bootcamp has changed me for the better. Previously it would have been easy to ignore this opportunity or to cancel my attendance altogether because of nerves. But, what I had learnt from my time at this bootcamp is that if you aren't willing to **put in the time** and **push yourself out of your comfort zone** then you won't be able to create any positive changes for yourself.

So the moment I booked my £17.00 return ticket from Macclesfield to Manchester, I made a stern committment to try my best during the MMIYC event. As these types of events and spaces are not what I'm comfortable with, I frantically researched a few days prior for a few YouTube videos to help myself feel prepared both mentally and physically. 

Below this I will link the three videos that helped me out during my first time in a long time attending a networking event in hopes that it will help you. But, my main takeaway is that as long as you set yourself a goal and you push yourself of your comfort zone to give yourself a chance, then you will make progress - so give it your best shot, I'm sure you will not regret it at all!
* [6 Tips on How to Network at an Event](https://youtu.be/6HjAWLmhwRM)
* [10 Simple Ways to Improve Your Networking Skills](https://youtu.be/E5xTbn6OnAA)
* [Networking Events - How to get into and out of conversations](https://youtu.be/aLTI49PVoSw)

## Final Week Schedule
For those that are unfamiliar with the final project phase structure at Northcoders or perhaps need a refresh, here's the breakdown:
* Week 1 - Introduction to Agile Methodology & Team-building exercises & Spiking Technology
* Week 2 - Coding your project
* Week 3 - Polishing off your project's MVP (Minimum Viable Product) & Presenting your project

During the second week of the final project phase, we exclusively build up our project's MVP, and following the third week - we aim to completely finish coding altogether on Wednesday. This is not to say that we finish the project entirely with *all* MVP and post-MVP features, but to get to a stage that we are comfortable demonstrating the project.

Thursday itself is reserved for the project's demonstration video that would be used for Friday. Our team had a bit of confusion alongside other teams in our cohort because of recent changes to the structure of the final project phase demonstrations due to the numbers of Northcoders rapidly growing each cohort.

However, here is a brief summary of what to expect for the final project phase demonstration:
* **REQUIRED** - You will need to record a live demonstration video of your application for a maximum of 3-minutes with a voiceover. This will include information regarding what the project is, what tech stack was explored for the project, and what features your project has.
* **REQUIRED** - Submitting a Dropbox that includes your project's live demonstration video with voiceover & photos of each team member.
* **REQUIRED** - Submitting a Typeform that includes: Your team name, your team's project name, an extensive list of technology your team used and why, each name of your team member with personal biographies that would be submitted to the Northcoders Project Showcase for each individual team's projects.
* **OPTIONAL** - If you have time, you will be able to create a slide show that has your tech-stack and explained in brief detail, what you think went well for your project, what you and your team could have done better, and if given more time what would you and your team have liked to implement in the future.

## How The Final Day Went
Today was my final day at Northcoders and it wouldn't have been a proper farewell without going to the office! The previous two times I came to the office were my first day of the course (August 30th), and two days ago (November 23rd) for the MMIYC event, and those two times it took me 35 minutes to get from Piccadilly Station to the Northcoders Office which is near Manchester Metropolitan University. 

The reason for that is both a mix of not living in Manchester and visiting often, and my compass tracking on my iPhone being turned off so my phone didn't properly track where I was going - but I managed to find this out a day before so it only took me 15 minutes to walk there as it should!

We started the day off by being given a task by Jim (The cohort lead mentor) called the "Retro" or "Retrospective". This is in short a brief period where you and your team get together and write on sticky notes in private about the things that you think went well, what could have gone better, and what you want to strive for in the future. But the trick to this is that you don't show each other what you have written yet so that neither of you and your team members are influenced by one another. So when the time comes for the reveal, you all put it on a board and talk through it all.

Or... That would have been the case for me and my team. As our team had already talked through the day prior about all of the above points, we had already been influenced by one-another and so the actual retro task for us was a bit difficult 😂

Although besides that, it was very nice being able to finally meet my team that comprises of [Ellie Lyons](https://github.com/elliehl/),  [Kirils Knazevs](https://github.com/KirilsKnazevs),  [Nikita Selanko](https://www.linkedin.com/in/nikitaselanko/), [Antony Lester](https://www.linkedin.com/in/antony-lester/) and[Jon Linford](https://www.linkedin.com/in/jon-linford-103427255/) in person at the office (Antony & Jon were unfortunately not able to come though).

Fast-forwarding to 11:30, it was finally to get the show on the road! We were moved into one of the small conference rooms in the office and sat in rows of seats staring at the screen that housed the presentation that included the presenting team's name & project demonstration video that we submitted a day prior.

There were so many great projects that were created during our cohort that included:
* An original Wordle-inspired game called [WordPearl](https://github.com/Ikrambo92/WordPearl-Frontend)
* An interactive application to find friends to play boardgames with called [All Aboard](https://github.com/FelicityRC/All-Aboard-BE)
* An application that allows users to track their belongings so they never get lost called [wHere](https://github.com/kamakazee/wHere_Backend)
* An interactive application to find local activities through creating & joining activities pinned on the map called [Activime](https://github.com/NCJ0110/Activime)
* A bucketlist application for future to-do activities with built-in communication features to inspire each other called [WhyNot](https://github.com/WhyNotNorthcoders/WhyNot)
* A swipe-powered matching system for all of the foodies called [Dinder](https://github.com/jgsn93/Dinder-Frontend/tree/main/dinder)
* An interactive application aimed to teach children about growing your own plants called [Seedlings](https://github.com/EmmaMaddocks/seedlings)
* A nifty little application to find your kid's next Christmas present called [Santa's Little Helper](https://github.com/robcarter123/react-final-project)
* A built-for-purpose application to track the latest discounts from multiple UK supermarkets called [Supermaaaart](https://github.com/nkrpradhan/supermaaart-fe)
* A Pokemon-Go-inspired application that enables you to take a quick screenshot of a bird to find out its species called [Birdly](https://github.com/yahya003/birdly)
* A gamified application that incentivises you to journey outside called [Questr](https://github.com/MrsCf28/Questr)

And then there was our final project called **Find 'n Dine** - which will be covered below!

## Team G3O's Final Project - Find 'n Dine
Our original name of Team G3O was meant to remain anonymous for the world to see, but because of a few miscommunications when submitting the incorrect team name on Thursday, we were outed as team "Overlords", so much for not letting anyone know about what "Team G3O" really meant 🤦

Besides that, getting into our final project - what exactly is it, why did we build it and what tech stack did we use to create it?

### Find 'n Dine - Brief Summary
So quite briefly, [Find 'n Dine](https://github.com/clam119/find-and-dine-frontend/) is a cross-platform application that was built to help indecisive foodies find their next favourite dining location with a swipe of a finger. The user will be presented with a deck of cards that contains information regarding the restaurant's Google Review Stars, the restaurant's website & location, a carousel of images and the ability to add a restaurant to a list of favourites.

When the user decides to swipe right for interested and left for not interested, they are shown a little "Helper Icon" in the form of a **green heart** and **red broken-heart** for respective right and left swipes.

If the user wishes to remove a restaurant from any of the three lists (Interested/Not Interested/Favourited), then they just need to swipe to the left on each restaurant card to delete, or if they really want to clear the entire list then they would click the **Clear** button that would erase the entire list from the user's local storage.

The idea initially came across when we were discussing potential project ideas during the first week of the project phase when we had discussions of "What problems do we face and what could make it easier?" - and the topic that came up was "Trouble picking something new for date night", and that was when the seed was planted.

Prior to this our group had two other project ideas and of which one of those project ideas was what we originally gunned for until it was... gunned down 😂 And then this project idea arose to the surface and so that is where we have arrived to by the end of the project phase!

### Find 'n Dine - Tech Stack
For both the Front-End and Back-End development of our final project, we used **TypeScript** which is a type-safe superset of JavaScript because we were already initially interested in learning about TypeScript because we constantly hear about it in the market, but it was only until we started using it ourselves that we understood the benefits and how much it improves developer experience.

Without further ado, I will introduce you to the tech stack that we used for both the Front-End and Back-End:

### Front-End Tech Stack
* **React-Native & Expo Go** - As our team wanted to create a cross-platform application that runs on both iOS and Android, we opted to use React-Native because of the cross-platform development nature of the platform and the accessible transition. However, as React-Native does not come with a pre-bundled packages to make lives of developers any easier, we opted to use Expo Go which allows us to view the changes to our application on our phones live, as well as being able to not write a single line of native iOS/Android code like you may be required to in traditional React-Native.
* **Redux & Redux-Persist** - Our vision for the application was to ensure that the user's list of restaurants were to be stored locally and not be deleted upon reloading the application. Initially we tried to use the traditional React-Native Async Storage, however as we were using Expo Go - this library was yet to be supported and as a result, we had to find a work-aroound. Luckily we found Redux that allowed us to store all of this state pertaining to the restaurant lists of the user in a single store, and through using Redux-Persist, we were able to persist this data so that it was not lost on reloads.

### Back-End Tech Stack
* **MongoDB & Mongoose** - The dataset that we were working with originally included [Antony Lester](https://www.linkedin.com/in/antony-lester/) having to web-scrape for over 6+ hours on the Friday of the first week of the project phase, to which the number of lines of code was well over 260,000+. As a result of this, each of the objects had inconsistent data that was different from each other and were completely non-relational, and so we opted to use MongoDB because of it's non-relational database nature and ability to store JSON objects with relative ease. Mongoose was used to easily connect up our API server and host online.
* **GraphQL & Apollo GraphQL** - Similar to our reasoning behind learning a new piece of technology, we had heard about GraphQL as an alternative to the traditional REST API. A quick TLDR is that REST APIs will typically return all of the data on a JSON object unless specified and so you could be under/over-fetching as a result. However, GraphQL eliminates this because you only fetch for the data you need. In order for our team to retrieve data from the database, we used Apollo GraphQL with Mongoose to easily connect the two to start making queries quickly.

## Self-Reflection
As I mentioned at the beginning of this blog post, when I bid my farewells to the Northcoders tutors and fellow cohort members, and then finally my team members - it dawned on me that it's all over, just like that... I won't lie and say that it wasn't sad to part ways, but I really am glad that I joined the [Northcoders Bootcamp](https://northcoders.com) and met everyone I had on the course.

From being a completely anxious wreck at the start of the course to feeling the happiest I have been in a long while, it's a night-and-day difference. Reflecting on how much progress I have made since both the start of the precourse and last year where I was not in the best place mentally, it has been amazing. I've been able to learn about so much in-demand technologies including JavaScript, TypeScript, Node, Express, GraphQL, Redux, Tailwind and so much more and I can finally confidently say that **I can indefinitely add value**, to of which I definitely could not have said previously.

Going into the bootcamp itself I wanted to contribute and create a safe atmosphere that encourages one-another to be positive and friendly towards one-another, and both the Northcoders Staff and my fellow cohort members reciprocated tenfold!

Originally I started writing this blog because I wanted to document my own journey so I can reflect on what I've done and perhaps give guidance to future Northcoders, but whenever people on the cohort meet me for the first time and drop in to say hi and that they've read my blog, I'm honestly beyond happy! So if you are reading this and you were one of them, then thank you for reading and supporting me, I really wish you all the best even after we have finally finished our journey for now and graduated!!!😌

## Thoughts Going Forward
Although this is the end of one journey does not mean it's the end of **my journey**! After arriving home and finally feeling the reality of my time at Northcoders ending and laying lost before writing this blog post, I realised that I really enjoyed being able to voice to myself and others who were interested, about what I've been doing in hopes that I can encourage others.

So my thoughts going forward are that I would like to create a weekly blog series that will contain things that I have done for that week so that I can keep a solid routine of self-reflection so that I can keep track of what I've done, and keep you guys in the loop of what I've been up to 😊

Perhaps if you are reading this as a fellow cohort member and thought it was too late to start writing about your own experiences and journey, then I really implore you to give it a try yourself! Having that extra somebody to give you that extra nudge on the back like you guys have done for me when you mention you've ready my blog posts really does help, and so if you decide to start writing your own blog entries then please tag me and I'll be sure to join you on your journey together! 😊

But for now, I will definitely be taking a small break before returning to my grind, and again thank you for all of the continued support along the way and I hope to see you in my next series that will also be on my [blog page](https://dev.to/clam119)!

## Socials
Feel free to give me a follow on any of my socials down below!
* [GitHub](https://github.com/clam119)
* [Dev.To](https://dev.to/clam119)
* [LinkedIn](https://www.linkedin.com/in/christopher-lam-792b90161/)