My Decade in Review
My journey from failing student to senior engineer in 10 years
Exactly a decade ago I'd just finished my first semester at University studying Computer Science and I'm not going to lie, I didn't take too well to it. I was convinced I'd never get the hang of anything and I was seriously contemplating dropping out. I'm glad I stuck with it because 10 years later I'm living in London working as a senior software engineer with a tech blog where you're my 5th reader this year! Look at me now, mum!
Besides from a memory test (as I struggle to remember the stuff that I've done last December let alone Jan 2010), I want this to be a reminder to those more junior and inexperienced. If you feel like you're struggling then I know how you feel as I almost failed second year at University, I barely scraped a 2:1 overall and gained huge imposter syndrome when I started working. A passion and drive to get through every ticket, every bug, every new concept and every project are worth it and it will take you far. You've got this. ✊
I tried to keep this as focussed as possible and not to include too much fringe detail. A lot can happen in 10 years. Many characters appeared, disappeared, and stayed in my story who played a key role (for the better or for the worse) in where I ended up today. There's so much I wanted to include but I've decided to largely focus on the career development side of things. I hope you enjoy reading it as much as I enjoyed recalling it.
I've been fortunate in knowing since the age of 13 that I wanted to study computers and everything about them. I told myself I wanted to study 'Software Engineering' in University even though I didn't really know what that meant at the time. Throughout school, I took every Computer/IT course, module, and poured a lot of time on evenings and weekends making crappy websites for me and my friends, programming flash games, and learning how to use things like photoshop. I've still got old copies of the flash games and looking back, EA or Nintendo needn't have worried as much as I thought they would over my wonky stick men and 2D sprites. Adobe Flash (or Macromedia Flash back then) was what got me into programming and I'll always look back fondly at it. My gateway drug. I still kind of miss it in a way.
I had a taste of web development earlier on by making websites for me and my friends who liked to go hiking (the embarrassingly named expedition-club.co.uk) and making PHP plugins for our forums, but this was the year that saw me take on my very first freelance client! I was absolutely terrified.
I made preparations, went over to their house, took requirements, negotiated a price, and got to work! Some time into the project though I was contacted by my client and told they no longer wanted to go ahead with it. I was devastated. Little did I realise that this first experience was a taste of what clients will be like later on in my career too. Maybe this was the universe testing my mettle? "Man, are you sure you want this to be your career? Are you tough enough for this crap?" (I imagine the universe has a voice like Samuel L. Jackson).
While all of this was going on I managed to secure 4/4 places at all of my chosen Universities to study Computer Science! It had nothing at all to do with how close to home it was (more they had the lowest expectations for my non-existent Math skills) but I selected Newcastle University to study. Looking back this was probably the best decision I've made in my life so far. I was only 18, you can laugh if you want as it was arguably the first decision I've ever made in my life. But reflecting, it could have gone a hell of a lot differently.
This is the year I think of as 'the year I thought I understood absolutely nothing'.
I somehow managed to finish my first year with a high 2:1 which I genuinely think of as either a miracle or a mistake in the grading spreadsheet. Second year of University began, I moved in with some friends and realised that my extravagant lifestyle of premier pot noodles and tequila shots required a job so I applied for Pizza Express. This, looking back, was a massive mistake.
A home truth about myself which I hate to admit is that I don't grasp things easily. I really have to work to understand some concepts and honestly, programming wasn't coming easily to me. I was submersing myself in Java, databases, algorithms, theory and math and very little was sinking in. I found it very difficult to strike a balance between earning enough money to keep me alive, drunk and studying and failed a lot of exams. It was around this time that I started contemplating dropping out.
My feelings had evolved since 2011. This is the year I think of as 'the year I knew I understood absolutely nothing'.
I finished my second year of uni with a Third-Class. I hadn't failed, but I was definitely struggling to stay afloat. I had stretched the truth slightly during this year and applied for some placements under the guise that I was 'predicted to get a 2:1'... This wasn't a lie, but it probably wasn't going to happen. One of the places that I applied to was a completely different company than I thought it was. Remember the company that made webcams and microphones - Logitech? I thought I applied for that company. September rolled around and I headed down to Reading in Berkshire to start my placement year at Logica.
Despite this being not being the company I thought I was applying for (I had realised by then... I was bad at databases and algorithms, I wasn't actually dense) I was so excited to get a break from studying.
The company was a very large consultancy and once you get a job there, you need to find a job there and I spent my first few months on the 'bench' unable to secure a role on a project through their internal job seekers tool. This was largely down to the company being acquired by the even bigger fish 'CGI' a week after I started and there was a hold on new projects. The graduate community there was absolutely incredible though and I met lots of people (and lived with a few) who I still talk to and meet with to this day. They were a supportive and interesting bunch who shared their hobbies and interests and it was honestly the start to one of the best years of my life.
I managed to get myself on to a un-billable role manually testing software which gave me an interesting perspective, writing user guides and technical documentation. However, I was 5 months into a 12-month placement and I still hadn't done any programming or secured a proper role working for a client. Until... I was given a chance.
I nervously prepared thoroughly for an interview as a Junior Technical Architect and Java Developer and despite stumbling over my words and announcing that I had 'plenty of experience using suppositories' (instead of repositories) 2 minutes into the interview, I got the job! I GOT THE JOB!
I'm reminiscing about this right now and I can't begin to thank the two amazing people who gave me this chance as I think this was the making of my career and re-igniting my love for technology. One of them would be my team lead and mentor who was incredibly patient and gave me lots of opportunities to improve my few relevant skills. This was despite messing up and running the command
rm -rf / in our build system. To the techies out there - I heard and felt the cringe, and for those who don't know what that does, it's basically like willingly setting fire to your house. Anyway, things were getting back on track.
My industrial placement year was continuing to be one of the best years of my life to date. I was getting involved with lots of things in the graduate community at
Logitech Logica (now CGI), building on my now rapidly increasing programming skills and being in the best physical shape I've ever been in. I think I had an Ab!
I received some great news at the end of this year - I was offered a place back when I graduated on the condition that I achieve a 2:1! All I could think though was "How the hell am I going to get a 2:1?".
Feeling like I'd left the best friends that I'd ever meet behind, my parents came to collect me and my stuff and moved me back to Newcastle to start my final year of University. This would be my most challenging year to date as I attempted to pull my Third-Class average up to 2:1. This would require maintaining a steady 73% (First-Class) all of the way through the year known to be the most difficult and intense. How the hell am I going to do that? I couldn't rely on them making an error in their spreadsheet as I theorised about my first-year results.
I mentioned several times that I struggled to grasp new concepts but I was now finally feeling comfortable with Java. However, I was going to have to join the big boys club and quickly learn C. Now I was very nervous. The stabilisers were coming off and I had to cycle along a high-rope. To my surprise though I didn't realise how easy it was to learn other languages once you had one under your belt and I segfaulted and crashed my way through the modules to earn Firsts. I was off to a good start!
The scariest and most anxiety-inducing part was coming up, however - my dissertation. The 15,000-word epic that required programming a research project to support it. It had nothing to do with my anxieties but I chose the subject of depression and anxiety, enhancing the link between practitioners and patients through technology - a topic close and dear to me for many reasons. This involved me creating an app for both patient and therapist to assist with CBT (cognitive behavioural therapy). I later found out that at the time of writing it, nothing like this existed as the technological bridge was still very immature and it earned me an 80% mark. I'm not ashamed to admit that I cried.
I had sort of fallen in love with mobile development as a result of my dissertation and mobile development module and later that year launched my first app to the Android App Store! I won't link it as it's terribly bad but it somehow netted over 5k downloads and is apparently still installed on 24 devices which I find hilarious. I wonder which landfill sites those devices are in?
This, I think - is the year where my life started.
I achieved my 2:1. Just. But I bloody did it. I maintained a steady 73% throughout my final year at university and got enough to get me back into CGI to start working as a graduate analyst programmer for a fairly modest £28k. (I'm not going to talk about salary in this post too much, but it plays an important part a few years later).
I moved back down to Reading, Berkshire and in with some of my friends made during my placement year between 2012-2013 and got to work on my first project! Unlike my placement year, I wasn't going to spend any time on the bench. Hooray! I'd be working on a project for the Ministry of Justice doing what I thought was Java work. This, however, turned out to be a lot of Visual Basic and I won't lie, but I became very disillusioned very quickly. My manager gave me very little support, didn't write down any project requirements, and chose antiquated languages because they liked/knew them over choosing better more modern alternatives. "You're a bit young to be having opinions like that, kid" said my judgemental coworker. I feel vindicated now knowing that I wasn't being a know-it-all. They were terrible decisions. I won't trash-talk the project management too much because it's unprofessional but for those reading - at least write-down project requirements because when you leave, your team will be very lost and in an embarrassing situation. Oh and help your inexperienced team members.
All good things must come to an end, and I moved out of the shared house with some of the best people I knew. This was bittersweet however and after temporarily being homeless, I moved in with my long-term girlfriend that I'd been dating since university. I haven't talked about her too much, as I mentioned earlier this is meant to be more career focussed, but it would be wrong to not talk about a person who was in half of these decade chapters. She was a package deal however and came with the cutest, naughtiest little shit of a dog you'll ever meet. I loved the crazy Ewok-looking crapping machine.
The house we moved into was big. Too big, to be honest. It was a large 3 bedroom between the 2 of us (plus dog) with a massive garden. Also, 23 cats lived next door. Less than ideal when you have a hyperactive dog but it kept it interesting for us.
"You're stagnating." said my new manager.
Without realising it, I'd become what I later realised to be the expert beginner.
"You're good at what you do but you have hit a ceiling and your peers are overtaking you. You should look at moving on to a different project".
This was the first piece of advice I was given in my career that I was thankful for and looking back I should have thanked her every other day I was at CGI. It's hard to leave a position like that behind where you feel so comfortable and respected (especially given it was my first project), but I made the leap and left to work in a different area of the business as a front-end developer. Onwards and upwards!
As I sat down at my new desk with my new team, I realised that I wasn't just a front-end developer, I was the only front-end developer. I would be developing the entire front-end including UI, UX, and real-time data visualisation. Oh my god. I wasn't ready for this, I was terrified. The most I'd done up until this point was made some buttons, basic dynamic functionality, and I had used bootstrap! Here we go...
My first challenge and realisation was just how hard developing was on 'air-gapped' networks. I didn't have access to the internet for security reasons and I was rapidly developing the front-end using open source tools and packages using MeteorJS. Meteor took advantage of
npm and required 1000s of dependencies to be burned to a CD, virus scanned, and moved over to my offline computer before I could use/test them. This also meant that I couldn't copy and paste from stack overflow! Shit.
As this was going on, I bumped into my old manager from my first project and I asked how it was all going.
"Didn't you hear?" He said with a sigh. "It was cancelled." 2 years of my work down the drain preceded by 4 years before I even joined the project. I was devastated. 'It's only code' I tried to rationalise however I couldn't help but feel great loss and a feeling of disillusionment with the industry. I mentioned earlier that my first freelance client canned the project, but that was nothing compared to this. Perhaps this was a harsher lesson that I needed to learn and should be lucky I learned it reasonably early.
For the first time in my career so far I felt like I had a good mentor. I had worked with lots of older and arguably more experienced developers who couldn't give a monkeys about helping anybody, forcing me to crack on when I needed help the most. A true demonstration that age doesn't matter one bit, this guy was younger and way more talented than I was. He also helped foster a good engineering community with a good sharing culture. This was something I'd take to future jobs and clients. Chris, if you're reading this, thanks a million.
The front-end one-man-band project was over, and I moved back into the world of back-end development creating and owning microservices for big data. This was a lot of fun and involved great engineering challenges such as converting huge relational databases to NoSQL while maintaining a Hadoop cluster to receive streamed and transformed events. I was largely doing this alone, owning several parts of this platform but for the first time, I felt like I was a part of a community.
2017 also brought great sadness as I broke up with my long term girlfriend. This isn't the place to talk about it, but to say it was an emotional and turbulent time would be an understatement. Focussing on anything career-wise for a while after that was a challenge. I moved out of the countryside and in with some friends in London which was just the distraction that I needed at the time. The rest of the year was a bit blurry.
This was the year things went turbo.
The thing about graduate schemes is that it's very hard to escape them without running away and starting a new life. You advance and move on after 2 years (or however long your company sets), but often you never really stop being thought of as a grad, and this includes salary. After almost 3.5 years of working at CGI and getting measly 1% pay bumps, I was sick. I was sick of doing more work with more responsibilities than some senior colleagues on 3x my salary so I resigned.
Through Stackoverflow I was contacted by a small digital agency startup called AND Digital, and after initially ignoring them I met up with an old CGI colleague and friend who had coincidentally just gotten a job with them! After talking me into setting up an interview, two weeks later and a 63% pay rise and the rest is history; hello AND Digital! It was a good lesson in knowing your worth and when a company is taking advantage of you. Again, a note to all you graduates out there on an unfair pay:responsibility ratio and scale.
After a slow start at AND Digital due to a lack of client work, I led my first ever team. A true baptism by fire as the client was remote, I never met them in person, they tried to pause the project halfway through and denied us resources and platform knowledge every step of the way but we delivered only 2 days overdue. I was so incredibly happy! I had learned a lot about handling a team, client expectations, and also my limits when it comes to stress.
After leading another difficult project using technology and ideologies from the 90s, the year ended with me being promoted to a senior developer 🎉. Truly a difficult year but worth the effort.
The year of React and falling in love with front-end engineering.
I'd always battled with my back-end developer friends about front-end engineering, fighting for its place on the stage. It's a very underestimated field and requires a different set of skills, but equally, it deserves recognition. Saying that, up until this point, I hadn't enjoyed it.
My previous experience required working in an air-gapped network like I described and to reiterate, for anybody who has worked with package management could imagine the nightmare. You want a new package? Better put it on a disk, virus scan it, and move it over into the correct place. Oh, you missed a dependency package? Go back and repeat the process. It's very tiring and time-consuming. Not only that, but I also didn't have anybody senior to look up to so it was very much a 1 man team. It's difficult to get better at what you don't know.
So here we are. It has been a hell of a decade and bumpy ride from wanting to switch courses at University, to graduating with a second class Honours degree in computer science, to being promoted to Senior Software Engineer.
I originally wasn't going to write one of these posts but 2020 is off to a weird start and the quarantine has given me a lot of time to reflect on things and where I am today. I'm currently sitting in my flat looking out onto the Shard at London Bridge which is shining blue in honour of the tremendous work our NHS staff are doing right now in the midst of this chaos.
What will the next decade bring?