Yesterday I was invited to “virtually” attend the GDG Cincinnati meetup. The meetup is run by the infamous Bill Mote . This month’s meeting was interesting to me because if had a unique and fun format. The goal of this months meeting was to create an application that met a certain set of requirements in under two hours. Bill hosts the coding challenge meetups approximately 4 times a year on the 5th Wednesday of a given month.
This month’s challenge was to create an application that utilized the RottenTomatoes API to pull a list of movies that are currently in the box office. The basic requirements were simply to query and display the list, a task that should be easily completable by a novice Android developer in two hours. There were more advanced requirements at different difficulty levels, such as loading and caching an image, caching the JSON response, or playing a movie.
The challenge was purely for fun and there were no “required” processes or restrictions. The goal of the challenge was to give developers an opportunity to see what they could accomplish given a finite set of time. Given that time was the primary constraint I was able to learn a great deal about my current stack of favorite tools and fine gaps in my knowledge and workflow.
Know your tools
The first thing that really helps with completing the more advanced requirements of the challenge is to have experience utilizing libraries that take care of a lot of the heavy lifting for you. The bare minimum of the requirements can easily be completed using only the Android SDK. A seasoned developer may even be able to complete the advanced features without using third party libraries. Completing all of the features without using external libraries would be really impressive.
Your tools are not just your collection of personal and third party libraries. Tools also include your IDE and its various features. As a consultant I spend a lot of time working on established projects. Bootstrapping a new project comes with experience, repetition, and refinement.
In my case I found that using that Gradle was my best friend for getting all my libraries integrate into my project. Android Studio’s recently added templates were also a great help in getting things setup.
The libraries used in my implementation include:
You could say I am a bit of a Square fanboy.
You can accomplish a lot in little time
During your day job you may find yourself constantly interrupted by others or by gaps in requirements that need clarification. Being able to write code without interruption feels very liberating and exhilarating. At the conclusion of the event I was surprised at how quickly the time had past and how amped up I was on adrenaline.
Everyone has their own tricks
Bill encourages event participants to upload their projects to github as a way of developing a personal brand and as a way to share their techniques with others. This is a great way to learn. It is very rare to have the opportunity to look at a dozen different implementations of the exact same project. Each developer exhibits their own strengths and weaknesses and there is a very good chance you will learn something by reviewing their design decisions and code structure. Check out this project by Patrick Hammond as point of comparison to my implementation.
I really enjoyed the low pressure format of the meetup and would encourage developers looking for a fun evening of programming to either attend the meetup if able or to find something similar in their area. I was able to complete several features from each “difficulty level”. Had it not been for a small error in my implementation of Retrofit early in the challenge, a library I had only used one other time on the Marvel Android API, I am confident I would have completed nearly 100% of the requirements. I am anticipating another shot at the format so that I can test out some refinements I am planning for my personal “toolkit”. I am also discussing the potential to host a similar event in my area so that I can experience the in person camaraderie!