Reflecting on My Time as Caktus' Open Source Fellow | Caktus Group
Reflecting on My Time as Caktus' Open Source Fellow

My name is Ben Phillips and I am Caktus' Open Source Fellow. As my fellowship comes to a close, I wanted to reflect on my time at Caktus and to share my experience and some of what I've learned here. First, however, I should probably share how I ended up here in the first place.

Initial Commit

Six months ago I was a biologist. That had been the plan all along, after all. It had taken me quite a while. I'd had to work as a barista, stream surveyor, machinist/welder, and mouse husbandry technician and to get a bachelor's degree in biology, but I eventually achieved my goal and found a job as a research technician in a molecular/cell biology lab. Unfortunately, as is often the case with the plans of mice and men (both of which, as a former biologist and mouse technician, I am qualified to speak about), there was a small problem. It slowly became clear to me that this was not what I wanted to do with my life. The research was interesting, but the work was not. I was at something of a loss until one day when, in the middle of a particularly tedious task, I began to wonder if I could figure out how to write some kind of program to help make my task a bit easier. Though it turned out that integrating a computer vision library into a program to track the movements of mice spinning in circles was a bit too ambitious for a first project, I had found something interesting and challenging that I really enjoyed. A few months later, I quit my job to enroll in The Iron Yard, a local code school, and soon found myself with the technical skills of a junior Python developer. Now what? The answer, of course, was Caktus.

Getting Started

I found out about Caktus when I attended the local Python developer meetup they host every month in the Caktus Tech Space and began to learn about them as a company and as people. I was immediately attracted to both the exciting work they do and their focus on giving back to the local and global community. After graduating from code school, I quickly applied to their fall internship position and after one of the friendliest interviews I've ever had and an anxious week or two of waiting I found myself joining the Caktus team as their new Open Source Fellow. The aim of my internship was for me to make contributions to open source projects I found interesting or useful, thereby giving back to that community, which is so vital to Caktus and to developers in general. Where does one start, however, with such a huge breadth of possibilities? For me, the journey began with Django-Treenav.

Contributing

Treenav is a project created by some of the Caktus team that is designed as “an extensible, hierarchical, and pluggable navigation system for Django sites”. As a fairly well-established, older project, Treenav provided an ideal starting point for me. Most of the work required was updating and removing deprecations throughout the project. With some direction from my incredibly helpful coworkers, I got into a flow of finding and updating deprecated areas of the codebase which, as a relatively simple but very important task, allowed me to quickly add value to the project and gain confidence in my abilities as a developer. It also helped teach me the fundamentals of contributing to a project: opening and responding to issues, making discreet and focused pull requests, having code reviews, and maintaining good communication. A string of updated deprecations and even a couple of bug fixes later, I was able to help publish the 1.0 release of Treenav which was a huge milestone for me. I had helped contribute to a tool that was available for people to use in projects all over the world. So cool.

Refactoring

My next project was another Caktus original: Django Scribbler. Scribbler is an application for editing and management of snippets of text and HTML on the front-end through a few custom template tags. I started out working on this project much the same as I did with Treenav, updating deprecations and the like. But with the guidance of my mentors and coworkers, I began to tackle more challenging work, such as fixing bugs and even starting to add some features, like support for multiple template engines.

Additionally, I took my first real dive into testing. I had gotten some experience with test driven development and writing tests in code school, but had never worked within an established test suite before nor had any experience with tools like Selenium, which was a necessity for such a JavaScript-heavy project. By far the largest task I undertook working on Scribbler, however, was revamping its module-loading/package management system. The project relies on a number of JavaScript libraries and when I started working on Scribbler these libraries were all managed with RequireJS. While I was working on updating some of the JS dependencies, we decided to migrate to using Browserify for that purpose instead. Throughout the process of this migration, I learned not only how to convert from RequireJS and an AMD style loading system to Browserify and its Node-style bundling, but I learned why that was a good decision for the project, observing the sorts of discussions and considerations that go into making such design choices for a project. RequireJS and Browserify accomplish much the same thing in very different ways and we had to decide which fit best with our project from not only a technical standpoint but also from that of a design philosophy. In the end, my work on the conversion had helped streamline the entire package management and build process for the project and, just as importantly, I understood why it was better.

Deployment

Everything I had worked on up until this point, though open source, had originated from Caktus, and an important purpose of my internship was to give back to the open source community at large— a purpose I strongly believe in. As such, while I was wrapping up work on the Browserify transition and a few smaller features for Scribbler, I began to look around for other projects I could contribute to. It was a daunting prospect and, to be perfectly honest, one that I was initially unsure I was ready for. However, as I began to canvas issues on projects and communicate with other developers and get positive feedback from my coworkers, I realized I had a lot more to offer than I had previously thought. There were issues I had experience with, discussions I could weigh in on, and bugs I could dig in on, figure out, and fix. The codebases were unfamiliar and often large and imposing, but I found I could understand a lot as I started to look over them. Before long, I had pull requests out on a number of projects, including some on Django itself. I often had to heavily refactor or completely rewrite my contributions based on comments I received, but instead of being discouraged I found myself actually enjoying learning how to adjust my code based on feedback and improving what I had written until it was something I could be proud of. There is a great sense of satisfaction that comes from that feeling of partnership one gets working with other developers on an open source project, just as much as there is in actually having content you wrote merged into a project and knowing you've helped make a project better for everyone who uses it. As of the writing of this article, I have had the privilege of having contributions merged into several projects, including Django Rest Framework and Django, an accomplishment that would not have been possible for me even a few short months ago.

Release Notes

My time here at Caktus has been brief, but so incredibly rewarding. With the help of my mentors and coworkers, I have made huge leaps in both my technical skills and my confidence in my ability to add value to projects. Beyond even those technical skills, by working with and watching the people here at Caktus I have begun to learn some of the even more important, if less tangible, developer skills. I have learned not to just fix problems I come across, but to dig in and understand them first, and to ask questions quickly when I'm stumped. I have also seen the importance of approaching development not just as writing code but as crafting projects, building a whole rather than a series of parts. These are the sorts of skills that cannot be easily taught, but the people working here at Caktus have been exemplary teachers and examples. You would be hard-pressed to find a more knowledgeable, helpful, and friendly group of people. At no point in my internship did I ever feel like an intern. Everyone always treated me with respect as a true developer and member of the team, and I will always appreciate that. As my internship comes to a close and I look towards my next steps, I know that I will always look back on my time at Caktus with fondness and gratitude. I have learned so much and am a stronger developer than when I started. And I have gained a love for open source that I doubt I will ever lose. I have developed new skills, new tools, new confidence, and new friends. So if you are considering an internship at Caktus, I cannot recommend it enough. You'll never regret it.

Download Shipping Faster: Django Team Improvements
blog comments powered by Disqus