Revyoome is a startup company developing an iOS and Android application for bringing the online world of reviewing information into the ever booming social media industry. As the company is still early in its stages of growth and much of the content we worked on is private, there is not much that I can disclose about the actual product of the company. However, I can speak about my experience during this unique opportunity. As a third-year university student I could never have imagined myself being placed in a management position to lead a team of developers to build a mobile application from the ground up.
My role at Revyoome was to manage a small team of developers and to oversee the development, quality management and testing of the software as well as contribute to the design of the application. As a team, we built an entire cloud-based backend infrastructure to a mobile application using Amazon Web Services (AWS). I built a Phabricator instance on an AWS EC2 instance to host our project management and code review software. We used phabricator to enforce organization on the project, help with task workflow and have a well-established form of communication throughout the project.
I was directly involved in designing, implementing and continuously improving a data model and MySQL database schema for the project. The data model continually got more complex, adding new functionality to the app meant adding new components to the backend database.
I was also responsible for performing code reviews on a regular basis while managing a development and beta environment. Both environments consisted of their own set of databases, cloud-based serverless functions (AWS LAmbda) as well as their own set of users (Amazon Cognito).
I created a local working environment for the developers on the project to allow local machine development without causing disruptions to other developers. I set up a Docker container for a local database and used AWS SAM (Serverless Application Model) to build and test their backend functions locally.
It was an incredible journey and has been a priceless learning experience for me. I was faced with many challenges during this project and feel that I learned far more than I have during any of my past experiences. I also feel that I developed my skill as a leader and grew as a person, bringing me closer to my professional goals.
Official Title: Project Manager and Senior Technical Leader
Description:
Revyoome is a brand new startup (2018) interested in developing a new video-based social media application for both Android and iOS mobile platforms. With the project just starting, there was a group of 5 employees acting as both the development and design team. We are looking for a brilliant developer(s) with strong Apple iOS Swift experience who have a passion for mobile and enjoy developing in a fast-paced, innovative environment. As an iOS developer at revyoo.me, you'll be able to get in on the ground floor of an innovative mobile video technology company.
Expectations:
* Implement new features in the revyoo.me mobile app
* Work in a small team environment and ship code
* Contribute ideas and participate in design and planning discussions
* Contribute to everything from low-level networking and parsing, to application logic, to UI implementation
Experience We Like:
* Strong knowledge of iOS and experience with Swift
* Prior involvement in implementing a feature from specification to completion
* Real-world mobile development experience (through work or personal projects)
Few people can say that they were the first employee hired for any company, I was hired as the senior technical lead and the product manager. Although these were my official titles, oftentimes in a startup environment the roles we take on tend to blend into many other roles.
Some days I acted entirely as the companies database administrator, spending my time researching better ways to design our quickly growing data model, and how to increase the efficiency of our MySQL queries. I spent an entire day with an outside consultant planning and designing the use cases of our data model before ever beginning to build up our database. I learned that it is a huge advantage to plan out as many possible use cases before ever starting to develop a database schema and to try and anticipate various modifications that may come down the line. The time it takes to plan this out is minimal compared to the time it takes to rework your entire database design because of a new feature the client asks for. There were a few times throughout the term where I had to rework the schema to accompany a new feature, and many of these cases could have been avoided if I had done more searching for best practices in the first stages of design. One of the most valuable lessons I learned while working with the database for Revyoome was that no matter what I was trying to accomplish, my first solution to the problem was almost always less efficient than some other solution. Five minutes on StackOverflow was often all it took to find a better solution or to learn a new tool that is built into the MySQL engine. We decided to use Amazon RDS to host our database because of its flexible, scalable and overall ease of use. No set up of servers or maintenance on our end meant more time for developing!
Many of my days were spent as the project manager, performing code reviews, testing completed user stories and merging tasks into the development environment. I constructed a Phabricator project, running on an Amazon EC2 instance, for project management purposes. Phabricator is a great tool for managing task creation and tracking and has built-in Git support, which is crucial to be able to perform code reviews without compromising the main development branch. A major lesson I learned during my work term is the importance of using version control software properly. It is important to always have a branch dedicated to working code, to always have a place to branch off from to start a new task and more importantly to have a demonstrable product at all times. Nothing is more frustrating than trying to demo to the client (or in this case the CEO) and have a bug on the current branch.
I was given the unique opportunity to manage the entire project of Revyoome, which meant that I was in charge of the user story creation and assignment for both the Android and iOS side of the development team. I also did my fair share of development for both sides of the mobile application, which was very rewarding in that I now have experience in both Swift and Java for mobile development. A major piece of the application that I contributed to both the Android and iOS side was the sign-up, sign-in, and sign-out process. I used Amazon Cognito to authenticate users to be given access to our serverless backend.
Speaking of the backend, one of my largest responsibilities was the design and development of our entire backend, including our Amazon API Gateway which featured all of the endpoints to our backend serverless Amazon Lambda functions. We used NodeJS to write our backend code because of its asynchronous abilities and because I wanted to get to know this language due to its growing popularity. At first, there were a lot of issues with how the code ran asynchronously, but once I got the hang of using Promises, it became a very powerful and efficient tool.
I was given an incredible learning opportunity at Revyoome, a chance to expand my knowledge exponentially and get a feel for being a leader within the industry. I was exposed to the unique atmosphere of the first days of a startup before any infrastructure was in place whatsoever. This was one of the most unique opportunities a coop student in my position could ask for, and I am very grateful.
One major advantage I gained from the position I held at Revyoome is the immense amount of exposure I got to various technologies. I was placed in charge of many important parts of the project which gave me the opportunity to learn about many things I wouldn't have in other positions, such as web server setups serverless backend construction for mobile applications and especially managing a project.
I had some very amazing learning experiences and would absolutely recommend working for a startup such as this if you enjoy a challenging and rewarding workplace.
I was given an incredible learning opportunity at Revyoome, a chance to expand my knowledge exponentially and get a feel for being a leader within the industry. I was exposed to the unique atmosphere of the first days of a startup before any infrastructure was in place whatsoever. This was one of the most unique opportunities a coop student in my position could ask for, and I am very grateful.
One major advantage I gained from the position I held at Revyoome is the immense amount of exposure I got to various technologies. I was placed in charge of many important parts of the project which gave me the opportunity to learn about many things I wouldn't have in other positions, such as web server setups serverless backend construction for mobile applications and especially managing a project.
I had some very amazing learning experiences and would absolutely recommend working for a startup such as this if you enjoy a challenging and rewarding workplace.