Since I am grasping for blog content at the moment, I have decided to put up the executive summary of my Spring/Summer internship at Mobi. It was fun. There, I said it. I am so sorry for this cop out. I will do better next time, I promise.
From March 16, 2009 through July 29, 2009 I was a development intern at Mobi Wireless Management. Mobi is in the process of creating a Ruby on Rails-based web application that will allow companies of all sizes to manage their corporate cell phones, plans, and even manage mobile policy on a per-company basis. When I arrived at Mobi, development on the application was underway for over a year and Mobi’s sales team was already beginning to pitch the service to prospective customers, including Ford.
While at Mobi, I was given a set of duties. Some were long-term assignments that lasted for the duration of my internship. Others were shorter assignments that lasted for only a couple of weeks. My main responsibility was researching and implementing automated testing for the Mobi application. Cucumber/Webrat was the testing framework that was decided upon, in favor of Selenium. Cucumber creates a virtual browser in which it runs the tests. Selenium slaves an actual browser, usually Firefox, to run the tests. In the process of writing definitions for these tests, I learned a great deal about Ruby and how the Ruby on Rails framework functions. Jason Sisk also emphasized that he wanted me to learn web programming from the perspective of constant, comprehensive testing.
Other duties included building an ROI tool that would aid the Mobi sales team when pitching the application to prospective customers. That task took me about a month to complete. I helped to grow and maintain Mobi’s presence on Twitter. This involved following people who were in Mobi’s field, were a potential customer, were Rails programmers, or were related to Mobi in any way possible. Bluefish Wireless’ director if IT, Josh Garrett, helped oversee Mobi’s use of new media and worked with me on the Twitter project. During the latter half of my internship, I assisted one of Mobi’s team members in verifying and populating the Mobi device/plan database. This was a very time-consuming task, as it involved manually clicking through page after page of devices, plans, and plan features on Mobi’s website and comparing it with what was on the Tier 1 carriers’ web sites.
When I started this internship, I thought I would be doing more development on the actual site, rather than testing. However, I did end up making significant contributions to the Mobi codebase in the form of Cucumber tests. Jason made no secret that I would be spending the bulk of my time developing tests for Mobi and he stressed the importance of having comprehensive tests for a corporate-grade web application. Overall, I think that the quality of my work was pretty good, given the level of my knowledge and experience in this field. I came in knowing most of the basic philosophies for writing clean, functional code and I applied these on a daily basis. While learning Ruby and working with it, I learned many of the interesting things that one could do with it syntactically. I learned how to think of web programming in whole new way. I used to think of it as a bunch of files that somehow came together to perform a given task. However, it is more of a flow. The different tasks that a user would complete are the focus. The individual files and lines of code just enable that. This gave me a fresh perspective on web programming and I was able to get a clearer view of the Mobi app when working with it.
While my internship was an overall positive experience, there were a couple of areas where I think I could have improved. I think that the main thing I could have done was devote more of my time and energy to developing my own personal Rails application, a project that Jason endorsed heavily. I think that this would have made me a little more confident when working with the Mobi codebase every day. Naturally, this would have made me more confident when doing Rails development in the real world, if that ever happens. Jason also lent me a book about agile Rails development and I should have given more time to that book. I did not get very far because I was so focused on creating a comprehensive testing suite.
If there were another student who wished to intern with Mobi, I would advise that person to know exactly what they want to learn and let Jason or whoever is supervising that intern. Jason knew what I wanted to learn and built the internship around that.