Written by Elliot Paull, Software Development Apprentice
Hi, I’m Elliot; I successfully completed the Bluefruit apprenticeship interview process and have now been working here for just over six months.
When I first arrived, I was thrown into the deep end. After being shown to my desk space within the team I would begin working with, I was soon provided with my own laptop which would play host to the many programs, websites, and utilities that are used here daily.
It took some time to become familiar with each of these tools that I would begin using as I worked here; however, the same amount of time wasn’t required to get to know the people! It likely helped me that there were a few familiar faces in the offices already, but I felt like I got to know many people throughout the company quickly. Partly down to how work is done within teams, and during lunch.
Lunch is a communal affair with various groups to join in with: in the café a large group of people from Bluefruit dine together, a regular group make use of the two pool tables in the recreation room during lunch, and sometimes people will meet and play “Go” a board game which has become part of the company culture. The work environment here is relaxed, and we have facilities like the recreation room as we believe happy workers also make hard workers. After being here for six months, I can see that this is patently true.
Focussing on the work side once again, very often people will pair program together, or even work in a mob featuring 3 or more people. In each instance, one person will “drive” (use the computer), and the others will supply ideas to the driver and swap roles periodically. Activities like this improve team synergy, promote a more social workplace and increase the rigour of the work, as multiple brains are working towards the same goal. As an apprentice, it was helpful to sit in on mobs working on tasks that were largely beyond me at the time, but take an auxiliary role and contribute where I saw an opportunity.
I started pairing with a developer on an idea that we came up with during our spare time, and as he became more occupied with his own duties I started a coding exercise myself. I was supplied with an Arduino and an 8*8 LED grid, so when I wasn’t reading up on project-related work I wrote the code to make an automated snake animation akin to the arcade game.
How did that work out?
Before getting the computer to send a message to the LED board I had to do a bit of wiring between the LED board and the Arduino. This involved looking up the relevant datasheets to see how things needed to be connected. After I had established communications to the device I looked for a LED library with existing functions, including those for turning individual LEDs on and off so that I didn’t need to look at the extremely low-level side of the programming and could concentrate on the program logic. At this stage, I dived into writing the code and after a day or two I had an “LED snake” randomly moving around the board. When I next got time to work on it, I added edibles the snake could collect to grow in length.
At this stage, there are two paths I could take with the project, either adding rules for the snake’s movement to give it smarter AI and survive longer, or to add the ability to interface a keyboard so a user can manually control the snake. Before I choose a path, I would like to rewrite most of the code I have created so far into Visual Studio, using a class structure to abstract elements of the game, and using TDD to continue developing the game, as well as writing tests for the existing functionality. Please have a look at the video:
During the start of my time here I was especially grateful to be able to meet up with the other apprentices, to share ideas and get feedback from one another on the individual tasks we were working on, as well as to simply talk about how each of us was finding the apprenticeship on our respective teams, and generally support each other.
Going forward from here I expect to be acting as a tester for at least another 2 months; sometime after that my attention will be directed more to the developing aspect. I had my first project-related taste of developing recently when I paired with a developer to iron out a complication that had arisen due to the arrival of new hardware. I found it fascinating to see the architecture of the solution which had been created for this project so far and look forward to diving into the developer side of the work full time when it is appropriate for me.
To summarise, working at Bluefruit for the past six months, has been excellent fun, and I feel I’ve grown a lot as a tester, and to a lesser extent at this stage of the apprenticeship as a developer. The social aspect has also been fantastic; I can’t imagine a company where I would feel more comfortable, and fit in with everyone else so well.