My name is Sergio and I’m studying Computer Science at University. I’ve completed my third year. Vibbio offered me an internship during this summer, so I’ve been working with them for several weeks.
Before starting: what will I do as an intern?
I have no experience with web development, so touching the Vibbio codebase, frontend or backend, would have been a bad idea. The people at Vibbio had a better idea for me: build a mobile app for Android. It’s a small side project that I could work on without involving myself in big parts of the codebase. They already had an API extensive enough for me to get what I needed.
My first day
The first day was stranger than I thought it could be. Instead of getting an explanation of how everything works and try to start, I just realised it’s not so easy to get prepared for that. In my late-2013 Macbook Pro nothing was up to date, so installing and updating took me the whole day. I thought I was going to need only the Android Studio IDE, which I installed, and even it got an update that same day.
GitHub
I’ve used GitHub just a couple of times, mostly to test it out. But this is real world, and code repositores are obligatory.
Kotlin, no Java
Java is the language that I’ve used the most at University. I felt I knew enough to handle the project, but the project had another idea for me. They wanted the app made in Kotlin, not only because they think it will be easier for them to maintain it, but because it would be good for me to be out of my comfort zone.
As soon as I started learning Kotlin, I noticed it’s not that different from Java. Also, they run on the same Android framework, so it was much easier than I expected. Even if I had any problems writing it in Java was always an option because Android Studio could translate to Kotlin.
All I know, in one place
At University you learn some programming languages like Java and Haskell, as well as SQL, HTTP and many other technologies, but you don’t use them together in a project. Here I needed to use lots of those together, and you realise how powerful combining those technologies can be. Just making an HTTP call, parse the JSON and put the results on the screen makes your head explode with ideas.
Dealing with an API
I’ve barely used APIs before. I’ve learned a lot about HTTP response codes, authentication, access tokens, Content-Types
and JSON parsing. Since it’s a lot of things connected together, I felt for the first time a frustration I’ve never felt before. What you’re trying to implement is not working, and you don’t know which part of it is the problem. You have to learn to dig into the different parts so you can isolate the problem, and that’s the hardest part. Once it’s isolated, the problem becomes more obvious, and then it’s easy to solve.
Handling media
One of the things the App did was show you images, audios and videos you have on your library. I had no idea how to do that, but after some research you notice that it’s much more simple than you ever expected, and most of the times it’s passing a URL to a component and you’re good to go. I thought it was going to be a manual process, and it felt many things were automated.
Seeing the App in my hands
After writing some parts of the app and testing on the simulator for days, I finally run the project on a Nexus 5. It’s a different feeling from seeing it in the simulator, and it’s a very exciting feeling. “It’s my App! In a phone!!”. It just suddenly becomes real. All that looked like theory became a practical thing. I felt proud of myself.
Conclussion
I would like to thank everybody at Vibbio for having me during these weeks. Doing an internship has been an eye-opening experience. I had a great time with the few colleagues that were not on vacation, and I feel I got a hint of what working as a developer would be, and I hope what I’ve done is good enough so they don’t have to throw it away and start from scratch.
Another difference from studying at University is that it has been great not having to go through an exam at the end, even though I had to present what I did to the whole company.
Also, I learned the hard way what the Demo Effect is.