The value of a software development apprenticeship

The value of a software development apprenticeship

Our Apprentice Software Developer Wilson speaks about his journey into the world of software development and the benefits of his apprenticeship at Purple Crane.

It isn’t easy to take your first step in any profession, and when you don’t have any relevant qualifications it can seem impossible. When I left school, I didn’t possess any computing related qualifications. My schools didn’t have any computer science-related GCSEs or A-Levels and as a result of that and other personal influences, I went to university to study psychology with no desire to work in the field.

Journey to becoming a software developer

It wasn’t until 2017 that I decided seriously that I wanted to become a software developer and to learn about programming and computer science. My initial exposures to the concept of programming came from video game modification. It was actually a very simple process involving changing values in a generic data file to change the colours of a character or the sound effects.

I then went through some open source online courses, such as Harvard’s CS50 Introduction to Computer Science and freeCodeCamp. While they teach you the fundamentals of programming and computer science, it is without practical application, which made it hard for me personally to get a good grasp on them.

I also participated a number of game jams (hackathons for making games) such as Global Game Jam® 2017 and GameMaker’s game jam. These hackathons were a great way to find short burst of motivation, to experiment on new tools, and learn to work with deadlines like in a professional environment.

Once I decided I wanted to be a software developer, I was determined to self-study until I felt I was competent enough to apply for a junior software developer role. After a few months it dawned on me how much there was to learn, and without any sense of what sub-fields of software engineering I wanted to get into, I was making slow and uneven progress. I was trying to cover as many areas as possible, learning multiple programming languages at the same time without focusing on the principle and logics of programming, all while trying to build a solid understanding of the theory of computer science. It was terrifying and discouraging at the same time.

I did some research and came across the possibility of doing an apprenticeship. A friend encouraged me and I decided to go for it.

Learning on the job

I started my apprenticeship at Purple Crane in January 2018. Working here as an apprentice software developer is giving me real-world work experience while I receive traditional education from QA, a company which specialises in IT training. no matter how much you prepare and study it cannot compare to the experience you get from working in a company like Purple Crane. Although previously, I was creating software for myself, I now know that enterprise software is a whole different beast. You aren’t only writing code for yourself, but also for others in the company, so there are coding standards that you need to follow to write scalable, maintainable code.

I’ve learnt more about how to be a good developer in the last five months of my apprenticeship than the whole time I spent self-learning. I’m more confident in my ability to code, the quality of my code has improved with better critical thinking and a broader mind-set, and every day I’m learning new things about what it means to be a developer. Like how to work in a team environment at a professional level, and that being a good software developer isn’t just about writing good code, it’s also about being a good communicator and a good businessman. I was given a solo project in my second month as a way of gaining a solid understanding of the framework and development techniques used when working with ASP.NET, AJAX, and CRUD (Create, Read, Update, and Delete) operations with databases.

QA also assigned me a skills coach to help me maintain a good level of progress in the apprenticeship, and the two QA courses I’ve completed so far have given me a good foundation in programming. There are still four more courses to come over the next three months with multiple projects.

I’ve been told that the best way to learn about something is to work on a project that you are interested, so I also currently have a personal project which involves developing a bot / virtual assistant in .NET Core. I’m using it to learn about the framework, working with an API, asynchronous programming and embedded databases, as well as and non-programming specifics such as creating a project plan/specification, identifying the minimal viable product, and mapping out how your program will work using diagrams.

We'll be following up on Wilson's progress in a few months time.