My Path from School to University to Work

Note: the below article is purely my point of view, and does not represent the perspectives of my employer(s), university, school, or any persons other than myself. This is purely meant to describe my journey, and isn't a set path to follow! It'll depend entirely on you as a person, and what path you want to take.

In May, I was invited back to my secondary school to talk to Lower Sixth (Year 12) students about my journey through university to the job I am currently in.

In the run up to the afternoon of speed networking, I had been thinking back about my journey over the last few years to the current day.

After some of the questions I received at the speed networking session with the current boys, I decided that in the spirit of Blogumentation I would write these answers up for posterity, as well as to be able to add any new questions that I may receive in the future.

Timeline

I feel a small timeline of the run up to "now" would be of use especially around giving some further context on my experiences.

2005 Joined secondary school after the 11+ exams

2006 Pre-GCSEs

2008 Start GCSEs

2010 - Start A Levels

2011 - Start A2 Levels

2012 - Complete my A Levels

2012-2013 - First year at University

2013-2014 - Second year at University + placement year applications

2014-2015 - Industrial Placement as Application Engineer at Intel, Reading

2015-2016 - Final year at uni

2016-2017 - Software Development Engineer 1 at Capital One UK

2018-2018 - Software Development Engineer 2 at Capital One UK

Common Questions

"What project did you do for your A2 final project?"

For my A2 project, I built a student organiser web application, which had the ability to display a colour-coded timetable as well as being able to enter homework. More details can be found on the Libelius Student Organiser project page.

The project was primarily about scratching an itch with having no digital method to track my timetable and homework, while also being a great way to work on a project where I knew the problem domain well.

I went into the project knowing I wouldn't be able to get much support from my teachers, as I wasn't going the Delphi/Pascal route, but was instead working with PHP and MySQL, which weren't my teachers' expertise. However, I was able to get some help with fundamentals such as some truly awful SQL queries and how I structured my code.

I learnt a huge amount through the project, and enjoyed my first foray into building a project all by myself that I had my friends using daily towards the end of the project.

If I was able to redo the project with only one piece of knowledge I've learnt since, it would be version control. Git was one of the most important things I learned outside of uni, and has helped me with so many headaches - this project could've been one of them!

"How many languages did you learn at uni?"

During my course I was exposed to a number of languages, with various levels of depth of knowledge. However, the "core" language would be Java, used by the compulsory modules that required programming experience.

Note that I wouldn't say I "know" these languages or that I've really "learned them", but more that I've had experience with them. I would say after my degree I was somewhat competent with Java, and that after a refresher I'd be able to write some Haskell, but that I'm not exactly a top developer in all these languages.

For a breakdown of all the languages and associated modules:

First Year

Second Year

Third Year

"What languages do you use at work?"

In terms of the languages that I regularly use:

But in terms of the tech stack our Software Engineering department as a whole use:

"What would you do if you hadn't done Computer Science"

I was fortunate to know since year 8 that I wanted to go into technology, so aside from that I didn't really have any other draws. As mentioned, I did Latin and English Literature at A Level because I enjoyed the subjects and wanted to explore them further, not because I saw them as an end goal for my career.

So honestly I couldn't say what I would be doing if it weren't for Computer Science.

"Do you need A Level Computing to study Computer Science/Software Engineering/…?"

No! I would say about 25-50% of my university year came with no previous experience of computing.

Although it made the first year easier, as I was a little ahead, and therefore needed to work a little less hard (at times), it didn't necessarily mean I was better. A number of students who joined without computing backgrounds came out with higher grades in the first year, when they were still learning, and came out of university with some of the highest grades.

"Do you need a degree to become a Computer Scientist/Software Engineer/…?"

Also no! At least a quarter of my immediate colleagues, let alone the wider department, haven't had a formal education in Computer Science / Software Engineering. Many exceed their colleagues who have had formal educations, partly due to the fact that they've had to work harder to get to the same level.

"Information/Cyber Security is pretty hot right now, should I be doing that?"

I had originally looked at Cybersecurity, as it was how I first got properly interested in tech (see Pre-GCSEs).

One of my teachers advised against specialising too early as it may make it harder to move specialities later. Instead, he recommended getting a general Computer Science degree and take Computer Security module(s) and potentially learn more in my spare time.

This was admittedly before the security field was as "hot" as it is now, but I feel it may still hold. Having a general Computer Science degree is a great to have as background and it doesn't mean that you can't take security modules, nor specialise later. Having a generalised background means it's easier to move disciplines in the future more easily, which although unlikely as Security will always be important, it's always possible.

As I mentioned, it turns out that this was exactly the right choice for me, as I found that security wasn't quite the path I wanted to take.

"How much of your day do you spend coding?"

As a controversial counter question, what do you define as "coding"? If you mean writing Java application code, then very little. If you include automation/scripting, then a tonne.

I'm in a somewhat irregular position, due to our team working on identity services using a third party solution. This means that instead of writing application code to extend the existing functionality, we're generally writing configuration code to tweak the server to perform the functionality we require. This isn't just a group of shell scripts; we're building it using the Configuration Management tool Chef, which allows us to write tests for our infrastructure pieces, which is a huge bonus for the team. In terms of the Java code, I'd say it takes up maybe 20% of my time since joining, whereas if you include Chef, it's much closer to 60%.

But even for other teams, I would say it's probably between 40-60% of the time they're actually writing code. There are a number of agile ceremonies such as standup, refinement, planning, retrospective, and review, which eat into the two week sprints. Aside from that, there are meetings both inside and outside the team, and reviews of the security and architecture of the system(s) you're building.

More recently I've been involved in a lot of cross-team sessions as we've been working towards our Open Banking compliance, which has involved a fair amount of whiteboarding and architecture integration planning. I've also been looking at resolving some technical debt as part of our internal architecture choices, and looking to streamline our processes, which is also not coding! I've been enjoying these opportunities as it's given me some wider-looking impacts, as well as helping me to get some really important feedback loops from senior engineers on my designs.

There are definitely a lot of jobs out there that are just concerned with being a (for want of a better term) "code monkey" where you can just write code. Surprisingly, I've found that I actually enjoy a role where I have the opportunity to look at wider impacts and how to standardise approaches, while still being able to deliver functional work. I say this which is a surprise, as I didn't think I'd be as much of a fan of working with other people as I do!

"Why Nottingham?"

I've previously done a whole talk on this subject, but to summarise:

However, it was very close between Nottingham and Kent - Kent had a very strong focus on their placement years, which was part of all students' courses. There was a precedence for working at companies across the world and they had great ties with industry.

Being able to get a year working on real projects really appealed to me, but unfortunately Nottingham didn't officially provide it as part of the course. This made it difficult to choose Nottingham over Kent, as at the time I felt I needed the support and pre-existing network to do it. If Nottingham and Kent had been closer in their grade requirements, I feel it would've been a tougher choice, but I'm glad I did choose Nottingham.

I found it was much more rewarding to do all the work to get my placement year sorted off my own back and network, rather than relying on the University's contacts, even if it did sink into the time I had available in my second year. The university were more than happy for me to do one, it just anything that would count to my degree.

"How much of your degree do you use day-to-day?"

A lot of the base programming knowledge I developed as part of my degree are used whenever I'm programming, as well as:

That being said, I would still say that a lot of the practical techniques for development have come from my side projects or time at hackathons, and there's also a fair amount of my degree that I've not been given the opportunity to use.

"Did your degree prepare you for day one work?"

No:

Yes:

"Where do you see yourself in a few years?"

When joining Capital One, I had already started thinking about what my next steps would be. But after actually getting stuck in after a month or so of being there, I realised that no, I had so much to learn from some really amazing engineers, and that it was silly me thinking of moving on before I've really grown as an engineer and an individual.

I truly believe Capital One are doing great work to look after their customers and help set them up for success, and as such, I want to be able to do more to that end.

I can definitely still see myself at Capital One, but regardless, I see myself starting to come into my own as an engineer, picking up some more meaty components and systems, as well as doing all I can to help spread my knowledge and set others up for success. I'm excited to know that I'll still have so much to learn.

One of the pieces of feedback I received from my manager at my end of year appraisal, just before I was promoted, was that he sees in me the potential to reach/exceed the same level as my mentor. This was both a huge pat on the back, and quite a scary thought. Looking at Steve, there's such a huge depth of knowledge and raw talent that I'm not sure I could ever reach, but I would love to say I can. I'd be really happy to say that in the next few years I'm on my way to becoming the "next Steve".

Note: Since originally writing the above, I have announced I will be moving into Quality Engineering. This will be a great opportunity to see the other side of developing the Identity Service, as well as looking to move into one of the more business-facing parts of the company in the future. I'm looking at bringing over some of the practices I've helped share in Software Engineering such as shared library and pattern reusage, to help standardise some common pieces of Quality Engineering.

Points from me

There have been a few other items that I hadn't been asked specifically about, but that were points I mentioned in passing or wanted to share more info about.

There's more to Tech than just "regular software engineer"

Note: I am using the term "regular software engineering" here to quote a term that I've heard used before. I do not agree with it.

Aside from just "regular software engineering", which is already a loaded term, there are a number of other roles you can fulfill within tech.

Within "regular software engineering":

Outside of "regular software engineering", I can think of the following roles:

Outside of pure technical roles, you also have people management or project management which is at a great intersection of business needs and developer processes.

That doesn't mean this list isn't exhaustive, there are no doubt tonnes of other roles which may be of interest.

If any of these roles sound of interest, Capital One are hiring! And if you're interested in Grad/Intern roles let me know and I can keep you posted for when they're open.

Employers shouldn't necessarily just look at grades (in an ideal world) / You should aim for more than "just a degree"

Note: This section is my personal view, and pictures an ideal world in which everything is possible. It doesn't necessarily frame the state of the world right now.

As mentioned, I've found a large amount of my knowledge and experience from my extra-curricular activities such as hackathons or side projects. Tech is one of the fields which can't teach you everything until you've actually put it in practice, making mistakes as you go. Going to hackathons or playing around with small projects in my spare time was a great way to do this, and I really am not sure what sort of position I would be in if I hadn't been able to do this.

With this in mind, I've tried to ensure that when I've been involved in the hiring process, I make sure that it's not just a case of looking at what a candidate has done at university, but also outside. This helps determine if they want to solve some of their own problems, or problems they are interested by, or whether just completing their uni work is enough. That being said, see below for some cases where this doesn't hold.

I've also learned to not discriminate (for want of a better word) based on which university candidates have come from. I know a number of students at Nottingham Trent University (which is seen as a "lower university" by a number of people) who would be my first pick for a role, as well as a number of students who were at a "top university" yet would not fit in with either the business culture or some of the technical aspects of the role.

Even between students on the same Computer Science course as I, the modules taken make all the difference. I know a number of students who also graduated with a First Class degree from the University of Nottingham, but came out with a very different level of experience and knowledge. For instance, they would take "easy" modules just for some easy credits and work to pass coursework, instead of working to learn.

I've personally found that I've leaned more practical skills outside my degree than in - working on side projects and at hackathons has taught me a lot about real-life project-based engineering. It's given me the chance to work with various APIs, build tech using various web frameworks, and play around with both frontend and backend code, rather than the pretend projects that were given to us at university.

Interviews are always hard, and you're always nervous, but you can get a little bit of a read as to how the person would fit within the corporate culture - do they only want to work, do they want to build lasting relationships, can they appreciate being told they're wrong? These are things you need to unearth in the interview that show you who the person is underneath their CV.

However, this often is not possible; you may need to work a job while you're at university, as you're not barely able to make your accommodation costs, or you may not have the time to go to events because you're finding you're spending more time learning than everyone else. So don't go beating yourself up if you aren't fortunate enough to have the free time, as employers should also be mindful of circumstances.

Privilege

I would like to reiterate that I've had incredible privilege while I've been at university:

Any more questions?

If there's anything you want answered, reach out to me using my contact details in the page footer.

Looking Forward

I find it incredibly rewarding to be able to help others find fulfillment, and I'd love to help others find the same level of job and career satisfaction that I have. I'd love to be able to share my experiences and any help I can.

I would, however, like to make preference to less privileged students who want to get into tech, but haven't had the same opportunities or support I've had.

Something close to me recently is also those who are looking to switch careers. I've had a number of friends and community members who have reached out about wanting to transition into tech, and I've been trying to share advice and experiences that may help them with their journey.

*****

Written by Jamie Tanna on 05 August 2018.

Content for this article is shared under the terms of the Creative Commons Attribution Non Commercial Share Alike 4.0 International, and code is shared under Apache License 2.0.

Tags

Categories