Summer Internship Development: The road to RoomSense

Posted by Lucie Oude Luttikhuis on August 30, 2019

Imagine, you’re sitting behind your desk, exhausted after building a difficult piece of code. You really need some time to relax. Luckily, TOPdesk has specific game rooms for this purpose, so you ask some colleagues and head to the room. Arriving there you notice that it is occupied, and the people inside mention that they just started their game. It would’ve been nice to know that before your walk. Unfortunately, you didn’t, so even more frustrated you try to get back to work.

As Summer Interns, this is the situation we were trying to solve during this summer. Only six weeks ago, we arrived fresh from our universities to get some working experience. Most of our team members only coded in their computer science courses. Now, we’re almost done with creating a fully working website.

Design week

The first weeks of the Internship were filled with a programming bootcamp to prepare everyone for the rest of the internship. Afterwards, there was a design sprint to make a draft of the product and to check the plans with the users. Instead of coding, we spent a week drawing prototypes. Many suggestions turned up, like calling dips on a room, making it a favourite and inviting friends through the system. Overall, users where enthusiastic by the suggestions, but we decided to focus on creating a working product first. Features were left for later.

Besides the features, the basic interaction was also tested by the users. For the basic product, we wanted to make tiles which change colour due to occupancy. Using that, we made two designs and showed them to the users. One design was very basic, containing just the necessary information. The other had more features and was therefore a little bit more complicated to understand. In the user test, it turned out that half of the users preferred the first basic design, and the other half of the users preferred the second one with more features. Therefore, we decided to merge those together in one.

Building the site

After the design week, we could start building the actual website. Firstly, the languages we’d we working in were selected and the development framework was set up. The plan was to work in Java and Vue, like during the coding bootcamp, as everyone had experience with them. We soon decided, however, that this was not the most convenient way. Since building a server was easier in JavaScript, it was better to use that for the backend.

Besides that, working on the front-end started. During that we encountered a number of challenges. Building circular tiles with icons and text on them was more difficult than expected. Making all of the information resize together was not very intuitive. After trying for a while, and the frustration with it, we tried to just make images of all information together and change the entire image. This turned out to be much easier, and therefore that was the solution we picked.

Another problem we faced in the first week was decoding the signal sent from the sensors since it was encoded by the supplier. Getting a signal was quite easy, but understanding what it means was much more difficult. When we found a Python script online, we finally could work with useful data and try to connect everything together.

Starting from scratch, in the first two weeks there was an (almost) fully functioning website that displays the response from the first two sensors in a nice way.

In week three, we finally got more equipment, so it was possible to put the sensors in the rooms and start using the website the way it was intended. After we had it hosted by the IT department, we could announce a working website to the rest of the company.

The website is live, what’s next?

Although we had a working website, we weren’t done. Maintainability is an important issue as we’ll leave the company in two weeks. It is important that the system is designed in such a way that it can be used for a long time, without the necessity to read the code line by line if something breaks.

Furthermore, fixing the inevitable bugs takes time as well, as well as improving many small features. An example is when the health room is booked for chair massages, it is unavailable for other use the entire day. This was implemented by importing the booking in the Outlook Calendar. Another example is the unavailability of the table tennis room during work hours due to noise complaints.

Overall, we are proud of what we have achieved. Despite the fact that we didn’t add many extra features, what we did implement works well. People can check the availability of the game rooms from their desk, and avoid walking there for nothing. Besides that, it was also useful for ourselves. Making a system like this from start to finish was something no one had ever done before. We learned a lot designing and building the website. Also working in a ‘real’ team showed what working as a developer is like. And hopefully, if we come back after graduating we can still see if the Pool Room is finally free again.