BigCommerce Employee Spotlight: Brian Davenport
Welcome to the BigCommerce Employee Spotlight. Each month, we’ll chat with an employee who works on the BigCommerce product. These are the folks behind the scenes who are crafting the BigCommerce developer experience, from SDKs and APIs to themes and documentation. Discover what they’re building, their tools of the trade, and learn about the technologies they’re passionate about.
We talked with Brian Davenport, Senior Product Support Engineer at BigCommerce, to learn more about the projects he’s working on and how he’s leveled up his workflows while building new tools for the support team.
Hi Brian, tell me about your path to BigCommerce.
I got my start in tech from experimenting with game development toolkits and writing some simple text adventures on my graphing calculator when I was bored in school. I also had experience using software to produce music.
Most of my previous jobs were in retail. When I applied to my first tech support job, I naively thought I was pretty good at using computers. Solving problems in that job often involved “turning it off and on again”, but the experience I gained was valuable. I learned how to use different troubleshooting tools, made a habit of referencing documentation during the troubleshooting process, and found myself in situations where knowing more meant you could go further for a customer. That experience forced me to think about my skills more critically. There’s a big chasm between being good enough to do IT support for the family versus working as a tech professional.
I joined BigCommerce after answering an online ad seeking a Technical Support Representative. After several years I worked my way up to Senior Product Support Engineer.
Do you have a formal education in programming or are you self taught?
I don’t have any formal education involving computer science. I spent a few years in college pursuing a degree in Psychology but never finished. Instead, I decided to do something reckless and moved to Austin to start a band.
Most of my big leaps in learning have come from being confronted by unique issues and hacking my way to a solution. As an example, there have been times where a store’s catalog is in a bad state and needs to be updated programmatically, necessitating a script written around the Catalog API. Due to the volume of requests being made, I had to learn how to script API calls concurrently rather than serially to avoid running a script for hours/days at a time.
There are a few specific resources that ramped up my understanding dramatically. When I was first learning JavaScript I found myself stuck connecting the dots between writing logic and manipulating the DOM. The content in the book JavaScript and jQuery was very accessible as a beginner, and the examples and illustrations were laid out in a way that made it easy to understand, even when I was away from a computer. The Udemy course JavaScript: Understanding the Weird Parts helped me take advantage of some of the more advanced aspects of JavaScript and helped me recognize the utility of reading the source code of different libraries and modules.
These days I spend more time reading developer documentation than taking specific courses. Being able to even understand documentation was a milestone in itself. One day the sum of my experience clicked in the right way and I was able to take advantage of documentation — without consulting assorted blog posts on every concept. Although I still do this whenever I’m stuck!
What do you work on as a Senior Product Support Engineer (SPSE) at BigCommerce?
As an SPSE my work varies day to day, but generally, I work on Enterprise store issues and requests. These cases are technically complex and require research and expertise outside the typical support scope. A lot of my work is around developing scripts and tools to solve specific problems, and being available as a technical resource to discuss complex integrations with Enterprise merchants and their developers.
Whenever we encounter bugs in the software, either through support channels or discovered independently, I document the symptoms and reproduction steps in JIRA. Then I triage the bug report based on whichever engineering team is responsible for the affected area of the platform. In addition to reporting bugs, I also fix them depending on the engineering resources available and the severity of the issue.
Beyond troubleshooting and development, I also coordinate with the product and engineering teams around new features. I help develop support processes for new features to ensure we’ve provided our agents with the knowledge and training they need to be successful.
What projects are you most passionate about working on at BigCommerce?
Right now I’m adding features to an internal support application. The app has become an interface for scripts we’d previously run from the command line. It initially retrieved SSL certificate status and configured certificates for stores, but we’ve added features to clean store catalogs, review tax calculations, and manage a Slack bot.
Originally, our app was monolithic, using Node/Express with deeply coupled components. We’ve shifted to a more modular approach, using Go to power APIs that act as an interface around multiple services. This project represents a few firsts for me: porting a script from Node to Go, designing a database and using the data to generate reports, and building a full scale React app. I get to learn more about full stack development and help the support team at the same time!
Tell me about the codebase that you work in. What is the tech stack?
Right now I’m working with an app that runs off multiple containerized services, proxied to different ports on an nginx server. The back end services are written in Go and provide resources that are accessible through an API, which is consumed by React on the front end. The APIs are wrappers around a mySQL database, a BigCommerce API client, a client for our SSL certificate provider, and a server to post messages through a Slack bot. To make it simpler to set up the HTTP routes, we use the Gin web framework for Go.
I’ve been prioritizing building more reliable back end services, but I still want to provide a decent UI and experience on the front end. To expedite front end development, I use react-bootstrap as a base for the front end components and make small changes to customize the CSS.
You’ve been a regular contributor to the BigCommerce Dev Blog. Tell us about the process of putting together tutorials for our Developer Community.
For my first post, Build a Bulk Order Form using the BigCommerce Storefront API and React, was inspired by a feature request I heard from merchants while I worked in phone support. Prior to the release of our Storefront Cart API, adding multiple items to the cart with one button involved making a series of AJAX calls for each product selected. This wasn’t an ideal experience since a customer would have to wait for all the requests to complete.
The release of the Storefront API meant this project I had in the back of my mind was possible. I proposed writing a tutorial for the Dev Blog, even though I’d never written a public-facing how-to article. I made a commitment to build and write about a project I cared about, which helped keep me motivated throughout the process.
My first step was to sketch out what functionality I wanted from the bulk order form and how I wanted it to look. I used pen and paper to write out my objectives and draw a general layout with the main details I wanted to present on the front end.
Next, I built the form itself and iterated over my work until I was satisfied with the functionality and appearance. I had a vague idea of how I wanted to split up my code for the article and used Git to keep track of each part I developed.
I began writing with an opening statement demonstrating the value of building a bulk order form. Since I already had working code, I swapped to the commits I had labeled by section and copied code snippets into my draft based on where they made the most sense in a step-by-step project. To make sure I hadn’t skipped any important parts, I followed my tutorial and re-built the bulk order form app from scratch to make sure it still worked. At this point, I had a complete draft and working example, but getting feedback is important. I want to ensure the language was clear and the steps made sense.
I reached out to employees in our Product Support Engineering, Learning and Development and the Developer Relations teams to review my work. It was valuable to receive feedback about sections where others struggled or needed clarification. After incorporating the suggestions of my colleagues and confirming they could complete the tutorial, I was confident in my work and submitted the post for publication.
I’m currently in progress on my next post — a tutorial on using a serverless function to proxy the BigCommerce API.
We’d like to thank Brian for his time and giving us some insight into his role at BigCommerce. Look for more content from Brian here on Medium.