JRS Virtual Studio is a software development company headquartered in Guelph, Ontario. They program products primarily for the Canadian Agri-Food Industry as well as markets in the EU, UK, US, and Latin America. In addition to performing contract work for clients, Virtual Studio also develops its own products, including Transport Genie, Trespass Tracker, mPowered, and more.
To learn more about JRS Virtual Studio, visit their website: https://www.virtualstudio.ca.
For my final co-op term, I set three goals to further expand my skillset and improve my current skills.
My first goal was to become confident and gain experience creating database queries and working with databases in general.
For the project I was working on for the duration of the work term, we were using the PostgreSQL database system. I actively took part in discussions covering the design of tables and relationships between tables while developing features.
I also made use of the psycopg2 adapter to connect to the database from the server in order to perform a variety of queries including insertions, updates, retrievals, and deletions. Additionally, as part of the session management and registration, I worked with the in-memory database Redis.
My second goal was to continue to improve my communication both with clients and teammates while working on a project.
Prior to lockdown, we would travel to the client’s business once every few weeks for an in-person meeting. However, with the changes brought about by COVID-19 and the need to socially distance, we ended up shifting to entirely online meetings, using Zoom, Skype, and Microsoft Teams. These meetings initially were a once or twice a week tech update and demo meeting as well as a planning meeting for the following week.
Additionally, there were numerous impromptu meetings, including ones to discuss the implementation of a feature with other developers, ones to get more details of a bug from our clients, and meetings to review security findings. Further communication was achieved using WhatsApp for quick messages and email to send mock-ups of planned features.
My final goal was to be able to independently assess and decide if technologies like libraries/languages/etc are worth using in a project.
Some of the libraries that I researched, tested and suggested ended up being used as part of the project, including Semantic UI for styling and UI components, as well as html2pdf to convert invoices created in HTML to exportable PDF files.
Additionally, I was involved in testing and implementing changes using other libraries that were suggested, including Google ReCaptcha, Google Analytics, and FullCalendar.
Overall, I found that I was very successful in achieving my goals.
Initially, my primary focus had been on the project’s UI development where I was the main developer. This gave me a strong understanding of how the UI worked and any decisions/changes that went into its creation. As I began to focus more on backend and database development, my overall understanding of the system grew, and I was able to apply knowledge from the CIS*3530 databases course I had taken the previous semester towards the design and implementation of tables, and the server APIs to interact with them.
Finally, the set of libraries I had personally researched as well as the ones I was able to work with further expanded the toolset of libraries I am familiar with and that could be used in future projects.
For my co-op, I was part of a 2-person teaming working on developing a new web application for a client. We would also coordinate with co-op students from the University of Waterloo who worked directly for the client. My initial focus was entirely on the UI development, but I gradually assumed more of a full-stack role, working on the UI, server APIs, and database.
One area where I was able to further expand my development skills was database development. After having done basic database work in CIS*2750 and my previous co-op term, as well as more intermediate work in the CIS*3530 databases course, I was able to fully test and expand upon my database experience. Since both my databases course and this co-op involved PostgreSQL, I was able to quickly become familiar with it and start working on more complicated queries.
Similar to my previous co-op, the UI development primarily used Bootstrap and JQuery. My previous experience allowed me to make quick progress on an initial layout for the UI based on a Sketch document, and as feedback arrived I was also able to quickly make updates and iterate on their feedback. Through code reviews, I would pass on some of my knowledge and experience with UI development to the other co-ops working for TAMVOES.
Having been one of the two starting developers for the project, I had a strong knowledge of the overall system, particularly the UI. This sometimes put me towards more of a leadership position, where some of the new co-ops working for the client would come to me or my teammate for advice or review their code. Further, in planning meetings, I had a prominent role in voicing my thoughts on upcoming changes as well as making suggestions of my own.
Having worked at JRS Virtual Studio my previous co-op work term, it was easy to get back into the swing of things when I returned. I was able to immediately begin applying lessons I had learned while in my academic semester and was also able to continue to expand my skillset.
Through my goals, I became much more involved in the design and feedback sessions with the clients, and was also able to discover several new development tools/libraries that could be useful in any personal/professional projects I work on in future.
Due to my work effort and strong knowledge of the system, I will be continuing to work with on the TAMVOES system part-time during the following academic semester.