What Tom Haines, secondary school student, learned when he returned to Potato for work experience this month...

I first enjoyed work experience in web development at Potato two years ago in 2016 when I was enticed by the prospect of a pool table and free lunch. However, I ended up learning a whole lot more from working on many different smaller projects - including a Slackbot to manage pool tournaments.

This year I was again offered the opportunity to do work experience and it was an obvious choice for me to return to Potato. Over the past week I’ve worked on Vault - Potato’s internal secure password sharing tool in the form of a design sprint.

On Monday I had some extremely helpful chats with lots of Potatoes, talking about development, design and leadership. These chats really helped me understand how Potato works when creating apps and how the team consistently tries to improve efficiency in the work they do.

We also started off the design sprint for Vault. We made several key decisions; what problem we were solving, why it needed to be solved and how we were going to solve it. We decided to implement a ‘favourites feature’ based on the research that designer, Phil, had conducted. This was based on the research revealing a common user pain point: having to scroll a long list or use a search function to reach the passwords they needed

To achieve our goals we decided we needed to implement several features on the backend and frontend of the app. We would check the progress of the sprint on a whiteboard and through daily stand-ups led by our Coach.

The app itself is based on Potato’s own Djangae framework which tightly integrates Django with Google’s app engine, and React.js with Redux to manage state. On the backend, we would need to add an extra endpoint to support the addition and deletion of favourites and a database model to store them with. On the frontend, an API client for favourites would need to be added and the favourites presented to the user.

I spent Tuesday implementing the favourites endpoint on the backend of the app while the Design and UX team thought about how the user would interact with the favourites feature and how it could look. Working on a real-world app taught me a lot about working in a team including how everything needs to be thought through to make sure there's no knock on effect to the rest of the app.

The React code used to render part of the user interface
The React code used to render part of the user interface

Wednesday was spent reading about React and Redux and learning how they worked. I then better understood how that applied to the Vault app. For me, it was really interesting to see how apps work and how functionality can be added to them.

On Thursday I wrote and implemented the front end of the app and added the buttons to the user interface. This was challenging as I had never developed something on this scale before but I learned a lot and really enjoyed it. It was interesting to see how different the front end was to writing a backend, as you have to think about many more problems and how different components affect each other.

On Friday I went through and fixed a few bugs before our sprint review. In our sprint review we discussed what went well, what didn’t and what we’d like to implement next time that we didn’t get around to this time.

This week has been a fantastic experience and I want to say a huge thank you to Potato for having me and providing a packed week full of interesting stuff and of course, giving me lunch 😉.

Tom is currently a Year 12 computer science student and hopes to continue this study at University. Thanks for your work, Tom!