The Summer I Became a “Mobster”
From the very beginning of my college career, I often fantasized about what my future internship experience would be like. It was difficult to picture because it would be different than anything I had ever experienced up to that point in my life. I had been in school, of course, where I had been expected to learn and reach deadlines and I had been employed in jobs where the goal was to be of value to an employer. An internship is like a mash-up of the two with the added pressure of networking and being surrounded by potential future coworkers or bosses. Even as I was finishing up my Junior year, I was nervous. I did not feel qualified to go out into the real world yet. It felt scary. However, more than anything I was excited because I would finally be able to see some of the knowledge that I had been archiving in my mind get put to use.
I have been considering options of where I want to work when I graduate ever since I declared myself as a Computer Science major. Of those options, Mobiquity was at the top of my list and therefore was a prime candidate for where I would spend my internship. Mobiquity is a consultancy that offers up unique solutions for businesses who are in the market for software. Specifically, their goal is to “Make Mobile Matter” as mobile technology is definitely on the rise and a lot of business are taking advantage of this relatively new way to connect with their customers and clients. I applied for an internship in one of their delivery centers located in Gainesville, Florida. There they have a team of iOS and Android developers, working diligently to build mobile applications for their customers. Quality assurance engineers work alongside them to ensure the applications meet the requirements and specifications outlined by the stakeholders and people managers. They have people dedicated to building the server side and backend work as well as people working in support. The office is open and collaborative and everyone works together regardless of role with the ultimate goal of “humanizing the digital experience” and creating a quality product for their clients.
Just as I was hoping for, Mobiquity hired me as a software development intern. I am currently studying iOS development and the Swift language, a language designed by Apple to replace Objective-C which has grown cumbersome to use due to its age and the number of times it has been added to and patched up. Fortunately for me, Mobiquity is now training all new hires to use Swift and Objective-C is slowly being phased out. The opportunity to use the Swift language was one of my strongest preferences in an internship and future career so this was a good discovery in my mind.
Mobiquity has had interns before, but this was the first year that they have created a structured internship focused on both learning and productivity. They ended up hiring me along with two other interns to come to the Gainesville office this summer and work under Dave Stanton, the senior delivery manager and Mike Fabiano, the human resources business partner. They both put a lot of planning, time, and effort into making this experience beneficial for both the interns and the company. Coincidentally, around that time, Dave had an idea for an app that the company could use internally to help connect those employed by Mobiquity. They have several offices across the states, as well as internationally, and they have those who work remotely from offsite locations. Often times, employees or corporate members of the company may have the need to visit any one of the offices. Because Mobiquity has grown so large and is so spread out, it became easy to not recognize a face of someone walking through an office. The solution that he came up with to make the company feel more connected to each other is to create an app that gathers information about all of the offices, all of the “Mobsters” (the endearing term for those employed by Mobiquity), and all the the social events that are going on in and around the office. Past having a general idea of what problem it would solve, the app had not been started yet so he saw it as the perfect project for the interns to take ownership of.
Creating a mobile app from the very beginning turned out to be an amazing experience for the internship. I was forced to not only single-mindedly focus on coding in Swift, but to take a step back and learn about the whole process from a macro level. At that point, I had done my own studies of the Swift language and dabbled in self-driven practice projects. I had even finished a group project where we used Swift to create an app, but the focus was more on the backend and the front end work was more like the blind leading the blind as we were all new to the language and coding environment. In contrast, throughout the internship I was able to learn best practices, get quick and personalized help whenever I got stuck, and was able to create something that will be used by actual humans for an actual purpose.
The first week of my internship went by without us even touching a computer. At first, I was saddened that we didn’t jump right into coding, the part that I was really excited for, but it turned out to be quite beneficial. The first day we had an orientation. Dave Stanton explained to us what Mobiquity is all about and gave us the grand tour.
One of Dave’s goal for the internship was to not only give us an opportunity to work on a cool project, but to also see how an app is generally created in the real world. He explained that Mobiquity mainly uses the Scrum framework of the Agile movement, though they deviate on a few areas. On a very basic level, this movement is a popular, newer way to approach software development where all stages of development are done in two-week-long “sprints”. First, the most basic working version is made and then features are added iteratively thereafter. Every sprint involves its own planning, developing, and testing phases as well as meetings to ensure everything is running smoothly. This replaces the older way of approaching development where the whole entire project is planned, then the developing occurs, and then the testing is done and if something went wrong along the way, the workflow would have to begin all over again from the planning stage. He also briefed us on GitHub, a tool that is widely used and depended upon in the software development industry. Both of those topics are very important, not only for that internship, but for any employment opportunity that we may be involved with in the field so I appreciated the time he spent making sure we understood.
The next step was to plan what features we wanted to include in the app. Mike Fabiano acted as our “stakeholder” for the purpose of applying scrum terminology. At that point we had the idea for the app and that was it. We had to all get together and have a brainstorm session on what could help achieve the goals that we wanted the app to accomplish. We had to keep in mind what kind of different personas would be using the app and how their priorities may effect how they want to use the app. We then had to prioritize the features based on what would bring the most value to the stakeholder. This prioritization would come into play later when we would do our sprint planning.
After that meeting, we got back to our office to find giant post-it notes. We were still not ready to code, we had to come up with the user flow. The other two interns and I put our heads together and figured out what were the “happy paths” that each persona would take to achieve their goals. And after a lot of deliberation and planning we came out with a paper prototype. We had developers from within the office come in one by one to help us ensure everything was laid out the way we wanted it. We would give each participant a separate scenario such as “You are an extroverted developer and you want to create an event. Show me how you would do that”. The participant then would tap on our hand-drawn prototype and we would present the next screen. In this way, we were able to test that our layout made sense without spending hours building it just to later realize that it needs to change. We then started talking about how we might go about implementing features. What data structures would we use? What libraries would we be dependent on? Finally, to wrap up our first week, we presented in front of the entire office at their weekly town hall meeting. We introduced ourselves and talked about what we would be building and why. It was a good way to break the ice with everyone in the office as well as get some presentation practice in.
The second week we started coding! I committed to work primarily on the iOS version. Another intern committed to the Android version. The third wanted to learn both so he would work on a feature on iOS and then try to do the same feature for Android. From that point on, we started one-week-long “sprints”. We would have sprint planning every Monday for an hour. We learned how to use JIRA, the project management tool for agile teams that Mobiquity uses. There we recorded the user stories that we would work on for the week and the tasks that each user may wish to perform when using the app. For each user story, we assigned sub-tasks, a general description of what technical steps would be required to mark the user story as complete. We would then play “planning poker” where everyone on the team including the team leader estimates the complexity of each user story at the same time. Once the votes were out, we would deliberate and decide as a group what number to assign. We would try to plan enough tasks that would keep us busy for the whole week, but not so much that we would have some marked as incomplete. Every day we had a “standup” where everyone in the team stated what they did yesterday, what we would complete that day, and what our “blockers” were that were keeping us from moving forward. As we finished the tasks, we would move it through stages of development and testing, and then when the feature was ready, we would merge it into the main project. At the end of the week, we would have a showcase and retrospective where we showed the “client” and our team leader the work we completed that week and then the team would debrief on what went well and what we could do better.
Over the summer, I learned a plethora of new skills and techniques in my code. I learned more in those two months than I had in the past year of studying on my own. I learned about asynchronous networking, the model-view-controller (and network manager) paradigm, table views, auto layout, custom segues, animation, and so much more. We implemented log-in screens, map views, calendar views, and custom profile pages. Our team leaders left most of the design decisions and creation of the app to us. We would, of course, check in with them often and if we needed their opinions we could ask, but they wanted to see what we would come up with as well as, at times, learn the hard way why certain implementations of a feature would not be ideal. If we got stuck for too long on anything, there were plenty of developers who were interested in the project that would help us out. By the end of the summer, the app was able to be built on my iPhone and had all of the basic features working that we set out to do and as well as some extra ones.
The internship was not only a learning experience, but also an opportunity for me to test out a potential first career. I kept my eyes open for signs that Mobiquity would be a great fit for me in the future. It turns out it is exactly what I want to be doing and I am more excited than ever to finish my last year of school strong and start my new career. I loved the people, the culture, and the work. Wherever I end up, I will never forget the first summer I became a “Mobster.”