School of Code Diary

WEEK 1

2 days down, 15 weeks and 5 days to go! Today was pretty good. We spent the day delving more into computational thinking and problem solving. I really like the fact that we are being introduced to the why and the how of how computers think. Rather than delving straight into coding when we see a problem, I like that we are instead encouraged to break it down into the smallest possible parts. By doing this, even really big problems appear less scary and intimidating. The cloning exercise where we had to break down a webpage was very eye-opening. Although I can look at a basic webpage and imagine what html tags and css styles are used, I never really looked at it in the modular/abstract way we did today. It was reassuring to see that even something fancy and shiny like the netflix homepage was made up of just a bunch of nav bars, menu items, lists, and thumbnails. The session with Joseph Trodden was also a real highlight. Thinking about leaving my comfort zone is something that I knew I was doing but never really sat down to articulate properly. Being a complete beginner again after studying something else (and being quite competent at it) for so long is truly nerve-wracking. However, with The School Of Code, I’m learning that like coding, even though our fears might look very scary. Taking the time to break them down into smaller manageable chunks and then tackling them can make them much less daunting. I came here to learn how to code, I didn’t imagine it would be a real holistic educational experience.

WEEK 2

I haven't gotten around to writing reflections since we started week one, and now we are already done with the first two weeks of Bootcamp. It's amazing to think of just how much we have learnt in what has been such a short amount of time. I went from knowing the bare minimum about html and css to being able to build a simple(yet responsive) trivia webpage with Javascript after two weeks! I have to admit I really struggled with javascript when it was initially introduced to us because I didn't really see how it worked on a webpage. HTML and CSS made much more sense from the get-go because they were live visual representations. For javascript, we spent a fair bit of time in the console log, learning about functions, for loops, arrays etc that I just really could not visualise. However, once the concept of the DOM was introduced and the results of the code began to appear on an actual webpage I feel like I began to grasp the concepts much much better. Things began to click better. I also suspect that I might be more of a visual learner perhaps.

WEEK 3

The 16personalities quiz and worksheet was also a great addition to the tasks for the week. I have taken the test before but never really thought about it deeply or discussed it with other people in a group. So far I really like that SOC places a good amount of emphasis on group dynamics and group discussions. The guest lecture today was also great. Hearing from Jeff Watkins about best practices to keep in mind when coding and refactoring code was quite insightful. It felt like we were made privy to information that some developers had to learn the hard way much farther down the line. It will take some practice before it becomes second nature but still good to hear and think about this early on. All in all, a great week at the School of Code! Onwards and upwards :D

WEEK 4

We spent the last two days focusing on node and express as well as building servers. I struggled a bit in the beginning but I think it is finally clicking into place today after doing the astronauts API workshop. It is only 4 weeks into the program but I am already noticing a marked improvement in myself and my fellow cohort members. We are getting better at recognising problems, stepping back and breaking things down. Pulling out patterns, articulating ourselves etc. Also going over the API express exercises multiple times was a really great way to cement the knowledge further. I've enjoyed being in Chris's classes once again. I love all the dad jokes and I am amazed at how he is able to keep his energy level so high all day long! Great day at SOC as always!

WEEK 5

As of yesterday, we are officially a month into the SOC Bootcamp. We have already delved into the backend and have been trying to understand how servers, clients, and databases all connect to each other. Learning a new language like SQL wasn't as nerve-wracking as I initially thought it was going to be. I suppose if you have already learnt one language, it becomes easier to spot patterns and pick up other languages. Using packages like Postgres and writing SQL queries in vscode has definitely been some of the more complex concepts we've come across so far. On the flip side, teamwork and collaboration seem to be improving day by day. When we ask for help, fellow boot campers are more likely to join into a breakout room and help us think through a problem together rather than coaches. It's been great to benefit from the knowledge other boot campers have and it also feels rewarding to be able to help anyone who might be struggling with a particular task or concept. All in all, going great!

WEEK 6

We started the day off with a great talk from Will Peachey. Hearing about Will's journey into tech was really inspiring and reminded me that and i'm sure a lot of my fellow bootcampers that the sacrifice we are making to join the school of code will be worth it in the end. After the talk, I took some time to reflect on my journey into tech and what I want to take away from my school of code experience. Although the program is intense and fast-paced I don't want to miss out on all of the other amazing aspects of it. Like being surrounded by like minded people who are courageous and willing to step out of their comfort zone. I hope to have a more positive mindset going forward. Today we started delving into the world of testing our code. Testing seems interesting so far and I'm keen to get into the habit of writing tests as I imagine it can prevent massive issues further down the line.

We have officially completed 6 weeks of bootcamp! Thats 6 weeks of functions, variables, API's, fetch requests, databases, node init, npm run etc etc etc. We also covered testing, test driven development, jest, supertest this week which has been really fun. The absolute highlight was getting to make our own KATA! Hands down favourite task so far by a lot. I think it still hasnt sunk in for me just how much we have covered and learnt in the past 6 weeks. I turned up on day one with a very basic understanding of some html and css and now I am already dabbling around in the backend. I have never stretched my brain or abilities this much before in my life. Every single day has put me entirely out of my comfort zone. Even when I think I've done a bit of research and reading on a topic, the minute we start to go through it everything I thought I knew goes right out of the window. Somehow that's okay. My biggest fear going into the program was being a beginner again and I think for the first 3 weeks or so I really strugglwd with that. However in the last few weeks I've made peace with the fact that I just don't know anything about programming/coding and that's the point. It's okay to be q novide at something and we should just try to enjoy the journey of learning something again. The firehose analogy we were introduced to in week 1 really sums up my experience so far. It's been a lot but its also been great. We are now taking some time off for the holidays to recuperate and relax and we will return in the new year. Looking forward to the break so I can review some concepts and also build something. Exciting times ahead :D

WEEK 7

The Christmas break flew by quickly and we are already back at SOC learning how to use React. So far we have looked at concepts including states, props etc. It is still quite abstract and that makes it puzzling to grasp from the get-go but I feel like things are slowly clicking into place so I will persevere and give it my all. I had a good meeting with my mentor afterwards today and he was able to break things down much much better for me with regards to state. I enjoyed my break and did not deny myself some much-needed rest and relaxation. I took some time to go over a number of concepts we had covered prior to the break. I wasn’t able to cover absolutely everything, I don’t even think that’s possible actually. Instead I reviewed as much as I could and then I set off building my Christmas break project! To say that the project was a huge challenge would be an understatement.

I built a web app that takes in some user input at the home page i.e user’s name and user’s new year resolution. Seeing as it’s the new year I wanted to create something that would help to track and keep one’s new year resolution. Not long after building my home page I came to the realisation that we had only ever built single page applications! I had no idea how to take information from one html page into another html page. That resulted in a lot of hair-pulling and nail-biting. I contemplated quitting but then I decided to persevere and see if I could figure it out. A lot of youtube-ing and googling was involved. The hardest part was finding posts/videos that were using vanilla javascript. Most resources I found were using mongo or react. Neither of which I knew a thing about! Eventually I discovered resources that explained the idea of localstorage and the lightbulb finally clicked! I wish i could say it was smooth sailing from there but that would be a lie. CSS is still a huge headache for me and I struggle quite a bit with some of the concepts. I finally managed to make it work(kinda). My app worked pretty decently by the end and I felt immensely proud. It was extremely challenging and tasking but I learnt so so much. I’d quite like to go back and refactor some of the code as I learn more in the bootcamp.

WEEK 8

We are already at the halfway point for SOC. I remember at the beginning of bootcamp, every task, every workshop and every problem seemed insurmountable. The temptation to throw in the towel was so palpable in the first few weeks. However at this point I can already sense a significant shift in our collective attitude. Workshop tasks and problems haven't gotten any easier but we are more able to step back and think through problems logically. I notice this especially when we are pair programming. It’s the same on an individual level, when I do my own recap tasks or projects, I am less prone to panic when I don't know something or when I see errors. It's hard to explain but it's something our coaches told us would happen gradually as we build confidence in our skills and ability to tackle problems.

We have been diving further into react this week. We explored the useEffect hook yesterday and I can definitely see how beneficial it can be and how it can be incorporated into projects. React is definitely complex and I am still trying to wrap my head around props, state etc. But the last 8 weeks have taught me that even if it doesnt completely make sense everything will gradually click into place as I practice more and more. So far when it does work, I am really enjoying the added functionality that react provides. I'm keen to learn more about it as we go on!

WEEK 9

This week was probably one of the busiest and most challenging for me since I started at the SOC. This week we were placed into new groups of 4 and tasked with creating our first ever full stack application. We have only ever worked on the backend or the frontend individually and have never had to combine the two together into a proper full stack application before. It was daunting at the beginning of the week but we spent a good chunk of time on Monday planning our application. We tried to be extremely detailed in spelling out what problem it is specifically that we want our application to solve and how we could go about delivering value to our users. We were asked to build an application that would somehow solve a problem we felt boot campers were facing at the SOC. We decided that an app that allows users to track workshops assigned at the SOC would be an asset to all bootcampers. Once we were happy with the level of planning we set about building our app on day 2. As we were a group of 4 we decided that we would split into pairs to tackle the set up of the frontend and the backend.

I was working with a fellow team member on the backend which we set up using express generator, node and PostgreSQL. It was definitely a challenge figuring out how to set up the files from scratch as well as how to organise the shape of our data. We spent the day setting up routes, writing the sequel query, setting up our env and config files and deploying on Heroku. Once we had successfully deployed it we decided to write a get route to get all workshops and test it on postman. We had a number of errors pop up along the way and we were able to step back and dissect, allowing us to successfully meet our target from sprint 1 (i.e. setting up the backend). The pair working on the frontend were focused on setting up a form input that will take in user data and display it on the page. We were able to pitch and help out where they were struggling and eventually managed to use react hooks to facilitate the intake and display of data on the browser page.

Although we were progressing quite well on delivering our MVP, we had some challenges on day 3 and 4 as the team dynamics began to feel somewhat strained. We had some problems with decision making and the added factor of a short time period within which we had to deliver our project. We had a coach come in and discuss some of the issues with us and we were able to come to a suitable agreement with which each member was satisfied. During the process we ensured that we were swapping team members so as to give everyone a chance to work on different aspects of the project and learn from one another. We set up a two more sprints as well and were conscious to work in an agile manner which meant we had daily standups and retros.

Finally on day 5 we had some time to quickly run through our project before we presented to some judges. It was nerve wracking but also exciting to show them what we were able to achieve after just 8 weeks of coding. The project also felt like a great prep for our final project which will take place over the course of 4 weeks. We received some great feedback from the judges who seemed quite impressed with our team dynamic and final product. Going forward, we have also been reminded about the importance of testing(whether manual or unit), something which we were unable to implement effectively due to the short timeframe we had to work with. I think that after this week, I am definitely able to see why project building is hands down the best way to learn and improve your skills as a software developer. I’m excited by the prospect of a future which will allow me to continue diagnosing, designing and building solutions problems using technology.

WEEK 10

Week 10 at the school of code has so far consisted of a number of really interesting lessons and workshops. We started the week off by doing some retrospectives on the projects we built last week. Although we had regular check in-s and retros at the end of each day during the project week. I know that for my team members it was nice to come back and look at our work-process with a fresh set of eyes after the weekend. We reflected on the four Ls i.e. what we liked, learned, longed for and lacked. We all agreed and liked the fact that our team was quick to come to a consensus and get things done. We recognised areas that we lacked in were primarily planning and time management. We came up with a number of follow up actions going forward such as allowing time for research breaks when we hit a mental stump as well as being more detailed when breaking down our plan. I really enjoyed the session and I'm looking forward to implementing the lessons learned in future projects I get to work on.

We have also been learning more about the guidelines and the importance of writing good documentation. 10 weeks into our journey means that we have been exposed to a range of documentation, some great and some not so good. It was good to be able to have time to reflect on what makes documentation good and how we can keep that in mind when we write readme's for our future projects. We have also finally begun to look into authorization and authentication. It is no doubt a huge topic but platforms like Auth0 make the process much more secure, safer, and easier to implement within projects. We had some time over the last two days to set up some basic login and logout functions in react as well as enable users to log in through their Google accounts and other social media sites. Being able to see and learn the code behind authorization tech like Auth0 is always exciting as this is something that we all make use of every day on the internet. Looking forward to seeing what else is in store going forward!

WEEK 11

The week started off with a look at Docker and containerization. Often times when pair programming, we have situations where code seems to run just fine on one machine but will throw a number of errors when we try to run it on another machine. Docker offers a suitable solution to those kinds of problems and although it seems a bit complex at first glance, hopefully going through the docs a couple more times will clarify it further. We’ve also begun to look at how we can create our own custom react hooks! As with all things React, initially it looked a bit daunting but after doing a couple of exercises we began to see the benefits of custom hooks. At the basic level, they allow us to make our code more readable, testable, and legible. All of which are very important as our projects grow and get more complex. I’m keen to see how I can incorporate custom hooks into my projects going forward.

I have also been dabbling around in React JS in my own time with some simple projects to solidify some of the basics. I don’t think it’s an overstatement to say that React JS is amazing! I spent a few days building a rock, paper, scissors game in React. Being able to reach out to my mentor when I got stuck was incredibly helpful. He helped bring a fresh set of eyes to my code and guide me in the right direction with some of the bugs I was encountering. I also had some minor hiccups whilst trying to deploy but eventually realised the issue was with my folder structure. As a result, folder structure is something I will be more conscious and mindful of going forward. Check out the live demo here

During the rest of the week we gained even more insight into the processes that enable the tech we are building to run efficiently and optimally. We had a great guest lecture session on data and measurement and how important it is to measure anything in order to improve it. The exercises were stimulating and engaging and have given me a new viewpoint on the use of measurement and data in improving services offered to customers. We did a couple of collaborative exercises where we set explored OKRs (Objectives and Key Results) and how they could be used to track the impact of the changes and improvements a team/business might implement. Definitely some invaluable insight from the session and workshops this week. Hard to believe that we only have one week of teaching left until we start on our final 4-week long projects!

WEEK 12

It has been an eventful week at the SOC. We spent our last teaching week finalising a number of core concepts in preparation for our month-long projects. A highlight of which was a day where we were tasked with creating a noughts and crosses game in react. Like all of the tasks we’ve been assigned since we started the bootcamp, we were encouraged to take the time out to create a solid plan. Code can be deceiving and this was certainly the case with this challenge. We spent a good chunk of time planning how we were going to write the code. The exercise was a timely reminder of what to keep in mind when approaching a challenge. This proved incredibly useful for the highlight of the week which involved building something with a brand new coding language of our choosing. My team chose to explore python as it is quite a popular language. Although we had never used python before, we decided to try and build a basic rock, paper, scissors game and were pleasantly surprised when we achieved it! The exercise proved to be a nice boost of confidence in the lead up to our final projects. As a result, I am really looking forward to meeting my team mates and seeing what project month has in store for us all!

WEEK 13

After 12 intensive weeks at the SOC, we have finally embarked on our final four-week projects. At the start of the week we were introduced to our team-mates with whom we have never worked before. 3 months ago, the idea of being put in a team with people who I’ve never met and being expected to build a full-stack application would have been hard to comprehend. However, we have had a lot of practice over the last 12 weeks and I’m confident that we have the skillset and mindset necessary to pull it off.

We began by having discussions where we shared lessons learnt from our previous experiences. We also shared what our strengths, weaknesses and personal aims were. Based on this, we came up with a Team Manifesto focusing on "Enabling growth , a safe environment and a recognition of everyone’s contribution". We then spent time doing intensive research into our target user. We ran a survey and sent it out to people who fit the user profile and were able to get some insightful data regarding what would offer the most value to our user. A good chunk of the week was also spent on vision-boarding, sketching and mind-mapping where we all worked collaboratively. Afterwards, we took the time to create in-depth hi-fidelity diagrams and frameworks for both the front-end and back-end of our application. We rounded up the week by identifying an MVP and setting milestones to try and achieve during the month. It’s been a great week so far and I’m keen to see how much we’ve all learnt and improved on once we have completed our projects.

  • p.s Our Team Name Hugs for Bugs 🐛...🐛..🐛..is representative of our mentality because whilst we anticipate many pesky bugs along the way, we also welcome them as necessary learning opportunities! 😁

WEEK 14

-Our time at the SOC is slowly coming to an end. With only two weeks left to go, we've all been busy with final projects, cv’s and portfolios. Our application has been coming along quite well, we were really happy during our friday retro when we realised we had hit our basic MVP. We also used the retro to go through the 4 L's i.e. what we loved, loathed, learned, and longed during our project sprint. It was really insightful to see that although we were on the same page about a good amount of things, we differed in a couple of things too. The retrospective gave us an idea of how to reorient our team direction going forward ot make the best of the next two weeks of the project.

I then spent the weekend adding features onto Bookmark Index, an app I have slowly been working on. Being an avid reader, my book collection does tend to get out of hand every now and then. I wanted something that would allow me to see at a glance what books I own. Bookmark Index is an app that allows users to digitally store and organise their ever-expanding libraries. Amongst other things, the application allows a user to register and/or log in and then populate a digital bookshelf. It also allows users to view bookshelves of other users (all us bookworms are nosy by nature). Although I am still dealing with a few bugs on a number of features, it’s been really exciting to see my project slowly come to life! I’ll continue tweaking and adding features to it as I progress and learn more in the future. In the meantime, it’s back to the SOC for the grand finale of this amazing journey...

WEEK 15

We have come to the end of week 15 at SOC and we have also managed to complete our project! We were able to succesfully deliver our MVP and even managed to build some additional functionality on top of our MVP. Our finished product is an event planning app called Co:llab. The idea of the app is to make it easy to organise meetups between budding software developes who want to benefit from community based learning and collaboration.

The app was built using Next JS and Chakra UI on the frontend whilst the backend was built using node, express and postgreSQL. We were also able to handle authentication using Auth0 which easily allows us to incorporate other authentication and authorisation aloing different features on the app based on the current user. For testing we used supertest on the backend to test our API routes to ensure that they are working correctly. On the frontend we ran unit tests using Jest and also ran integration tests using cypress. The integration tests were the most difficult to incorporate as we kept encountering issues whenever our app had to redirect to Auth0 for authorisation. Eventually we came across a package that helped us setup a dummy user to mimic authorisation. This then allowed us to succesfully run our integration tests with no issues.

Going into the project, we were using both technology that we were familiar with as well as tech that we hadn’t used before. We decided that an agile methodology would be the approach for us as it would allow us to constantly iterate and improve. We conducted user research, and then spent a good amount of time identifying the MVP that we wanted to deliver. We went further by breaking the MVP down into sprints. Focusing on the end-user, we were able to pinpoint the key values and priorities for our app. We used project management tool Asana to organise our sprints into tickets. We held daily standups at the start of each day to share what we had worked on the day before and what we would be working on during the day. We also shared any blockers we had faced and got help to resolve them. We had check-ins regularly during the day and also held a retro at the end of each day to see whether we had completed our tickets and discussed any issues. We took turns facilitating meetings, ensuring that everyone had ownership over project management. We made sure to work in pairs as much as we could, taking turns with driving or navigating. Pair programming proved beneficial as it helped us improve our communication, break tickets down into actionable steps, share mutual knowledge and reduce human error. We used git throughout the process and made sure to work on separate branches, commiting frequently and merging often.

WEEK 16

It feels almost surreal to say that we have come to the end of our 16 week School Of Code journey!

The experience has been simultaneously transformative and challenging. Coming into the program, I was a mixed bag of emotions. Unsure how to feel about being a beginner again. Every single week at the SOC we were paired with a new team member. The pace, volume and pressure was unrelenting, we often referred to it as drinking from the proverbial fire hose. We tackled code-wars and battled with Javascript, React and CSS.

We honed our computational thinking skills, breaking problems down again and again till it became instinctive. Most importantly however, we learned how to learn, how to ask the right questions, read through documentation and scour stack overflow for answers.

Over the weeks, feelings of uncertainty and imposter syndrome came and went, but SOC staff’s faith in us was absolutely unwavering. I think I speak for all of us when I say we are forever grateful to Chris Meah for his faith in SOC’s mission. A huge thank you too to our ever-patient, uncomplaining coaches Arshi, Liz, Hamza, Jasien, Abdullah, Dave, Jordan, Chris M , Helena, Kentleigh. To everyone else on the SOC team, thanks for all that you continue to do.

A big well done to my fellow bootcampers and team members, you are an inspiring bunch! Good luck to us all. Last but not least, a huuuge thank you to my mentor George for his steadfast support and guidance from the very first week!