What Comes After Uni?
I’ve only got two things to do tonight. Write this, and get my bag ready for the office tomorrow. It’s unusual that I head into the office, but a mate’s invited me to give a talk at our internal golang meetup.
It’s nice to look back and realise that I’ve grown close to the dozen engineers that will be there, and have become someone who produces work they find interesting and useful. This is all due to an internship I applied for, and the opportunity I was given to grow in the role. A year ago I hadn’t so much as witnessed a line of go code, let alone developed my dislike for the mascot.
I decided to write this to share some insights that I hope help make the transition from studying software engineering, to beginning a career in tech.
To be candid, I have only worked on one team so I have a bias to the culture on this team and within the company more broadly. However I have been involved in the hiring process for graduate engineers, and was offered my role whilst I was working in an internship program (this kind of offer is uncommon for the company I work for).
Knowing what kind of company, or team you want to work in helps. Make a list of the companies that catch your eye and keep a tab on their careers page, or even reach out. Employers want to hire people that are stoked to be working there, and being able to demonstrate genuine interest can help your application. I didn’t know the kind of work I do now existed before I applied for my internship, but I’d been contributing to an open source project that had broadly similar ideals to the team’s goals. When the team learned of the work I’d been doing, my application became a lot stronger. The key here wasn’t so much having an interest in this area, but in the way I was able to demonstrate it. Making this as obvious as possible is the best chance you’ll have to make them confident you want to work with them.
Internships and graduate positions are junior roles, your competency in the company’s tech stack isn’t what is going to make or break an offer. If they wanted someone who was proficient in the work they do, they would have advertised for a more senior title. What a company wants when they’re hiring a junior is someone who is willing and able to grow.
If you manage to get an internship you will finally get the chance to see some applied engineering. This can be very exciting and you will almost certainly see examples of engineering more modern or mature than those you were shown in your studies, however it isn’t the real gem of the internship. The true value is in getting to work alongside people who’ve each had their own career journey and carry the professional experience of having worked on many other teams.
I’m of the belief that most software engineering skills these days can be self taught. It’s not easy, but it is possible. But there are skills that can’t, such as developing a sense of when to reach out for help, or how to make sure anyone you work with can understand your pull request. These are situations that require other people to tell you how they perceive your actions. In a junior role you have a group of people on hand who are expected and often willing to give you this feedback. You may have to ask for it, and you may disagree with it. That’s all part of the process.
Taking on a junior engineer also provides a mentee for a company’s senior engineers. This gives these senior engineers a chance to demonstrate some of the skills required in staff engineer or team lead positions. Being able to show that you’re capable of learning as a mentee is a positive signal for the hiring team. This mentorship will be different to the learning you were doing before, and it may be a new experience for your mentor as well.
Most importantly, make sure you’re enjoying it. Work should be fun, and getting the chance to build relationships with the people you work with is a blast.
P.S. Someone I owe an enormous amount of thanks to for their wisdom and mateship recommended that I read ‘Radical Candor’, and I’m passing that on. Thanks Mark!