Hello there! I know, it is a promising title, but I swear it's not clickbait!. Let's start with a bit of context and bullet points!
Two weeks ago (first week of April 2021) I completed an intensive 13 week Web Developer bootcamp run by Generation australia.
After 15 years of being a Filmmaker, Writer and Video Editor, I am doing a career change to Web Development (I believe digital storytelling is the future of writing, but that's another story)
I am obsessed with context, and parentheses, coffee and bullet points.
If you are an experienced developer, you can enjoy reminiscing about "those times" amd feel extra smart every time you read something you already know. If you are a recent graduate, you can cry together with me.
The project is a small web app with some tools for players and game masters of the table top role playing game Cyberpunk RED.
After 3 months of codecademy, reading w3school references, hundreds of stackoverflow pages, hours and hours of youtube videos, when confronted with the dark and empty page of Visual Code and the blinking line waiting for your precious code (usually accompanied by the soundtrack of JAWS) I remember approximately ...1 line of code by heart… “ console.log() ”... :
Yes, I have a chicken memory, but I got extremely good at googling things and copy pasting.
At first I wanted to do this project by myself, it was a simple random generator for an online community of role players obsessed with Cyberpunk (inc me). But I am the type of person that works better as part of a team, so I lured some of my innocent graduated colleagues to join me in my adventure. Then it hit me, what if they think my code is clumsy? What if they want to peer code and realize I am googling everything. I pretended to be a team leader and to have everything under control. Oh yes I know exactly what we are doing and where this project is going….. (or did I?).
Sometimes I would find other people who had done something similar and I would (and still) feel overwhelmed by the thought of “I could never do that”. However, looking back now at our project code, I am sure that if I had seen it two weeks ago, I would have felt the same. I communicate this feeling to the team and, surprise surprise, everyone felt exactly the same way!
Organizing a team of 4 people is surprisingly hard. At the start I thought we would just get together and 'work on it as a group', but working remotely and with different schedules, time together quickly became a valued commodity. But it is way too easy to derail the meetings and lose time trying to fix things 'live' rather than assigning them as tasks. Meetings need structure. The first 3 days were complete chaos, our tasks overlapped, and our git branches... Well, you will read about it further down, but the thing I learned is that the structure of the daily stand ups, the product backlog, etc... They are all extremely efficient.
I talk a lot, (in case you hadn't noticed). And even though mostly it is for entertainment purposes, I do generate a lot of bad ideas, with the occasional brilliant one. The problem is that when in a meeting, or walking on the street listening to music, these ideas occur to me, I think of them for a moment, and BAM, they are lost in time. Conveniently, this happens a lot when I notice a bug and say "we will work on this later", or "remind me to rename this function", or "we should create a branch to try that out".
So I learned to use sticky notes, a lot of them, to write down reminders, ideas, bugs, netflix recommendations, you name it. THEY WORK!
Semantic code writing is not just a matter of accessibility. It is SO INCREDIBLY HELPFUL... Here are some of the variables/function names, or folder names that we used (and took a lot of time to change)
Category.Js, Generate.js, generator.js, num1, num2, temp, tempstring,, intNperson,intNpersonnew, components,uicomponents,uisubcomponents, total, newtotal.
You get the idea.
Picture this, you coded in your laptop. Then in your pc. Then you pushed and someone did a small change. Then you forgot to align some txt and changed again. Then you merged.... you 'accidentally' approved all incoming changes and THE PAGE IS BROKEN. You abort the merge and realize at some point, someone made a mistake (most likely yourself) .
Ha Ha, Not to worry, isn't that why we have version control???, you say to yourself as you sip your fancy chamomile tea. " I just go back to that version that was working... HANG ON A SECOND' was it the one named "asdasdas"or the one named "lol, merging, i think?"....
It is very hard to know when to stop when you want your project to be better, but at some point you need to deploy. We sometimes lost track of functionality and spent way too much time working on side things that were not that important (another reason why SCRUM backlog is so useful) We kept thinking of ideas to add to the project (after learning to write them in sticky notes). In fact, knowing what we know now, we could probably repeat the whole thing and do it so much better (next sprint!).
If you had asked me last year if I had a problem sitting on a computer looking at a screen non stop for 6 hours, I would have shown you my Cyberpunk 2077 and Witcher 3 100% achievement completion badges. So obviously I thought coding all day and night was going to be a piece of cake.
What I didn't take into account was the level of concentration and mental effort that it takes to code, and the fact that you are practically reading and rereading small characters on a screen. I had to learn to take breaks from the screen, go out for walks and know when I was overloaded and could not code anymore. Something that would have never happened playing a video game!.
However, seeing your program run at the end, starting from a simple idea in your head to an actual deployed web app, makes all the hard work worth it. I guess in a sense coding is not so different to filmmaking or writing. It all starts with an idea in someone's mind, and it gets translated to paper through hard work and most of the time, team work, which brings me to the last lesson learned.
Looking back at the project, even though it only took 3 weeks, I feel like we have fought a war together (thankfully on the same side most of the time), hiding in the trenches of the code, being bombarded by bugs and merge conflicts, having to survive pages and pages of stackoverflow, dreading that red error text when trying to compile...
I cannot imagine doing this project alone, I have learned so much from my team, not just technical skills but learning how to work as a team, being there every day, facing the challenges together, it really builds connections, and I believe coding is one of those things that it is more efficient when done in a group, as it is so easy to get lost in the lines of code and lose sight of the big picture. I love my team.
And I am still learning to be grateful to them, this was a small idea that is not going to bring money to any of us, and my teammates are not event part of the gaming community that will use this tool, but they still went ahead and put up with me bossing them around and spent hours making it happen.