Becoming A Mentor

Junior Dev Diary: Entry 4

In the past few weeks, I had the opportunity to help out in the planning and running of the Work Experience week in Sunderland Software City. It was a fun and challenging task, especially due to its limited planning time.

Initial Meeting

Our first meeting was 2.5 weeks before the start of the Work Experience Week. Our director gave a brief on what the work experience was meant to be - a “feeler” experience for people to see if software development is something that they’d like to get into. For my Indonesians out there, think Kidzania; less roleplay, more actual work.

Our director has already had a first schedule drafted. She asked us (the devs) to have a look and change it to however we see fit. We ended up removing some things, moving others, until we reached a schedule like this. Our first draft, the schedule was just put in a Word document, with no time approximations. I find it easier to read schedules in a table with specific times. This allows me (and others) to have a point of reference when running the event; whether we are rushing/dragging.

I volunteered to take notes, just because it’s another opportunity for me to use Neovim (by the way). I am also basically a pro in Markdown now, from writing so much High Quality Pull Requests. The actions to take in this meeting: developers, go find projects/ideas for a simple program that these students can complete in 2.5 days. Ideally, we would have 3-5 project ideas that students can choose from.

Research

My first plan was to propose a recipe app. A very simple baseline functionalities, and can be extended very easily if students want to use this as a “take-home” project. It’s a basic CRUD app - who doesn’t like CRUD apps? Writing this idea down also made me realise that most web-apps (I can think off) are just CRUD wrappers. Funny thought.

A second idea is a flashcard app/game thing. This came up because I was supposed to build something similar to this for my girlfriend, who needed to memorise 40+ cocktail recipes for her job. She managed to do it before I even initialised this app.

At its core, flashcard is quite simple too with high extensibility. Base functionalities only include adding new flashcards with 2 or more pairs of questions and answers, and everything is stored in the server’s memory. This limits complexity, but gives enough context to the students on how a client-server architecture work in code.

Projects Preparation

We had another meeting to discuss which project ideas should be fleshed out into a good stubbed out codebase, served as a jumping point for the students. My recipe app was heartily laughed out the room. ”It’s just a todo app! Why do you like a Todo app so much, Shawn?” Leave me alone I get it I’m boring and the worst colleague ever. However, the Flashcard app was received with open arms. Maybe they just felt bad I crashed out.

Preparing the codebase was more work than I thought. My first implementation was a pure client-side app with vanilla HTML, CSS, and JavaScript. Lots of manual DOM manipulation to change the content of the HTML with JS, and user-feedback mostly uses the alert() function - mostly because it’s straightforward and simple. The second implementation, after feedback from our senior developer, was to use a server-side rendered solution. We ended up using Express.js with Nunjucks as a view engine.

Using SSR with bare Express means that I had to use forms to communicate with the server. I also got the chance to implement the MVC architecture on Express.js. Furthermore, I cooked when writing the readme.md ; check it out here.

After making sure I know I can build it myself, I removed code and replaced them with TODOs to guide the students when implementing the code. I try to insert hints not answers, also referring them to documentation.

I really put my 100% into this mini-project. I tried so hard to create an impactful, worthy work-experience for these students. Which disappoints me even more that NONE of the 9 attendees chose my project to work on. ZERO!!! I was so close to crashing out in front of them but we move. I remember all their names and will find out where they live.

Final Touches

All the projects are on a private Github repo. Laptops were prepared, and I have created the final schedule using Notion, passed it around with Notion pages. Pretty nifty. One problem: it’s 4pm on a Friday, and we need to at least fill a 1 hour gap with a lecture-style content about “Introduction to Software Development” by Monday. Me and a colleague that stepped up joined forces to create a presentation. My parts cover SDLC, and his covers basics of webapps, roles within software, software used, etc. The goal is to have introduction content so students can have a basic understanding of what we do. Both of us worked through the weekend to produce a presentation and practised it, you can see the slides here.

We were supposed to have more content in the following days, but the stress of executing this work-experience week perfectly was slowly debilitating me. I was entrusted (well, mostly volunteered, but trust was put in me) to plan and run the program. In a weird way, I was also unsure of my responsibilities - am I overstepping my boundaries? Am I being too eager? I know running events/planning is a strong suit of mine, but am I taking opportunities from others? My anxiety-riddled (lack of) sleep throughout the week did not help. Well, we could only take it one day at a time.

Go Time!

I only practised my presentation twice - once after creating it, and the second time in the office while waiting for my turn to come down and talk to the students.

I walked up to the front of the hall, connected my HDMI, and took a sharp breath. A short introduction to who I am, loaded up Canva, and I kept on yapping.

It was a good yap! Students seemed to be interested and engaged. It probably helps that I bribed them with a free crisp (most correct answers at the end of the presentation got a bag of crisp but I felt bad for others so I got everyone a crisp during lunch). I was surprised - I wasn’t as nervous as I was during practice. First presentation went smoothly and I hope I have gained respect from the students.

Afterwards, my ego was stroked by my colleagues who were impressed by my presentation. It was a good price to pay, I think (10 quid for the crisps). Some say I’d make a good teacher. Maybe it’s a sign? Nah I got mad respect for teachers but respectfully I’d like to not be poor 😭

The rest of the days went well - no more presentations, just mostly practical activities that the students partake in, such as breaking down project requirements with MOSCOW (Must or Should, Could or Won’t), wireframing, and building the projects itself. More people never coded than previously thought, so my senior made the clutch decision to try to use a no-code solution for one of the projects, Streetlight Damage Report web app.

I ended up overseeing this Streetlight app group, where we explored Bubble, a no-code solution. I said we because I have never used Bubble before. Within 20 minutes though, I managed to know how to trigger events and creating a simple database to store Streetlight data. Unfortunately, I did not figure out how to create a mobile responsive layout - so I just forced people in my group to limit the canvas to 360px width, to mimic a mobile phone.

Mentoring these students was an interesting experience. Due to the varying levels of exposure to code and web development in general, I had to think about how to break down things simply. I had to explain what a query parameter is! Showing real examples, such as the google.com/search?q=this+is+question helped piece together the concept.

Celebrating wins such as a new concept understood, or a part of the challenge done with the students was important, both to keep the student and myself engaged. There was one particular student who was quite hard on herself. She was brilliant and pick up things quickly, but she talks down on herself quite often. I pointed it out several times, and my hope is that she recognises it and start being more proud of herself. But anyway, this is way out of my domain of expertise - I wish her all the best.

The final day was finishing off projects and presentation time! Students were asked to present their work and what they learned this week - any challenges encountered, what they like, what they don’t like, etc. It was great seeing everyone present their work. I can proudly say everyone involved have gotten something out of this experience.

Final Thoughts

It was a fulfilling experience, for sure. It was stressful at first, however that was also because I did not know what a work-experience look like. With a picture in mind, I’m certain the next work-experience week would not be as stressful. I have successfully expanded my comfort zone. I am still a wee bit hurt and disappointed no one wanted to build my Flashcard app, but I am glad everything went well. The only downside in this experience was that I had no time to start my Laravel studies for an upcoming project - I am a week behind on material. No worries though, I’m currently watching Laracast’s 30 Days Laravel in 2x speed!

My efforts was also recognised by the director and my senior developer. That was like crack. Feels good to be recognised, man.