hark logo

The Top 10 Things I Learnt After Completing a Software Development Apprenticeship

Completing any apprenticeship involves a great deal of learning, but the world of software engineering particularly can be confusing, stressful and, at times, unforgiving. Learning from failures and mistakes is critical for a rewarding and successful career further down the line. In this article I'll be sharing 10 crucial lessons I learnt on my software engineering journey.
Software Engineering Blog

The Past ⏪

In 2018 I was hired as an IT Apprentice at a major UK Supermarket, with a degree in Archaeology and 2 years of retail experience under my belt, it was a big career change for me. Though the job title was vague, I was assigned to the mobile app development team, and expected to complete a level 3 and 4 apprenticeship in Software Development.

During this time, I not only worked towards my qualifications, but learnt how to develop React / React Native applications from scratch, gained 3 promotions, mentored some junior engineers, discussed my journey into tech as a Stem Ambassador, and got involved in various initiatives within the company and outside.

After 4 years with the supermarket, I felt I needed to move on and experience life with another company: to help me grow both as a person and as a developer.

I moved to a tech-lead company in the automation retail industry for almost a year. This company focused on working collaboratively, with the majority of work being conducted in pairs or in teams. Unfortunately, the atmosphere wasn’t right for me, and every initiative I worked on got scrapped after a few weeks, meaning nothing that I contributed made its way to users. This, among other aspects of working for the company, made for a stressful environment to work in, which began to have a significant impact on my mental and physical health.

Because of this, in Spring/Summer 2023, I looked for new opportunities and found myself at Hark.

The Present 🎁

My time at Hark has been challenging yet exciting, it took some time to rid myself of the built up stress from my previous company, combined with the stress of integrating into a new team of people, learning the product knowledge required for performing within my new team, and learning the new technologies required for my job role.

But within my time here, I have delivered new features, learnt new ways of approaching problems, learnt a lot about our Platform, and had the opportunity to both work with others, and work independently.

And for the first time in my career, I have my own desk.

The Take-Aways 🥡

During my career I have learnt a lot, especially given that at the beginning, I didn’t know a thing about software development. But some things I have learnt since starting my apprenticeship are worth keeping in mind:

10. Ask for Help

This is probably an obvious one, one that people always say you should do, yet might not seem too happy about it when you do.

At the start of my apprenticeship, I was reluctant to ask for help when I needed it, and this often led to me being stuck for too long on things that now seem simple to me. I felt like the areas in which I was getting stuck should have been easy and didn’t want to admit that I was struggling. In addition, the reception to asking for help at the time was not supportive, and though I now know that was a failing of the team I was working in, it only strengthened my resistance to asking for the help I needed.

Over time, it has become easier to reach out to team members when something just isn’t working. Part of the benefit to working in a diverse team of people, is that they all bring a wealth of experience, and knowledge across a broad spectrum of topics, and quite often, they can provide a fresh insight to your problem, or even know the solution.

Quite often you might find they try the same solutions to your problem that you have, or you might not remember everything you tried when you’ve been working on one issue for a long time. In these cases, where something has been a struggle, I find it’s so helpful to make a list of the things you have tried, and the results. This can help you figure out your problem, communicate the situation to the person/people helping you, and provide proof that you’ve attempted to fix the problem yourself before seeking advice.

9. Ask Questions

Following on from asking for help, asking questions is so important during an apprenticeship and afterwards. If there is anything that you can do to improve your domain/technical/product knowledge in your role, it is worth doing, and asking questions about how things work, and what things are doing, is a big part of digging deeper into the subject and learning for yourself.

As a developer, a great way of doing this is to read the code written by others in the company, and ask questions about what it is doing, or how it is working, if I don’t understand it myself.

Not only can this help me write better code if I need to implement something similar, but it also improves my understanding of other areas of the code base. With this knowledge of other parts of the system, I have been able to demonstrate to technical and non-technical people what the full feature does, from the elements on the screen that the user clicks on, to the end product created by the back-end services.

8. Try to Keep Up to Date

One of the downsides about working in technology is that it goes out of date very quickly. Since the very start of my apprenticeship, I’ve compared it to starting a tv show that’s on its 20th season and shows no side of stopping. Unfortunately, over time that hasn’t changed, there’s always new advancements in every area of technology and no chance that I can keep up to date with all of it.

One way I found great to keep up to date with the latest technology is to narrow my intake to things that interest me: full-stack development, front-end standards, new Javascript and React features and libraries, and video game development.

The main ways I keep up with these is to read articles and watch videos on them. I have subscribed to several mailing lists that email me updates on changes in the React world or lists of trending articles, for example. Chrome even offers extensions that provide articles to read when you open a new tab.

Other more social ways include following companies and figures on social media, though I advise making a work account if you don’t want to see it all the time. Or through talking to your co-workers, and other technical people in your area.

All of these are small, simple ways of getting information on your topics of interest and can build your understanding of what you work with, and areas you can explore when you have time. Quite often you can build small projects using the things you have learnt and apply the new concepts.

7. Join Stem Events

One thought that I had as I started my apprenticeship was “Wow, why haven’t I been doing this the whole time”. My journey into development was unconventional, and that is not unusual for female/femme people, who in many cases, weren’t encouraged to pursue technological skills and opportunities.

As a child I was very interested in computers and enjoyed using them, but was never encouraged to learn more about coding, or even told it was a possibility. The majority of my computer lessons at school had a focus on the Microsoft suite, and teachers gave more attention and challenges to the male students. Whereas at home, art and reading was more encouraged, and using the computer was discouraged (not that that stopped me).

This realisation encouraged me to join the Stem Ambassador program, where I was able to interact with local teachers and students to give talks about my journey into software development and how I have found it.

This was all with the goal of helping more girls consider a career in tech and realise that you don’t need to be a genius to become a software developer, that this is a career choice that is in reach, no matter who you are.

Thanks to this, I’ve given talks to large and small groups of people, and have even taken part in a careers fair, where I was able to give young kids interested in software development links and advice about where they can learn more. This has both felt rewarding and increased my confidence in speaking in front of groups of people.

6. Try Extreme Programming (XP)

Whilst this may sound like a dangerous sport, it’s not quite as adrenaline-pumping. Extreme programming includes activities such as pairing and mobbing. Pairing is where you work to write code in a team of two, and mobbing is where you write code in a larger group.

There are times where both can be beneficial, in my experience mobbing is especially helpful when debugging and fixing time zone related issues, as it’s an activity that can cause a lot of confusion, and it helps to have multiple heads tackling it.

Pair programming can be applied to many different situations, and some companies even use it day to day, as opposed to working independently. Pair programming has many different benefits, including shared knowledge and ownership over the code, improving teamwork, and teaching new skills to more junior/ newer team members. In addition, the code quality can be better with two eyes looking over it, and time to complete tasks is often shorter when the team is used to working closely together.

Whilst you might not use pairing or mobbing often, I feel they’re activities that you should try out, both as a driver, and a navigator. It can be fun to switch up how you approach your work, and if you primarily work remotely, it can provide some additional socialisation into your workday.

5. Go to Local (Or Not So Local) Tech Events

One of the things I was encouraged to do in my apprenticeship was to attend local talks and networking events, these can be incredibly beneficial for your career.

Technical conferences and events in the area can help expand your knowledge, and honestly just be a fun time out and about with other professionals. Most have networking and social activities involved and can give you things to talk about with your colleagues on returning to work.

In addition, networking with people locally can really help you when you’re looking for future opportunities. If it wasn’t for networking with local recruiters and other professionals, I wouldn’t be in my current position at Hark. I’ve been invited to many fun events thanks to networking and have met a lot of talented people in my local area.

One caveat to this, however, is that some events might not be what they are advertised as, and in cases like that, where you go to learn something new, and instead find yourself stuck in a room listening to a recruitment presentation, it is perfectly valid to leave. Do not feel as though you need to stay for the entire event if you’re not feeling it.

4. Different Working Environments Is Great Experience

Towards the end of my apprenticeship, I started to feel like I needed a change, I had been in the same company for about 4 years and hadn’t experienced anything else as an engineer. I felt that moving to a different company would expose me to new people, new ways of working, and a new company culture.

And I was absolutely right!

When I felt ready to move on, I did, and the place I worked after was completely different to the environment I had been working in. Whilst my experience there wasn’t exactly positive, I got to work in completely new ways, I had to learn an entire new domain, and got to work with some new and talented people that I wouldn’t have met otherwise.

The new environment I joined had more robust frameworks for progression, which gave me goals to work towards, and helped me increase my value through a promotion.

Changing jobs can be a very stressful and intimidating experience, but ultimately it can be incredibly rewarding, offer greater opportunities, and a boost to your career. And the people who you work with, can be long lasting connections, which can open doors in other places.

3. If Your Company Offers “Learning Time”: Use It!

Technology and especially software development is an area that is constantly changing, and a key part to a career in this area is keeping up to date, learning new things, and bringing innovative new ideas to your team.

Quite often, it can be difficult to find the time to learn new things, or try out new concepts, particularly if you prefer to keep your evenings and weekends free for other activities.

Along this vein, quite often companies will offer time during work hours to spend learning and improving and is often given to encourage employees to innovate and bring new ideas to the business, much in the same way a company might hold a “hackathon” event. From my experience, this time is often given on a Friday afternoon, but some companies may offer a different time, or allow you to use it flexibly during the week.

In addition, if you are currently doing an apprenticeship, this should be in addition to the 25% of your week that you currently get to complete apprenticeship work.

It can be all too tempting to use this time to do your usual work, especially when you have looming deadlines or don’t want to switch contexts (i.e. swap between different pieces of work). And many of your colleagues may not use this time to their own benefit, making you feel pressured to continue your usual work during this time.  However, this time is incredibly useful to your own development, and can be used to learn whatever you want, allowing you to either strengthen your current skill set, or learn technologies that you otherwise wouldn’t have time to do.

For example, in the past I have used this time to complete leet code challenges, typescript challenges, build my own website, and even build an API using Amazon Web Services CDK and infrastructure as code. These opportunities allowed me to improve the skills I have required within my role at work and helped me find the direction I want to move in within my career, and future roles. And I highly recommend taking advantage of these opportunities.

Companies may also offer free access to learning platforms such as Udemy, which have many useful courses in many different areas of technology, and soft skills such as time management and mentoring. These resources may be revoked if they aren’t used and can benefit your personal development greatly.

2. Take Ownership of Your Work, Good or Bad

Taking ownership of your work can encompass being actively involved in the planning, asking questions to clarify points you don’t understand or may be ambiguous, executing the work to a high standard, writing comprehensive tests, testing the work manually, and following up with any feedback.

Part of your work will likely be to deliver new products and new features to your customers, whether they’re external to your company, or internal. Whilst delivering high quality work reflects well on your company, and makes your customers happy, it also reflects well upon yourself.

In addition, through being actively involved in your work throughout its lifecycle, you will have a greater understanding of how it works and can use your knowledge if that area of functionality is changed or used in the future, giving you a larger voice in the planning and development of new features.

On the flip side, you might view the bugs you introduce, or the mistakes you make as reflecting poorly upon you. However, you can use these as learning experiences (This sounds cliche, but it’s true!), by owning up to your mistakes, investigating the issues, and fixing them yourself, you both learn what you did wrong, and how to resolve it, and prove that you’re a reliable member of the team.

It is likely you will make plenty of mistakes (believe me, I do), but given time, and experience, the number and the size of the mistakes you make will lessen, and having the opportunity to fix those mistakes is so beneficial. And frankly, it’s a lot less embarrassing than allowing somebody else to fix it for you.

1. Celebrate Wins

Finally, I feel that celebrating the things you do well to be one of the best things you can do for yourself, especially for your mental health.

It’s so easy to complete a piece of work and then move on to the next, but a good quality feature, built by you and your team? That is absolutely something to shout about, and to feel good about.

Make sure to announce the completion of work to your business, through regular communications, and demonstrations. Give shout outs to the people on your team that helped achieve your goals, and even reward yourself for the smaller successes.

Nothing feels as good as fixing that difficult bug, or managing to write that complex unit test that just wouldn’t pass.

And you deserve to feel the happiness from those successes, because each win is a product of the hard work you have been putting into your development.

Related Content

Welcome to The Age of The Smart Store

No cash, no cards – no tills? If you took this news to the middle ages, they’d have burned you at the stake. But here in the outrageous present tense, all is normal (well, kind of).

Read More

Would you like to find out more about the Hark Platform?

Subscribe to Our Newsletter

Stay up to date with the latest industry news, platform developments and more.