Hi everyone! My name is Calvin and I’m currently a rising senior at UC Berkeley studying Computer Science and Data Science. I’ve been working with Glific as a front-end engineer intern over the past 8 weeks or so, and I’ve learned a whole lot along the way. Let me tell you a little bit about my time with Glific!
How it all started
At the end of the school year, Audrey, a friend of mines in Cal Blueprint (a UC Berkeley club focused on developing software pro bono for nonprofits), mentioned this opportunity to work alongside a long-time friend of hers, Lobo. I immediately reached out to her with my interest and I scheduled a chat with Lobo to discuss what the project is all about and what my role would be with the team. It was refreshing to hear that there were other opportunities outside of Blueprint where I could once again develop software to help a variety of nonprofits, and I was incredibly excited to get started.
The technical work
Over the next couple of weeks, Lobo made arrangements for me and Cindy (another intern) to get onboarded with the Glific team and learn about the technologies that were being used. I hadn’t developed with Typescript, Apollo GraphQL, Elixir, or Jest/Enzyme frameworks before, but luckily YouTube was around for me to do a little bit of self-studying. I spent the first few days of the internship watching tutorials and developing on my own and eventually ramped up to working on small tasks with the Glific platform itself. It definitely wasn’t easy at first (Typescript was incredibly annoying to get used to), but over time found my footing from different examples in videos and the codebase. Now, it was time to take on the real tasks.
From this time (week 2?) to the end of the internship, I was getting started with bigger issues and taking more ownership of parts of the platform. I could see myself learning and developing quicker and smarter, and I was consistently able to learn and get feedback from my peers at our different standups. I took a lead on developing a few tasks, consisting of the server-side pagination tables, speed sends and template chat UI shortcuts, rich text editor, search functionality, and others, where the framework of different tasks became turning different back-end endpoints into usable user interfaces/features.
Through the internship, I felt like I definitely had a lot of support from the rest of the Glific team. I could always ping Kurund for better guidance through different confusing front-end tasks and Lobo whenever some back-end issues were becoming real head-scratchers. Our team’s structure also allowed for a lot of flexibility as well. Since we had a couple of days or so to finish different larger tasks, it allowed me to spend a lot more time outside with family than I would’ve had working in the office. I was able to push my work schedule to later in the day (work afternoon to night) so that I could spend my mornings with my family out hiking or hanging out.
The tasks themselves were also incredibly interesting work. A lot of these tasks were functionalities I had never developed with before (overlaying conditional divs, server-side search/pagination), and it allowed me to explore and grow my expertise I could not have been able to otherwise. Now, if I ever face these challenges again, I’ll know what to reference back to whenever I need help.
What did not work
For the most part, I think independent work was a huge plus. However, there were times when I felt that a little more structure might go a long way. For example, one issue I faced, which was much more my own fault, was the fact that a flexible schedule and later work hours meant I would often find myself working until our standup, without taking a break to eat with my family for dinner. I did feel a bit burnt out at nights when this happened, as I would finish working at around 10 pm, and maybe a little more scheduled structure might’ve helped me derive a better work-life balance (though, again, this is also my responsibility in the first place).
Another component that might’ve worked better was also related to independence. Though there were many tasks I would have been able to ask for help with, there were a few where it was difficult to reach out for help with. Since they were very niche/specific to certain package behaviors, it was hard to get help from anyone outside of StackOverflow or the package maintainers. I felt this with a particular issue when I worked on integrating DraftJS to develop a rich text editor (inline styling for bold italics, etc.), and definitely felt at times that another pair of eyes and expertise might have helped me get a better handle on how to scope the best packages to use and the best ways to use them. However, it all ended well in the end, and I’m happy to finally see it fully-functional and working in the codebase.
This internship experience was definitely a little bit more unorthodox than I think most might’ve been. Last summer, I had worked at Zenefits, a much bigger startup, and though they also embraced me into the team, I think I really felt much more connected with the rest of the front-end team at Glific. Not once did I feel like an intern vs. the rest of the team, and not once did I feel like I couldn’t contribute just as much or wasn’t asked as much of as the rest of the team. I think this lack of orthodox structure let me really understand what it’s like to work as a full-time, remote front-end engineer, and gave me a better understanding of what the different use-cases and benefits Glific can provide towards these NGOs with a variety of different communication scaling issues. I’m proud to have worked and learned alongside a light-hearted team always ready to crack jokes at standups, and I can’t wait to see what else lies in store for the rest of the team and the platform.