The Cooperators
Junior Software Developer
Sep 2017 – Dec 2017
Introduction
Hello and Welcome to my website, this page is dedicated to my experience working at The Cooperators Insurance Company during my second Co-op work term.
This page will include information about the company and what I did in my role as a Junior Software Developer.
About the Company
The Co-operators Group Limited is a Canadian company based in Guelph, Ontario. The company was first started in 1945 by farmers in Saskatchewan. The largest portion of the Co-operators is made up of a general insurance company which is where I worked. The Co-operators have over $44 billion in assets under administration as well as being in the top 50 best employers in Canada. They are well known for their generosity in giving back to the community and having a strong commitment to stability. The group was founded on farmers who dreamed of building a co-operative insurance company to protect their assets for future generations.
The Co-operators are a multi-line insurer, offering auto, home, life, farm, travel, business and investment insurances.
Job Information
During my work term at this company I was apart of a very small team that was working on an upgrade project of older web services and applications that the company wanted to maintain and upgrade to their newest backend database IBM's Master data management (MDM 11.4).
I was tasked with upgrading 7 of the applications. The upgrade was broken down into a few major steps. The first step was configuring the application in a local workspace, fixing bugs in the code and managing and configuring libraries and utilities that were either out dated or needed adjustments. I also needed to add and change code for the XML requests created in the code that are used to send information to the database since the format changed with the new database (MDM11.4). The second step was to deploy the application and test the new transactions/request that the new database used on my local server to verify if the application was working correctly and did not need further changes. The next step was to rewrite the build scripts with the new configurations of the applications and new dev server. The last step was to deploy the applications to the new unix server that was hosting the newer version of Web Sphere.
The most challenging part of the role was working with legacy software that is no longer supported with both the database and web server that we were upgrading to. The applications that we were upgrading were built across several years and used varying libraries and utilities. Since the Co-operators have many applications they do not upgrade their software every time IBM releases the next version since development is costly and most of the time the cost to effort does not make sense from a business perspective.
Goals & Learning
I created 3 goals for myself to achieve and I am happy with my progression through the term and can confidently say that it was successful.
The first goal I set out for myself was to learn how to accurately estimate time to complete tasks which was is an important focus of this cooperation. The company is very large making it complicated for managers to stay updated and ensure the high performance and future success. Throughout the work term I had a meeting every Monday with my team and our resource manager to talk about progress and discuss how much effort is being put into each task and the expected results of them. This was a proactive strategy to ensure that we were always making the right decisions at the right time and making sure that we weren't allocating resources to tasks that were not of the highest priority and in the wrong direction of the overall target. At the beginning of the term I quickly found out that I had a hard time gauging how long it would take me to complete a task, especially with technology that I had never worked with before and was not aware of the possible roadblocks I would run into. The learning curve was exciting and by the end of the term I was pleased with my new developed skill of being able to measure out length to complete tasks with much greater accuracy. This is a very important skill in the professional workplace as it helps with time management and ability to plan out a successful work week.
The second goal I set out for my self was to outsource and discover new technologies and tools that would improve my workflow. Since I was working with legacy applications, I decided it would be very helpful to always be searching for better tools that would improve my ability to develop and test my work. The integrated development environment (IDE) that we were using was very slow and outdated and our application was extremely large which made development slower than what I have been used to. One change that I did was using a light weight editor to develop in. This made code changes and searching for information much more efficient. Another tool that I used was a built-in script tester that improved my ability to quickly test SOAP messages, I found a IDE plug in that would allow me to run the scripts right from the editor which was great for testing many transactions. An issue that we ran into for one of our UI applications was that the front-end code was written in an outdated version of a language called Java server pages (JSP). The specific problem was that some of the UI components were not supported on the latest browsers. I was able to find a tool that supported the code which was a great help to my team and myself. This discovery helped us pinpoint the exact issue and later resulted in my team member finding a work around for the upgrade.
The last goal that I created for myself was to improve the existing code base wherever I could and add meaningful documentation to help future developers. The legacy applications were very large and were worked on by many developers throughout the past 10-15 years. This inevitably lead to varying code and a lot of configuration issues, making it hard to make large changes to project. Since there was a lot of future testing within multiple environments after I finished the development of the applications I figured it was important to provide information about the changes I made and why I made them. I was tasked with creating documentation for each application I worked on that would help the next developer or tester with all the different configurations I had to do to upgrade the application and give them a head start with information on how and what to test. I learned that consistency is very important within large projects and is often better to maintain that consistency rather than using your own style, even if you think its better. It helps with someone's ability to understand the code and add to it, creating a robust stability and consistency within the project.
Conclusions
I had a very successful and enjoyable term and am moving forward with a great respect for The Co-operators and how they run their company. I learned a lot of important things and that will assist me going forward. Especially learning how to work with legacy code. There are many systems out there that are built and rely on legacy code which means that it is not going anywhere anytime soon. Learning how to develop and maintain legacy code is a great asset and I am grateful for the opportunity that was presented to me. Throughout the term I gained experience learning about large corporations and how they function. I found it very interesting that there were so many that were being used in the development process. This was necessary since there were many teams working in parallel and required different regions to test and develop the products. This was very eye opening to how different the work environment is compared to smaller companies. I am sure this will help me choose my next position since I now have worked in two very different environments and can see the pros and cons of each.
The most interesting thing that I will take away was learning how large java web applications are built which was a challenging new experience. The services that The Co-operators use are based on IBM core products that serve as the foundation of the customized services that became the Customer Information File (CIF) which is what we were upgrading. I needed to adapt to working with the IBM software since the development process is quite different than a traditional process. It was challenging because the code was no longer supported by IBM and discovering work arounds became a much more involved process and many road blocks were often present.
Acknowledgments
I would like to give a special thanks to John Tessaro who was the lead on the project I was working on and was an incredible help in my ability to help in the long process of the upgrade project. He gave me great insights on how the software's worked and was able to easily explain each application at both a high and low level to help me with my overall understanding of the software. He was also able give me many tips and tricks that he has learned after working with the software for so long that would have been very hard to learn with such a complex project that was the CIF/MDM project. I would also like to thank Martin Fielding who was an incredible manager and leader to our team. He displayed very knowledgeable skills in pushing our team forward and making sure everyone was always comfortable and in a smart working environment. I would like to give a final thanks to the entire team I was on for making me feel like a welcomed and respected member of the team which really helped me adapt into this role.