I worked at D2L’s Kitchener office as a software development co-op this past winter. Before coming to D2L, I mostly worked on small-scale prototypes at my previous co-op jobs. Coming to D2L was a complete change for me due to the massive scale of Brightspace, D2L’s main product. With millions of daily active users, Brightspace is definitely the biggest product I have ever worked on! Classes are helpful for teaching the basics, but my industry experience at D2L opened my eyes to new software development challenges I had never considered in my class projects.
Without further ado, here are 5 invaluable development concepts I learned from my time at D2L:
Maintainability is the idea that your code needs to be used and updated for much longer than you are working on it for. Working in a team is much different than a solo assignment because other members will be reading and adding to your code! Brightspace is a product that is constantly evolving and serving new use cases, like Higher Education, K-12, and corporate learning. This means all the code I wrote during my co-op is now being used for 3 types of learners simultaneously. I learned to build code that will last, but will also adapt to future challenges and business needs.
Testability means ensuring that your code is not only covered by tests, but it is also easy to write and maintain any tests on your code in the future. D2L has an awesome system that will auto-run tests for your code, called a continuous integration framework. This speeds up development because a computer can verify that the product is working with your new changes by running tests. But you need to write tests as well! This was not a big topic at school, but you need to make sure your code is testable, and your tests can cover all the possible paths in your code. D2L makes the testing process simple, but it’s still up to developers to make sure they are taking advantage of the continuous integration framework, and writing software that can be tested thoroughly.
A common saying I hear often is “don’t reinvent the wheel”. I had a hard time grasping this when I was working on smaller scale projects because I was working alone. D2L has over a hundred software developers, so there is a breadth of knowledge to learn from at the company! When I was writing new code, I was able to reuse components and strategies that other teams had created, totally streamlining the development process. I also got to work on standard components that will be reused by other teams in the future.
When you are writing code for a school assignment, the magnitude of your inputs is usually very small. But in the production world at D2L, Brightspace needs to accommodate giant inputs extremely efficiently, to serve clients quickly. During my co-op term, I worked on the core file system. One of our biggest challenges was ensuring a quick delivery speed of files to all users, no matter the size. I had to leverage academic concepts such as Big-O Notation to optimize my code for time savings.
This is one concept I could never understand in my classes because the scale of D2L is really unparalleled to that of any individual projects. It’s hard to picture millions of users using Brightspace at once, and it’s even harder to conceptualize the scalability issues that come from it. Scalability requires that the product works when there is one tester, and when there are millions of users. During my co-op term, I got to tackle interesting problems like concurrency and load management.
In conclusion, D2L is an awesome place for co-op students to leverage the skills they learn in school, and apply them to real-world challenges for millions of users!