A very good start to the year for me was when I heard of the opportunity to learn and contribute alongside an enthusiastic experienced group of individuals at Very Good Ventures. It all started when I met Jorge at a Chicago Flutter meetup. After being part of several meetups, my sense of community among Flutter developers became stronger, giving me a stage to show my expertise and helping me learn a great deal. Fast forward a year and a half later, and I was presented with an opportunity for an internship at VGV. In this blog, I will compare each month of my internship to a train moving towards a destination, with each stop marking the end of a month.
Onboarding the VGV Train
Every journey starts with planning and preparation. The first week at VGV was a very insightful and information-rich experience. I met with several members of the team to understand their practices, architecture, and everything VGV employees would do on a daily basis. There was an abundance of resources, such as an employee site filled with all the documentation to refer back to at any time, which was very convenient. My previous internship experiences with other amazing startups also helped ease myself into this environment. I was very happy with how detailed the documentation was to set up my first practice project. The architecture preferences, testing frameworks and project template in place made it very easy for a new member to jump right in!
Now that I have packed my bags with all the tools and necessary knowledge required for my experience at VGV, I was ready to hop on the train destined towards a place where we do the best with the time we have and are excellent to each other — the VGV mission.
The first stop was at the end of the first month. The first week was the onboarding week, during which I got the opportunity to work on a project that had a mission to help people. I am always enthusiastic about projects that are aimed at improving or assisting lives. So, this not only meant I was working towards a good cause, but also learning from the best to build something for the rest.
What followed soon was a journey of spectacular views — learning why and how certain parts of the projects are structured the way they are — and hard work through the contribution to projects. As an intern, I was highly encouraged to ask as many questions as I had. This motivated me to break things, learn, and quickly get back on my feet.
Over the period of this month, I got the chance to work on two Flutter projects on the web that had strict time constraints. Working alongside the team allowed me to not only absorb the experience and knowledge they had to offer, but also make suggestions, mistakes, and learn from it all. The time management, planning and execution by the team to meet the deadlines were exceptional and having worked in similar situations before, I could dive right in with some mentorship and assistance from the team. For both these projects, we had daily stand-ups where we discussed blockers, as well as past, present and future work to be done. Our PM was an excellent project manager who delegated tasks and guided us throughout the course of the project.
For the next stretch of the journey, I met a new and crucial member on the journey — a client. The onboarding of the project was the smoothest I had seen in a while. The documentation on how to set up the project was so simple and clear that I had it up and running within a day, which gave me a head start on diving into the code and project structure.
Within a day, I had my first PR ready to be reviewed. This process of branching, developing, and submitting a PR to be merged was not new, but the time my teammates took to patiently review and provide feedback was invaluable. Through these PRs, I learned best practices and how to refactor code to be more efficient and high quality. Working at VGV amplified my desire to write the best quality code while producing efficient solutions.
One time, I took an approach to complete a feature where the app had to remember some data across restarts. Upon closer inspection, I realized there was scope for improvement and discussion. I quickly met with the team to discuss the current implementation and changes required to make it more efficient. The team provided invaluable support, encouragement, and pushed me to reach higher than before.
This bit of the journey was very rewarding as I had learned and stacked up all the knowledge from my previous weeks. I was able to contribute and be creative with implementations on new features for the client project.
Lessons in understanding the app architecture, the bloc pattern, and writing tests over the first two months provided a solid foundation for the feature sets I was assigned. I communicated with the client with any specific questions I had and collaborated with fellow teammates to pair and solve current and future issues. I also worked diligently with the PM to organize, plan and execute project requirements. The goals Jorge and I set out in the beginning of this journey were coming to fruition, which showed in my work as well.
One big moment of understanding for me was to discover how planning and setting up a project with pipelines can be extremely beneficial to the project long-term. Some key takeaways in that regard are:
- A fully integrated IDE with debugging tools set up properly meant I could start the project in a few minutes every day.
- A well-written shell script to capture the coverage of the whole project meant I could write tests and check my coverage within a few mins.
- Properly setting up GitHub actions, sub modules, tests, and test coverage measurement meant that I could rely on subsequent pushes to the PR to be verified and avoid any unintended side effects.
- Working with welcoming, friendly and knowledgeable colleagues meant I always had something to learn and contribute.
The whole journey has been a fun and knowledgeable one. From forming connections to learning clean code to delivering features to clients, it’s been a fast, busy train with each passenger car having its own place to keep the train moving.