My Android Development Internship at Mobi Lab

Richard Annilo
Mobi Lab
Published in
7 min readOct 22, 2019

I am Richard Annilo, a 21-year-old computer science student. I spent the summer of 2019 as an intern at Mobi Lab doing Android development. This post will talk about that experience in order to shed some light on the details of the profession that often get overlooked. If you are reading this as an undergraduate with little to no work experience, then you will most likely find this interesting. I will end this post by answering the question that is probably on a lot of students’ mind: “Should I take an internship, or should I not?”

Before

I had studied computer science at the University of Tartu for two years before the internship but it wouldn’t have been enough for me to get a place at Mobi Lab. At the end of my internship I asked my interviewer what made him pick me instead of others and he mainly brought up my extracurricular Android experience. I had namely participated in two smaller projects which are up on my GitHub. In light of that, here is my first suggestion: if you want to increase your chances of getting an internship, do a project outside of school and showcase the code online. In that case, you will be in no trouble if the interviewer asks: “What else have you been up to besides school?”

Onboarding

I will now jump forward in time to my first day at work. I was very much looking forward to start, and throughout the day, my excitement did not waver. Things went very smoothly. I first met a lovely HR person who gave a tour in the office, introduced me to people, and talked about the history of Mobi Lab. After that she handed me over to my mentor who was an Android developer like me. He introduced me the company from a technical angle and talked about the project I would be involved in during my time there. I received a list of tasks to set up everything before I could start coding, and thus my first day at work could begin.

After taking a few days to set things up, I sadly realised that the project I was in had been slightly delayed. I was given a few smaller tasks, but it seemed I had to find another way to pass my time while others finished planning. So I was offered a new project for the time being, albeit this one was far from Android. It involved using Python and CURL commands to get data automatically from a website. A lot of my time there was spent just learning the new technology. Progress was slow. What’s worse, when I finally got the hang of it, my main project was ready to give me Android tasks, and I wanted to do that instead. Later on, when we did some retrospection on Python project, my co-worker and I agreed that ideally, I would have stayed there for longer, since I spent most of my time studying. Nonetheless, it was great as a side project.

Development began

July began with long-awaited tasks for Android development. I attended the weekly planning meeting and received tasks for the upcoming seven days. I had no idea what they would involve, but I was ecstatic. After reading through the descriptions and still getting no clearer image on where to start, had a 30-minute chat with the other developer to make things more clear. This became my little ritual for the next month or so. About every 2–4 hours, I would finish on the cycle of the following.

  1. Have no idea what to do
  2. Ask questions
  3. Get some idea on what to do
  4. Start working
  5. Lose track of what to do
  6. Repeat from Step 2

At the end of the second month, however, I felt I was getting the hang of it. I spent less time in total confusion and more time “in the zone”. If I were to continue my job right now, I would try to seek more challenging tasks than what I was usually doing. Looking back at it, I feared the initial learning curve would be much steeper than it was in reality.

Still, even when things became less confusing, asking questions was a big part of my job as an intern. I often found myself contemplating whether to give up trying to solve a problem and ask for help or to keep on trying. After a while, though, I found out that the best way to become more independent while still asking questions was to ask in a specific way. Instead of bluntly saying “Please tell me what should I do” I first come up with my hypothesis on what to do. Even if I had absolutely no idea, I went to the developer or the reviewer and said: “I am not sure what to do but here is how I would do it. What do you think?” I was often surprised to hear that my plan was actually right. This increased my independence and courage as a developer tremendously.

After my task looked completed on my end I sent it over for reviewing. After a few hours I then usually received a long list of suggested fixes. Some were small, like changing the name of variables or structuring code in a specific agreed-upon way. Others were bigger, like structural changes. This back and forth between the reviewer and me happened 2–4 times, on the worst occasions, it was much longer (1–2 weeks). If nobody had any more comments, I could merge my additions with the main branch and check my task as done.

This routine lasted throughout my internship: I received tasks for a week every Wednesday, did the tasks assigned to me as best as I could, sent them to review, and fixed the mistakes. If there were no more comments, I marked it as finished. Coupled with asking questions UX/UI developers about design choices and sending work to the tester once he joined our team, this was mostly everything my job involved.

The working environment

The working environment in Mobi Lab was very relaxed. Nobody watched over your shoulder to tell you to come to work on time or to take fewer coffee breaks. People came when they wanted to come, left when they felt like it. If you had to leave for 3 hours in the middle of the day, nobody gave you a judging look. You only had the responsibility of logging your workhours and getting your things done in time. Everything else was your call.

Given such freedom, one would assume there was chaos in the office or people arriving in the middle of the day, but this was far from reality. I would say that 90% of people I saw there followed the traditional 9 to 5 schedule with lunch at around 12 or 13. And I completely understand why. I tried experimenting with different routines myself, like working from home or spending more time at the office one day and then less the next day, however, in the end, I realised I enjoy a fixed schedule. It simply takes away the effort of planning your time and you can focus more on your actual work.

Conclusion

I am happy I went to an internship and chose Mobi Lab. They had people there to answer all my questions, I got along with my co-workers wonderfully, the vibe in the office was chill and productive, but most importantly — there were free snacks!

As promised, I will end this post by answering the following questions.

Why take an internship at all?

  1. To get to know which working environments suit you best. How much freedom do you want to have when you do your work? Do you like open offices or do you want to work in a cubicle? Would you prefer working for a huge international company in a large office or is a small startup the perfect place for your needs? Internships are a great place to learn about yourself in these aspects.
  2. To get to know whether you really like the job or not. Internships are the closest thing you can get to a real job. You can read about being an Android developer, you can talk to your friends who work as one, you can even visit offices, but the fact is, unless you actually go to work every day and write lines of code for your client together with your team, you will not really know what it is like to work.
  3. To increase your chances of getting a job in the future. If you do well in your internship, you will have no problem getting a job in the same place later on. There is a high demand for software engineers in the market right now, but it is always safer for companies to hire someone with experience.
  4. To not waste your coding skills during summer. It is difficult for anyone to study during the summer when you have no real obligation to do so. During an internship, it is easy to learn new things. Even if you do not learn anything about programming, you will learn all the social aspects needed as a software engineer: understanding what other people mean, expressing your thoughts clearly, estimating time, etc.

Why not take an internship?

  1. When you know you need time to rest. Working is more tiring than playing computer games. There is no denying that. If you have just had an exhausting semester and you fear getting burned out, maybe it is worth postponing your summer job for a more stable time in your life. Get an understanding of the effort involved in taking place and think things through.
  2. If you have a specific thing you want to learn and know you can motivate yourself. If you have had success studying on your own in the past and you have clear objectives in place, you could be better off on your own during the summer. Maybe you want to know more about blockchain and already have a group of friends that want to do the same. By all means, start a study group, create your cryptocurrency, go wild. Increasing your portfolio with a project or two during the summer is an equally valid career plan to an internship in my mind.

--

--