Hello, folks. I'm TJ Rugg, a computer science student at the University of Alberta entering my final year. I spent summer 2023 on an internship/practicum here at Bridges of Love, wherein I was responsible for rewriting the onboarding process for FEPI and creating the Alberta Recovers and Crosswalk platforms. My last day here is tomorrow (August 18th), and so I decided to write about what I've accomplished and learned here, and how we have expanded Bridges of Love's charitable mission this summer.
Working with a Humble Nonprofit
My experience this summer was definitely shaped by the Bridges of Love workplace setting. Most computer science internships take place at large tech/software companies, working in a corporate environment with hundreds of coworkers, complicated chains of command, entire teams set up to manage yearly internships. Such an environment is certainly useful for getting "industry" experience, but it intentionally avoids placing any trust on the individual intern and gives them little opportunity for them to work independently on projects. It's easy for an intern to get "lost in the noise" of such a setting.
Conversely, I was the member of a small team of 3, and the only individual here at Bridges of Love with knowledge of modern web development. This meant that I was the one planning and spearheading the projects I worked on. The entire team collaborated on the conceptual and testing stages, but I was solely responsible for the actual development of these projects. Rather than being assigned to "safe" menial tasks, I had a lot of agency and responsibility over these projects, meaning that anything that went right — or wrong — was solely my responsibility. I am reminded of the motto behind Bridges of Love's current initiatives, "moving at the speed of trust"; I definitely felt like a lot of trust was bestowed in me by my supervisors, and appreciated them giving me this faith and confidence.
Though I won't deny that I felt a lot of pressure to be given such responsibilities without much past workplace experience, I do think it was a very valuable opportunity for my professional development and for Bridges of Love. The nonprofit setting certainly presents unique challenges. We work off of generosity and grants, and often have to communicate with community members and religious organizations who might not understand our mission. This environment is one that creates a lot of uncertainty, but also a lot of room to get involved and to express our values. And of course, on a moral level, I felt personally enriched by the work I did here: rather than an emphasis on profitability and costs, a charitable nonprofit's focus is on doing good for our communities. It's certainly satisfying to see a project come together and know it'll do good work to help people in need!
The Development Experience
Having to oversee entire projects from beginning to end has certainly developed my all-around skills. I've had to learn a bit of front-end, a bit of back-end, the intricacies of various APIs and web protocols, best practices for security and usability and speed... It was a bit overwhelming at first, and I definitely made some mistakes that I had to fix along the way, but the lessons I learned in the process will stick with me through the rest of my career.
From a more pragmatic viewpoint, the fact that I occupied a technical position that would not be renewed come September necessarily informed a lot of my design decisions. My priority was on creating a codebase that would not need to be actively maintained by an experienced programmer; I had to make sure things "just worked" for the Bridges of Love team without needing to make regular revisions to the code.
In particular, these practical considerations meant that, rather than building a website from scratch using a conventional front-end framework that could be self-hosted, I chose to continue working off of Bridges of Love's existing Wix website that they knew how to maintain and revise. As a consumer-oriented website builder, I knew that working off of Wix would make it easier for Bridges of Love to maintain my work in the future. Of course, this meant learning to use Wix's environment, including working within its APIs and development limitations. I never knew how much I took jQuery for granted until I had to adapt to Wix's proprietary API! The process was overall smoother than I expected, though — Wix's Velo system is actually more versatile than you'd think, and I never felt significantly held back by it. It is also thankfully quite well-documented.
A big focus of mine was keeping everything simple, secure, and maintainable. I wanted to create platforms that Bridges of Love partners could depend on, rather than feel intimidated by, and that ensured users felt safe and assured relying on us to handle their data well.
Getting people to reach out to ask for help is more difficult than you'd think; in our oft-prideful society, a lot of people feel guilt or shame at asking for help, even if they really shouldn't. So I tried to make people feel as safe and confident as possible in asking us for assistance. On the other hand, making donors and volunteers directly aware of where their donation is going is important. This is the defining philosophy behind Alberta Recovers: people are more likely to donate if they can see what their donation is going towards, and know how it'll benefit a community member. It was difficult at times to reconcile these two design goals: making it clear where one's help was going, but also keeping identifiable information securely hidden away. I think we've come to a good balance.
In keeping with this philosophy of making the platforms safe and approachable, I had to consider solutions to potential malicious behaviour. Requests are user-submitted but publicly listed, so a bad actor could try to take advantage of the platform. Getting around this required multiple diverse countermeasures: a CAPTCHA system, filtering process, approval process, and report system, among others.
Naturally, doing so much diverse work requires having fairly extensive documentation of what I did, so that it can be used, maintained, and carried forward by Bridges of Love. I wrote up a fairly extensive and detailed Operations Manual (almost 40 pages!) outlining everything needed for Bridges of Love to interface with my work. This was quite the project to compile, but good technical writing is invaluable to keeping things running smoothly and reliably, so I think it was worth the effort.
There is much more I could say about the development process, but I won't bore you with too many technical details. To summarize, a lot of considerations were involved in making my work simple, maintainable, secure, and approachable. While I had the advice of the Bridges of Love team in this, many of the solutions I came up with were novel, designed and implemented entirely by a one-man team. Getting to work with such diverse issues and considerations has definitely made me an all-around better developer, and more prominently, has benefited and expanded Bridges of Love's mission to allow it to continue accomplishing great things for the community.
I am very grateful for my summer experience here at Bridges of Love. Working in a small team at a nonprofit is definitely a different experience than most computer science internships, and I sincerely believe it has helped my personal development significantly. But, more importantly than that, it's allowed me to give back to my community by contributing to Bridges of Love's charitable initiatives and good work. This has been an incredibly fulfilling experience on a personal level, and I know Bridges of Love will continue strengthening Albertan communities in my absence.