What's it like to be a Software Engineer?
In our recent blog post we discussed what it takes to get into a career as a Software Engineer.
To give you more of a flavour of what a day in the life of a developer is like, we sat down with Senior Frontend Developer Josh Farrant.
Here's what he had to say...
What path did you take to become a Software Engineer?
I didn’t take the “typical” path of studying Computer Science at university (in my experience that’s not really the typical path as most of the engineers I know didn’t study CS), although I did start writing code while at uni.
I was studying Astrophysics of all things when, halfway through my second year, I started realising that a career in astrophysics probably wasn’t going to be for me.
Turns out astrophysics is kind of hard and sometimes a bit dull - who knew?!
I started learning some basic HTML, CSS, and JS after a relative asked me to make a website for their band as I was “techy”. I managed to cobble something together and realised I really enjoyed it. Don’t get me wrong the site looked awful, and I knew it looked awful, but that drove me to try again and try to make something better.
After finishing university I moved to Birmingham and started researching local start-ups while working as a Knowhow Technician at PC World. I sent a few applications out and, surprisingly quickly, was hired as a Junior Support Engineer and Web Developer at a company called Sipcentric in the centre of Birmingham. It was a tiny company where I joined as employee number three and took over phone and email support for customers of Sipcentric’s VoIP system.
After leaving Sipcentric I joined Purplebricks as a Senior Frontend Engineer. In the two years I was there I learnt a huge amount and progressed both my technical and soft skills massively. I had a 9-month stint where I tried Engineering Management before deciding that Engineering Management at Purplebricks wasn’t really for me and I stepped back into a more technical role where half of my time was spent coding, and the other half was spent mentoring, running workshops, and working on larger cross-cutting pieces of work.
At the time of writing, I’ve just left my role at Purplebricks and am due to join allplants as their Frontend Lead in a week’s time - I can’t wait!
Do you need a specific qualification for your role, or can you teach yourself?
I have zero qualifications for my role, you can absolutely teach yourself. The software development community is great at sharing knowledge, and there are an unbelievable amount of resources out there to help you learn.
Is there anything people can do outside their current day jobs to work towards a role as a Software Engineer (or in tech in general)?
Write code, and make sure people know you’re writing code. Open source it, tweet about it, blog about it, just make sure that what you’re working on is visible, even if no one seems to be paying attention. When you eventually apply for a role then that’s a huge amount of evidence to the interviewer that you actually know what you’re saying you know. You won’t know it all (you’ll never know it all, sorry!) but if you’re constantly sharing your best work then that not only shows that you’re technically capable, but the progression of that work also demonstrates that you’re capable and motivated enough to learn and keep improving, which is one of the main things I would look for in a junior engineer in an interview.
What’s one piece of advice you’d give to someone trying to get into software engineering?
Learn in public and share what you’re working on, even if it feels like you don’t know anything at all at the moment.
I wish that I’d started blogging sooner and sharing both my existing knowledge, as well as what I’m learning. And I’m not just talking about writing posts like “The 10 best VSCode extensions”!
Write about what you’ve just learnt, what you’re learning now, and what you’d like to learn. As you progress you’ll start to form opinions; write about those too!
Just writing things down will force you to organise and solidify your thoughts and understanding such that you’ll inevitably discover that you didn’t actually understand a topic as well as you thought, or your opinions might change as you dive deeper into it.
Even if no one’s reading, write and share what you’re learning.
What are the biggest challenges you face in your role?
My answer to this would probably change quite frequently, but at the moment the biggest challenge is balancing code quality with the need to ship features. It’s easy to get something out the door quickly and satisfy stakeholders in the short term by hacking something together with low-quality code. It’s just as easy to spend an inordinate amount of time writing “perfect” code and never actually shipping anything.
Finding the balance between these two extremes can sometimes be difficult. In my experience, more often than not teams lean more towards the low-quality end of that spectrum as that gets something out the door faster and has the immediate effect of satisfying stakeholders. Trying to get buy-in to go slower, even if it will make you go faster in the long-term, is challenging.
What are the best parts about your role?
I love that I get to use my creative and problem-solving skills together to create tangible (ok, *virtually* tangible) products that people actually use. I love creating components that work well with one another and can be composed into larger, more complex pieces of UI. Lastly, I love that it’s (contrary to popular belief!) quite a social industry where the vast majority of people just want to see others succeed. There are a lot of people out there willing to devote their own time and resources to helping others through things like direct mentoring and coaching, writing blog posts, creating courses, and building open-source software.
Anything else people should know about the role/industry?
You get out what you put into a software engineering role. The more time you spend learning and, most importantly, practising what you’ve learnt the more effective you’ll be, the better equipped you’ll feel to solve the problems that will be thrown at you, and the more you’ll enjoy it!
Thanks Josh! Want to learn more? Get in touch, we'd love to hear from you: firstname.lastname@example.org.