Introduction

Over the past 8 months, from May to December 2020, I have been completing my first and second Bachelor of Computing co-op work terms at Kenna, working as a Web Application Developer. In this report, I hope to explain to you what my goals were for these two work terms, as well as what it was like working at Kenna, and what I did while I was working there.

About Kenna

Kenna describes itself as a “marketing solutions provider”. They were founded in 1985 as AppliCan Marketing. Essentially, Kenna provides marketing services to its clients through several venues. One of these venues are web applications that clients can use to communicate with and better reach their customer base.

According to LinkedIn, Kenna has 168 employees, including both full-time employees as well as other co-op students. They are based in Mississauga, Ontario.

Kenna’s biggest client is BASF Canada, the Canadian branch of German chemical company BASF. One of the products that BASF Canada provides are herbicides, pesticides, insecticides and other farming-related chemicals, as well as the various crops to apply them to.

To assist them with the sale of these products, Kenna develops a wide array of different web applications that facilitate this process, from retailers ordering different SKUs of products from BASF, to those retailers then selling those products to individual farmers. This also includes as other related services, like managing product quality assurance and claims related to defective products, as well as rebate rewards given when retailers meet certain sales requirements.

To develop these web applications, Kenna uses a variety of different technologies. Historically, their applications were developed using a Lotus/IBM/HCL Domino web server, in combination with a Microsoft SQL Server database. However, the company is now in transition to a more modern tech stack that uses Facebook’s React library, as well as Node.js.

Goals

Over the past two work terms, I set the following goals for myself:

  • Improve my skill with and knowledge of front-end web development practices.
  • Improve my skill with and knowledge of back-end web development technologies.
  • Become better at programming in a collaborative environment.
  • Improve the efficiency of the code I write.
  • Attempt to improve the quality of my code so that it better aligns with best practices.
  • Develop better time management strategies for completing work tasks.

I chose these goals as I believed that they would be feasible to achieve given the job I was doing, and the environment I was working in, so by default they were directly related to my job tasks.

By developing the skills listed above, I am now far better prepared for future work terms. If I have another work term working as a web developer, then obviously web development skills will benefit me there. However, even if my future work terms are not related to web development, the soft skills I developed as part of my goals will still greatly benefit me.

Almost all programming (or work in general) environments are collaborative in some way, you rarely work entirely by yourself, so becoming better at working in collaborative environments will benefit me in pretty much any job I may have in the future. General guidelines revolving around the efficiency of code are often transferable, even when working with different languages/technologies. The same thing can be said for programming best practices. Developing better time management strategies will help you in pretty much any job you get, regardless of what industry you’re in, or what job you work in that industry.

I think I was very successful in developing my skills and knowledge of front-end and back-end web development. With regards to front-end development, I now know far more about CSS and how it works compared to what I knew back in May. For most styling issues, I can trace back the cause, and correct it, regardless of what the issue may be. If I’m implementing new styling rules, I feel much more competent in writing these rules, and spend far less time googling various CSS properties and how they work. With regards to back-end development, I believe that my knowledge of SQL has increased tremendously. When I first started working in this position, my knowledge of SQL was relatively small, and I had never used it in a practical application previously. Now, at the end of my work terms at Kenna, I am significantly more knowledgeable about SQL, and have much more experience using it. I would feel very confident using it any of my future work terms.

I believe I have also greatly improved my time management strategies for completing work tasks. Over my work terms at Kenna, there have been many situations in which there have been tight deadlines that I need to adhere to. The client was expecting a feature be in production on a certain day, so that feature needed to be in production on that day. After being in several of these situations, I began to understand what strategies were effective, and what areas I needed to improve in. I was then able to test different strategies on improving these areas, and could see what worked and what didn’t. The result of this was that I have become far better at implementing strategies in my work that make me better organized, and as a result I use my time more efficiently.

My ability to work collaboratively when programming has also gotten better. In these past two work terms, I have gotten much better at communicating with other programmers. The improvement in this area means that in the future, when I’m working with others, each person involved in the project will be able to work more effectively, with less reduction in productivity.

In the future, I think there is still room for me to improve when it comes to the efficiency of my code, and adhering to best practices when programming (the two are closely related). There have been a few situations over the past 8 months where I have written code that has performed poorly. These situations were often related to me using a new technology, and not realizing that there were improvements that I could make with my code. Now that I am familiar with these technologies however, I believe that in my successive work terms, the code I write will be much more efficient than it was in the past.

Job Description

My job title while working at Kenna was “Web Application Developer”. As one might infer from this title, I spent the majority of my time at work building and fixing web applications.

A large part of my job involved working with Kenna’s legacy tech stack, writing front-end and back-end code for the Domino web server. The front-end code was typically written in HTML, CSS, and Javascript. The backend code was typically written in Lotus’s LotusScript language, which is similar to Visual Basic. I also spent a lot of my time writing and fixing code in databases, modifying SQL stored procedures and functions that retrieved data the web applications needed to operate. Though I did learn a small amount of HTML, CSS, and JavaScript in my classes at Guelph, a large part of my learning over the past 8 months was on the job.

I usually received work tasks in the form of tickets on the Jira issue tracking system. When an individual had a task that they wanted me to complete, they would create a “ticket” and assign it to me. I would then see this ticket on the Jira website, complete what needed to be completed for the ticket’s task, and then mark the ticket as resolved. Then, I would create a ticket myself, to have someone release my changes to the testing environment to go through quality assurance.

Some of the tasks I worked on during my time at Kenna include:

  • Retail Programs - 2020 Reward Reports (May - August 2020)
    • Created and/or modified SQL stored procedures that generated HTML reports on what rebate rewards a particular retailer had earned in the 2020 season.
  • Retail Programs - 2021 Forecasted Rewards (August - December 2020)
    • Updated the web applications that calculated and displayed the rebate rewards a retailer could expect to earn, given their current sales plan for the 2021 season.
    • Implemented code for entirely new reward programs, as well as updated existing programs from the 2020 season.
    • Worked in SQL to do reward calculations, as well as HTML, CSS, and JavaScript to implement UI changes.
    • Apart from my team lead, who helped in releasing updates to the testing environment, I was the sole developer working on this task.
  • Retail Programs - 2021 Net Cost Calculator (October - December 2020)
    • Updated procedures to generate a dynamic excel spreadsheet on demand, for the 2021 season.
    • Modified existing excel macros (written in Visual Basic) in the spreadsheet template to meet the new requirements for the 2021 season.
    • As with other tasks I worked on during my time at Kenna, I was the only developer working on this (apart from my team lead, who released my changes to the testing environment).

Conclusions

Overall, the past 8 months I’ve spent working at Kenna have been an invaluable learning experience. I have gained a tremendous amount of experience working as a developer, and have built skills that will benefit me greatly in the future. If asked by another co-op student, I would highly recommend applying at Kenna. If given the opportunity, I would strongly consider returning to work there again.

Acknowledgements

I would like to thank all of my co-workers at Kenna, especially my team lead, Ilan Timsit, as well as my supervisor, Mahesh Pantangi. I had a very beneficial co-op work term experience, and they all contributed a lot to help make that happen.

I would also like to thank all of the people who help manage the Bachelor of Computing co-op program at the University of Guelph. Their advise and assistance is what allowed me to initially obtain a co-op work term in the first place.