Each summer we welcome a couple of interns to join the team here at Administrate, usually on the technical team. They arrive in June, work until September, get paid a salary, and are treated as full team members with real responsibility for real projects.
If you’re interested in an internship position at Administrate, make sure you check in with us in the early part of each year when we’re interviewing candidates for the upcoming summer.
The First Day
My first day working at Administrate began how I expected the first day to begin - taking a lot of notes, setting up the development environment, and getting familiar with the company, its values, and product. Myself and the other summer intern Darren were sat down in front of monitors and told to watch videos about the company and presentations given by John Peebles. It was evident that John had clear views on problem solving and building software solutions, ideas that resonated through the company and shaped how every member of Administrate operated.
I had envisioned for the rest of the summer that I would be doing a lot of 'grunt' work - tasks that didn't require much thinking but needed to get done. I'd heard stories from friends about how they ended up doing menial tasks at other internships, so I was very happy to find out that an entire summer program had been designed with the goal that we finish the internship fully prepared for the world of software development, startups, and problem solving. We were assigned weekly readings and had time set aside to discuss the readings with the whole team, who were also doing the assigned readings. The two books we have been assigned are Getting Things Done and Code Complete. The first is aimed at improving our productivity and the other at improving how we think about programming and constructing software solutions. Ironically, I have owned a copy of "Getting Things Done" for many years now but have never managed to set aside the time to sit down and read it!
By the afternoon of the first day Irek and Ruu from the support team had introduced us to the SCRUM software development process, an agile development framework, and before I knew it I was working closely with a client to change their evaluation form on their instance of Administrate. Irek pitched in to explain how the evaluation forms were generated and where all the data was kept in the database. I felt very unprepared and under qualified to be working with a client on my first day, so I was constantly checking back with Irek on any client communication.
After many lines of SQL, my development instance of Administrate was finally generating the evaluation form the client wanted so I nervously checked with Irek before sending to the client and that was my first 'ticket' completed! After completion Ruu explained that we were going to target completing at least 3 tickets a day! Support tickets came in one after another, covering a range of topics. Customers asking for assistance, requesting a change in some part of their system, or reporting a bug they had found.
School vs. Work
Before joining Administrate for the summer I had never programmed in PHP. I considered myself an intermediate programmer having just finished up my third year in Computer Science in Edinburgh, but I was faced with the hard truth that I hadn't done that much actual development other than an Android application for one of my classes. I don't feel as encouraged to develop software solutions as I should. I felt very out of place in the office while Edinburgh Castle stood proudly looking down at me through the window and a code base written in an alien language before me. I poked at the code, changing character-by-character, line-by-line, routine by routine trying not to blow up the program before I accomplished another task. Much of what I had read in Code Complete started to fall into place and conversations I had with the team made more sense: constructing software transcends what language it is written in, the programming language is just a tool.
The First Week
By the end of the first week I had code in production throughout the system, in a system that all of the company’s customers use. I can't imagine many people being able to brag about that, especially an intern on their first week! It was very exciting! I remember sitting down at my desk on that Friday afternoon reflecting at how much PHP I had learnt in a couple of days as opposed to the numerous programming languages I had 'used' throughout university for assignments. It was a profound experience sitting there questioning how little I learn during a semester of university compared to a week working with Administrate.
The Development and Release Process
After developing a solution to a bug or adding in a new feature, every new piece of code has to be put through Quality Assurance. This involves another member of the team scrutinising the source code before passing the code along to be tested extensively. In the beginning weeks, QA was a daunting process and every ticket sent back felt like a jab at my incompetence, even if the issue was just "Comment what this variable is used for" or "Use spaces, this is hard to read". This process ensured that I was actively applying what I had learnt by reading Code Complete and every time I submitted code I endeavoured to make sure I wasn't repeating my mistakes.
In the coming weeks I will undertake a larger Summer Intern Project. It's very exciting approaching software development formally as opposed to a small project in my spare time. Consistent with the Administrate processes, the project will require clear definition of the problem, understanding the client, and proposing a solution.