IBM Watson Health Imaging

Software Developer

May 2018 – Dec 2018

Introduction

Welcome to my personal website which includes summaries of my co-op work terms I have completed as I work towards my computer science degree at the University of Guelph. During my third Co-op term I worked at IBM Watson Health Imaging and I hope to provide you with an overview about the company as well as my impact and what I learned as a Software Developer intern.

About the Company

IBM Watson Health Imaging is a division of IBM that was formed from the foundation of the Merge Healthcare company which IBM acquired in 2015 for $1 billion USD. Watson Health is a leading provider of innovative artificial intelligence, enterprise imaging and interoperability solutions. All seeking to advance healthcare. Merge's technology platforms are used at more than 7500 U.S. healthcare sites, as well as most of the worlds heading clinical institutes and pharmaceutical firms. The goal of this technology is to teach IBM Watson to "See" Medical Images. The main product I worked with during my term is called iCA (i Connect Access) which is a diagnostic imaging application.

Job Information

I joined the automation development / software testing teams in may 2018 and spent about 50% of my time working with each team. The automation development team was composed of myself and 2 others as well as an offshore team that was working on separate components of the same program. Our role was to automate the testing of the iCA. The tools used for this development was a C# console application that we developed the automated tests in. I had a development environment with the latest version of iCA installed as well as a client machine that the tests were run on. We used Smart Bears technology called Test Execute which is an API that helped us interface with the web application and automate the steps in the test cases we developed. We used a software called Jira to keep track of our tasks and record progress of the development. We also used another application created by Smart Bear called QAComplete to create and manage the tests as well as keep track of the execution results of those tests. The other role I had was manual testing the final release of the 7.0 Version of the iCA software. This consisted of a larger team of about 10 people whose goal was to insure the release version of the newest software was ready for production. The process we took to test the software consisted of running through test sets that were created in QAComplete and executing them on the latest build of the application. This process is extensive and one of the goals of the automation team is to lower and hopefully one day eliminate the need for manual testing. Each week the teams would get together and discuss progress of the project as well as any questions, issues or concerns regarding ongoing or future tasks. This was a very efficient and informative way of keeping track of each person's progress which helped management's ability to plan the overall completion of the project and move things around to help everyone work to the best of their ability. The main skills I required to be successful in this job was to be able to learn quickly, ask questions about features or procedures I was not familiar with, and a strong background in development and testing software. I have been working on all of these skills during each work term as well as my semesters at school.

Goals & Learning

I set out 3 goals for myself at the beginning of my co-op term to be able to measure my progress and success in my role at the company. The first goal I created for myself was to develop a deep understanding of the software and technologies used in my teams. I believe I developed this goal each and every day as I consistently worked with new features of the application which resulted in a greater understanding of how the software worked as a whole as well as how each feature of the application worked individually. The aspect of my role which contributed the most to this goal was the manual testing of the application. I learned how each feature worked as well as what to test in order to ensure the feature is working correctly. I also learned a lot about how test automation software works. More specifically I learned the process of how to automate a test as well as what technologies are required to automate work. This is a skill that I am very happy I was able to learn and believe has a lot of value in a variety of industries as a developer. The exact automation software we used was not very important but the way we interfaced with the software to get the results we needed are things I am very glad I learned as a result of my goal. The next goal I set out for myself was to further develop my team working skills and ensure that I was always working in a positive learning environment. This goal was important to me as I believe it is essential in learning throughout the work term. This goal was developed through communicating in various mediums with members of the team. Furthering this skill is important to my success in the future because people work best in environments that they feel comfortable in and overall produce better results. Some of the technologies I used to work on this goal was IBM's internal email and messaging application called notes which allowed me to connect with teammates at any time. I also frequently went over to my coworkers desks to discuss work in person which helped develop my connections and communicate ideas in a stronger way. I was successful in this goal because by the end of the term I knew exactly who to speak to so I could get the best information possible. I also found that working with my coworkers more closely allowed us to solve problems faster because we had more heads working together. The third goal I created for myself was to work on learning the language of the technologies I was using in order to communicate with coworkers at a more indepth level. At the beginning of the work term I felt overwhelmed with the amount of new words and acronyms used to talk about the product and workflow which made some things feel unclear at first. I made it a goal for myself to be fluent in the product and technologies I was using in order to better communicate and understand others when talking about our work. Medical software is something completely new to me and a large amount of the tools had names that were foreign to me which made it harder to talk about the software. For example DICOM tags and the CINE tool were just words without meaning to me. I ensured that I wrote down everything I wasn't sure about whenever I learned new things as well as keeping notes of how certain tools work and how they are configured. This allowed me to have notes to refer back to as well as giving me the ability to google certain things at a later time and become more familiar with them. I believe I was successful in this role as I felt comfortable talking with anyone about aspects of my work and felt I was able to communicate smoother and talk more specifically about features we were using. This is an ongoing skill that I will continue to improve as I work with new technologies.

Conclusions

One thing that I have thought about as I complete this work term is being able to compare and contrast the companies that I have worked at and learn what are the specific similarities and differences they have. This allows me to bring new ideas to future employers when I find something a company does really well. It also allows me to learn more about myself and what type of job I want in the future and what type of career path I want to take. Another thing that I am glad I can take away from this experience is test automation development. I have learned the importance of automation and how it is making the lives of people easier as well as increase the amount of tasks that can be completed in a shorter time. I also learned the importance of rigorous software testing before releasing a product. It takes a lot of resources to completely test a product and have a high confidence that the product will perform well in the real world. Overall I am happy with the outcome of the work term and feel I accomplished a great amount in the short few months. I learned a lot about the company and the people who create the products within it.

Acknowledgments

I would like to give a special thank you to Kamran Ahmed who was my main mentor and was very involved in my learning during the work term. Kamran was the project lead of our development team as well as a key member of the manual testing team. He is very knowledgeable and made learning my tasks much easier throughout the summer. His explanations of the projects as well as his overall understanding of the software resulted in a enjoyable experience and kept me feeling like an important member of the team. I would also like to thank the entire manual testing team who were extremely friendly and welcoming to me during the project. We were able to collaborate greatly together and share new information on a daily basis. Working together with a large team and completing the manual testing of the entire application was a satisfying task and left everyone feeling accomplished after it was completed. I always felt like I could ask questions to anyone I worked with and knew they would be able to explain or assist in any road blocks I encountered. I learned a lot about both the products and the company during this work term and am grateful for the opportunity to work with such a talented team.