This summer I was lucky enough to work as an intern at Redfin Solutions, LLC, a Drupal web development company in Portland, Maine. I came in with only some experience coding in Java, but my goal for the internship was to gain experience in new fields. I’d consider this task accomplished, as now that I am nearing the end of summer I can confidently say that I’ve gotten introductory experience with:
- Basic UNIX Command Line.
- Using Git for version control in a professional environment with multiple contributors.
- Running security updates on numerous live commercial websites.
- Navigating and retrieving data from multiple mysql tables.
- A crash course in Drupal sitebuilding.
- Basic php usage and utilizing proper syntax.
- Writing numerous custom drupal modules with functionality including utilization of outside libraries and APIs.
- Creating a dashboard for internal monitoring of multiple other websites.
- Creating a client facing dashboard that securely displays important information.
Before this summer, I had never worked with command line, and didn’t understand it’s advantages over a traditional interface. After making flash cards of a few important commands I gradually became more able to navigate the structure of my computer. At first this method seemed antiquated, as the regular GUI seemed perfectly functional, but the more I used the command line the more convenient it became. I started to understand how using the command line can not only be faster, but it can bring you directly to where you need to go and give you tons of possible actions without cluttering the screen with superfluous options.
My biggest challenge in mastering the use of Git for version control was understanding merging versus rebasing and when to do either. I found that the most effective way to get the hang of it was to start by going over the concept with the help of the other Redfin employees, Chris Wells and Patrick Corbett, using visual representations and applying them to multiple scenarios. What really drove it home for me was actual hands on practice, where I had to apply readings and information to actual projects, and if I made a mistake I would have to figure out how to fix it with the tools I had. On top of this, there was the necessity to make my contributions clear and neat since I wasn’t the only one working on the projects there.
It’s pretty daunting to log into a real running website and have to run a security update without messing anything up. I do think it was really valuable though, as I got to see the insides of some active sites and make live changes to patch up security vulnerabilities. Running security updates on multiple sites was especially valuable as I had to take into account how some sites were structured differently or ran on different Drupal builds. While I did run into some issues with certain sites, I learned from them and didn’t make the same mistakes twice.
MySQL was my first exposure to databases and how to work with them. I started with basic viewing of databases and from there went to individual tables and how they can relate to one another. Then I got into utilizing the data from multiple tables using joins. I was able to take this joined data to construct a useful interface that displays important data more conveniently and with more readability than inside the database. The experience I got from this kind of basic usage and utilization will definitely prove to be useful on future projects.
Before this internship I had no idea what Drupal even was. Over the course of the summer I was introduced to sitebuilding using Drupal and many full sites that run off Drupal. Now I feel as though I have an understanding of how to navigate and work within a Drupal site and even though I don’t know every single facet of the platform, I am confident that I can at least figure out what it is I don’t know, which is the first step to figuring something out. Drupal was also my first introduction to writing code in PHP.
After knowing some Java, PHP was an attainable challenge, since even though the languages aren’t exactly the same, any code experience is useful in learning a new language. After spending a day figuring out the basics of PHP, I started using it to write custom Drupal modules. I had to combine online resources with what I had learned to create something practical, which I really enjoyed. My code was reviewed by a supervisor, Chris Wells, who showed me proper syntax and encouraged more clean coding techniques. This was a massive help, as my code went from being functional but sloppy to being both functional and efficient. Writing these custom Drupal modules got me to not only practice this, but had me utilize APIs or libraries that I wasn’t familiar with, introducing me to new coding techniques along with having me further explore Drupal’s functionality.
One of the purposes for a module I wrote was to create a dashboard for internal use, allowing Redfin to monitor sites that require updates for installed modules. This was invaluable as I got to create something that was practical and would actually be used. This was a great time to take everything that I’ve learned conceptually in school and over the course of the internship and apply it to something useful in the real world. I also went on to create a client-facing dashboard which allows them to monitor their sites and services related to those sites, such as monthly maintenance or new features. By doing this I had to make sure users could only view the correct content for their profile, and securely handle client information. This is very important for experience with real data, and managing it correctly.
The 350 hours I spent interning at Redfin Solutions this summer were extremely beneficial. I got to work with coworkers who were helpful, and encouraged me to solve problems on my own. I came to Redfin for some experience, and I left with that and more. I’m really excited to take what I’ve learned and bring it to future projects. I couldn’t be more grateful for my time there.