By Andrea Buforn on Sep 13, 2018 12:44:41 PM
Mike Roberts is a Senior Software Engineer here at pi-top. Mike joined the team in the company's early days, over three years ago. In honour of Programmer's Day, celebrated on the on the 256th day of the year, we decided to sit down to have a chat with Mike about his experience working at pi-top, and what advice he would give to all new and future developers out there.
Hi Mike, tell us more about your position at pi-top.
I started at pi-top three years ago, and I am currently the lead developer for all things pi-topOS. We work closely with the hardware team in Shenzhen, China to ensure that all of the hardware plays nicely, and also with the learning team to meet our educational objectives. We stand on the shoulders of giants to develop a great Raspberry Pi experience for people who want to get involved with project-based learning. I also work closely with key community members.
Can you describe your average day?
I typically work from 9.30am to 5.30am, as this works best for me and my team. We will usually start with a standup meeting to calibrate before we start the day. I like to keep my mornings free from meetings, as this is when I am most productive with my programming. In the afternoon, I will have any meetings that need to happen and also deal with my email. I always try and keep 15 minutes between my arrangements, to allow me to collect my thoughts and ensure that I have digested what has happened and prepared for the next meeting.
What have you learnt in these three years at pi-top?
A tonne! I had worked with Raspberry Pis at university (I built a facial recognition system which opened a door when it detected my face - to mixed results - and also a microphone-operated vehicle detection system as a proof-of-concept for a PhD smart city lighting project), but I was forced to learn a lot as the job required. The main skill that I have acquired in the last three years is becoming very good at searching online for solutions to the problems that I am having in a way that will maximise my probability of finding an answer. As developers, we all stand on the shoulders of giants, and paying forwards through the community is an important part of this.
What would you say is your biggest accomplishment?
This is a hard one. I don’t see any one part of the work that I have done to date as the “biggest” accomplishment, as the context is always important. However, a notable mention goes to pi-topPULSE, which was one of the more visually exciting things I have worked on (who doesn’t love shiny RGB LEDs!). Of course, there is work that I am doing currently that I am not able to talk about which I am just as proud of, if not more so. It’s great to be able to work somewhere that allows me to continue to progress and push myself to achieve things that I didn’t know that I could do before I started.
What’s the biggest challenge you face at the company?
Software programming, as with most things, is a battleground for trade-offs. Trade-offs between performance and reliability and development speed within a project, and even between entire projects, to only scratch the surface. It is a constant challenge to know what is the most pressing thing to be working on, without also spending a disproportionate amount of time worrying about it or trying to quantify exactly is the most important thing at any given time. Sometimes you just have to commit to something and see it through. It’s messy, and that can conflict with my desire to see things nicely organised, but it’s a necessary part of the process that you have to learn to live with and hopefully even find a way of enjoying a little bit.
What advice would you give to anyone that wants to become a developer?
You will feel like an imposter. We all get that feeling from time to time, that we have no idea what we’re doing, and we’re out of our depth, and everyone is only one question away from finding out how useless we actually are. Don’t let that feeling stop you from asking for help. Also, admit when you don’t know, but try anyway. It’s far better to have persistence and determination with an accurate understanding of what you are capable of than to shy away totally or agree to do something that you will only have to admit later that you can’t do.
What are the three key skills developers need?
Communication skills, patience and a growth mindset (the belief that you can improve intelligence, ability and performance).
Finally, mash potatoes or chips?
Chips - the microprocessor kind.