Quick Facts

Position: Developer Co-op

Company name: Ericsson

Company location: Mississauga Ontario

Company field: Telecom

Technologies used: Jenkins, Groovy, Python, Bash, WSL 2

Introduction

My co-op work term at Ericsson, from January to August 2021, has been incredibly exciting and challenging, and rewarding. Working in such a large organization in the telecom sector has been a fascinating insight into an industry which I didn’t know much about earlier. Of course, there are also important common needs that customers have; software needs to be performant, reliable, customizable, easy to use and (increasingly) cloud native. Seeing how we continue to serve and exceed our customers’ needs has been interesting both from a technical and personal perspective. At certain times, this term was also quite challenging. Covid-related changes can make coordination difficult, especially when working across time zones, not to mention the impact on my personal life. In the end, these factors made certain targets, such as my personal learning goals for the semester, difficult to hit. Although this isn’t ideal, I think it gives me direction for the future. I’ve also become more aware of the areas where I can help my team the most, and I learned to focus my knowledge on those areas. By matching these with my team’s needs, I can make contributions which are helpful and appreciated.

About My Company

Ericsson is a Swedish multinational company in the telecom sector, founded in 1876. Originally a telephone repair company, Ericsson soon started building its own telephones and network equipment. Today, Ericsson offers a wide range of infrastructure, software and hardware to customers, including business support software (BSS), which my team was working to support over the course of my co-op. Working at Ericsson was a very interesting experience for a couple of reasons. Firstly, with offices in so many countries, it was a great chance to meet and work with people from all over the world. On my team, I had some coworkers from Brazil and India, and it was interesting to hear their perspectives and about their lives, and all the things we had in common, and the ways in which we could help each other. It was also interesting to work in such a large organization, with a longer-term view and goals. We needed to make the best possible product, to help our customers not only now or in the near future, but for years to come.

About My Role

As a software developer co-op working in automation, my primary tasks revolved around developing, maintaining and improving continuous integration pipelines and the software libraries that they were built on. I think describing the vision behind a CI pipeline can sometimes be a little clearer than abstract definitions to someone who might not be familiar with the terminology: we would like a technology where a developer can upload a particular section of code that they were working on to a remote repository, and this code can be automatically retrieved, tested, packaged, scanned, and prepared for future use, while also giving the developer feedback based on the results of the tests. These pipelines provide value to development teams, through greatly speeding up and standardizing the testing and building of software. When a developer uploads their change, they can check the result of these pipelines and make sure they don’t merge any code that might cause issues. After the code is merged, other pipelines can confirm that the change didn’t break anything, while also packaging and uploading a new build of the software, which can be taken and used.

Learning Goals

Going into this co-op term, I set several learning goals for myself, based both on my own personal experiences as well as the needs of my team. Some of these goals were more technical in nature, and others related to interpersonal skills.

One goal revolved around managing my communication and work-life balance while working entirely online, which was a challenge for me in the past. I think these themes were also emphasized throughout the company, even with an MS Office extension being made available to help us monitor and manage our time at work. When I started this goal, I was a little concerned about my ability to focus and work on my tasks, because I found I was frequently context switching from mass emails and messages, which were not necessarily high priority for my team. By making use of this extension, I allocated some time throughout my day to focus on my tasks. Although my productivity improved, I found it more difficult to provide the level of support my team needed. This also helped me realize that the actual work I do throughout the day is not only measured through my tasks: I also help answer questions, support people using the technologies that I work with and contact other teams to coordinate work, and these are valuable contributions as well.

I also made a couple of goals related to technologies which my team used, and which I thought would be good to learn. One of these goals related to improving my bash scripting abilities, and another was learning about Kubernetes. Both technologies are commonly used in CI pipelines and are not specific to Ericsson, although many of the tasks in my team involve did using them. By learning more about these technologies, my goal was to be able to better support my team with more types of tasks, and to develop my general knowledge as well. However, there were also challenges with this learning goal. While I learned about bash scripting both through tutorials and tasks, I found that while it was helpful sometimes, it was not necessarily what my team usually needed the most from me personally. This is because I was acting as a go-to person on my team for two internal technologies by that point, which were written in other languages, and much of my work revolved around maintaining, improving, and helping people with our integrations of these technologies.

I think out of all the areas of co-op I experienced so far, my performance on my learning goals was by far the weakest. Of course, I’m not thrilled about this, although I learned a lot even from my failures in this area. I think maybe the most important lesson I can take away from this is that while I can study many interesting technologies, the most important goals are often the ones that would help me provide more of what my team needs from me. In the future, I will for sure start in this direction when setting goals to improve myself.

Experiences

One of my favorite aspects of this work term was that I could really be part of the team right from the beginning, instead of being separated as an intern. Of course, I wasn’t necessarily on the same level of knowledge as my team members, and I did need to spend time learning and improving. One of my first tasks involved working on a common software library, which could be used across many of our pipelines. The library needed to be refactored, with the code translated from one language to another. While this was quite a challenge at the start considering I didn’t know either language, I learned a lot by the end and was able to successfully finish the task. I also learned about how I could take this asset and really support it, and over the rest of my co-op term, I would always improve it and help other teams implement and use it.

I also made many technical mistakes at the start, which were tough for me to fix at the time, though a great learning experience. For example, I had some technical issues when deploying my first task, and I had to work extra hard to support and fix them. Of course, this was somewhat predictable when working on a section of code which was used in so many places. Although this was really quite stressful, I learned a lot about the underlying technologies, and developed a more detail-oriented mindset which I believe will be helpful even in the future.

I also had the chance to work with another team, located in India on migrating from one version of an internal software to another. This was a great learning experience when it came to working with different cultures and time zones, and on supporting and managing priorities between multiple teams. Specifically, I could take my knowledge from my team and use it to help and support my work on the other team, while also bringing back my experiences from the new team to support my original team, and even gathering feedback which could be used to improve the transition. Of course, I had many more interesting experiences than I can write here, but I hope this was a good overview.

Relation to Acedemic Studies

Over the course of this co-op term, I found several places I could apply certain concepts which I learned in my Operating Systems and Software Design courses. Since my role involved working with linux extensively, I found this knowledge really useful for completing my tasks. At the same time, I think it may have been useful for me to take a cloud computing course before starting this position, because our underlying software ran in Kubernetes, and my team found it a major challenge to work on these projects due to a lack of knowledge.

Conclusion

My work term at Ericsson was a great, interesting and challenging one. I’m especially grateful for the opportunity to work with such a diverse group of smart and talented people from around the world. While at the start of my work term I didn’t have a lot of knowledge about Ericsson or about the technologies I worked with, I learned through my mistakes, and through my goals how to focus on my team’s needs and support them in a way which leads to the greatest positive impact. There are always things which might not go as well as we would like: through this term it was my learning goals. But when I think about the ways that I started to support my team, and that my contributions were really appreciated and valued, I realize that in the end I still learned something perhaps even more valuable than I initially expected.