Movie Rama: My first assignment

Had you ever read a job advertisement that it was describing your dream job position? Well, that happened to me a few months ago. And guess what, I could not resist and I pushed the “apply” button!

1. Introduction

I always consider myself as a junior software developer so far, who as we speak is struggling with mobile development. Almost a year ago, I decided that I would raise my expectations and ambitions and would start applying for job positions above my current skill level. Lacking working experience, my plan was to gain more experience and knowledge from the hiring procedure.

On May, while I was searching for new job advertisements to apply, I read a job advertisement for an “Android Engineer” position vacancy based in Athens. It was the description of exactly what I had imagined that I would love to do as a mobile developer.

Thus, I could not resist. I pushed the “apply” button and started filling the application submission form. There was an option for a cover letter which of course would made the candidate stand out. But, I could not wait so I sent my application without a cover letter.

A few days later, after a twenty-minute introductory interview phone call, I got my very first assignment. It was an amazing feeling.

Then, the “Movie Rama” application was born!

2. The assignment

The outline of the assignment was extremely precise and I had no question about what to do albeit I had a lot of questions about how to do things happen.

“Your objective is to build a small Android app named MovieRama, in Java or Kotlin. The application is yet another movie catalog where users can check the movies of the week, search for movies and view details about them. The project will not have any backend parts but instead will solely rely on TMDB JSON API for a data source. Your deliverable should be an Android Studio project that can be built and ran inside both an emulator and physical device and should work on SDK 26 and above!”

The detailed description of the assignment not only helped me a lot to understand the general context of the application that was meant to get build but it helped me to understand the specific expected outcome as well. Moreover, I got provided with the typical user flows and actions inside the application in order to got me into the picture. The most important part though was that the key requirements were showcased as well as which technical skill was getting tested in each part of the assignment.

The assignment was meant to be tough and it really was. Also, I had a strict deadline of one week. It was a huge challenge and I definitely did enjoyed it.

3. Development process

First of all, I wanted to be sure that I was on the same page and that I had understood all the requirements of the assignment. Thus, the first step was to read the description that I got provided.

The second step was to create a strategy plan for the whole development process, which helped me to manage the studying and coding time efficiently. Unfortunately, it did not helped me to overcome my experience and knowledge gap.

According to the assignment’s description the “Movie Rama” app should had three different screens. The main screen, where a list with most popular movies should got populated on the UI, the search results’ screen, where the results of a movie’s search by title should got appeared and the movie’s details screen, where all the necessary details of a single movie should be shown on the UI.

Following the description’s guidelines, the popular movies screen should had a common UI layout with the search results’ screen. The movie details screen should had its own separate UI layout of course.

The third step was to start experimenting with the first challenge of the assignment, which was to fetch the data properly.

movie-rama-my-first-assignment-1 First successful data fetch.
movie-rama-my-first-assignment-2 Fetching more data.

As an absolute beginner I did not manage to overcome all the difficulties and handle all the bugs efficiently during the time of the deadline. The final outcome was buggy and multiple crushes were occurring.

During the summer I spent a few time in order to fix all the bugs and implement the missing features.

The fourth and final step was to plan an update which would include UI polishing, code cleanup, bug fixing, implementing new features and a data model rework.

movie-rama-my-first-assignment-4 Fetching more data and testing the search implementation.
movie-rama-my-first-assignment-5 Polishing the UI.

4. Did I became a better developer?

Off course, the “Movie Rama” app changed my philosophy and my perspective of programming dramatically.

The “Movie Rama” app has taught me a lot. First of all I learned to be patient, persistent and calm. I learned how to debug my own code, how to organize my code, how to write code while keeping in my mind that somebody else will going to read.

Also, the “Movie Rama” app gave me the chance to dig deeper into the Android platform and Java. It gave me the chance to work for a whole week on a real project with a strict deadline and specific requirements to be met. I learnt how to organize my time and how to plan the application’s development process.

I am still working on “Movie Rama” app with no intentions to stop. It became my favorite pet project, where I can experiment and practice with new features and technologies.

Not only I have gained more experience and knowledge during the development process but I became more confident about my skills as well.

5. Assignment outcome

Statistically all the odds were against to me, therefore I was expecting that I would not managed to get myself at the next phase of the hiring procedure.

My assignment’s review was short and the outcome was brief as well. But, I got provided with a valuable feedback, which was extremely precise and onto the point.

The competition was high, my submission was buggy and I did not manage to handle the multiple http requests properly, which was a key skill under test.

I was been implementing for the very first time in my life the most of the application’s features, and every such implementation was a time consuming process, just because I did not had the necessary experience.

6. Future plans

My current plans for the future involve a new screen implementation which will help the end users to manage their “favorite movies” list. Also, I consider a new data model implementation as essential. Moreover, I am thinking to work a little bit more on the data fetching strategy.

I am inclined to believe that this app have not been finished yet and that there is a lot more room for development and experimentation. Also, who knows, maybe the “Movie Rama” app become my first Google Play publication.

7. Conclusion

The company’s team are absolute professionals and they proved it to me. First, they sent an email with all the necessary information of their hiring procedure, which was very important in order to prepare myself for the introductory phone call and understand the company’s culture. Moreover, I got provided with an extremely precise and detailed description of the assignment. No time was spent for asking unnecessary questions. Finally, the most valuable asset to me was their feedback.

Maybe I did not manage to get myself to the next part of the hiring procedure, but the development process of the assignment was a chance to gain valuable experience and knowledge. I became stronger, and I feel grateful for that amazing opportunity.

Off course, I have not stop working on “Movie Rama” since then and I have no intention to stop in the future. It became my favorite pet project where I will keep experimenting and struggling in order to implement new features and acquire valuable knowledge.

Thank you for reading this article.

Until next time, remember to always work hard, always work with passion and keep struggling in order to accomplish your personal goals.

8. Credits

A huge “THANK YOU” is owed to Mr. Georgios Tsaousidis and Mr. Dimitris-Sotiris Tsolis for their technical advices, their mental support, and their valuable thoughts and feedback.

9. Resources

“Movie Rama” app code base repository