VividCortex is hiring a

Software Engineering Intern

Charlottesville, United States

Founded in 2012 by noted database experts, and backed by major venture capital and high-wealth individuals, VividCortex is headquartered in Charlottesville, Virginia with a remote team in Montevideo, Uruguay. With more than 750% year-over-year growth, VividCortex is a company on fire!

About VividCortex

VividCortex is a modern database monitoring platform that gives developers and DBAs deep visibility into the database. Our solution is delivered as software-as-a-service and helps our customers see and analyze the work their databases are doing in great detail. It addresses critical pain points in measuring and managing today's large, distributed, diverse storage tiers composed of multiple different clustered products, all working together.

We have a fast-growing customer base of well-known companies, and a tremendous reputation in our market for delivering a high-quality, innovative solution for database performance problems that are common in tens of thousands of small and large organizations.

About The Role

VividCortex is looking for bright, motivated software engineering interns to help us build and improve our platform and web application. Your exact role would depend upon your skills and experiences, but the software we develop includes:

- Our monitoring agent software, written in Go and C, which runs on our customers' servers. These agents are small, reliable, high-performance processors of massive amounts of performance data. They distill it down to the metrics and events we will store in our time series backend databases, and send that data to our APIs.
- Our APIs. We have a service-oriented architecture ("microservices") hosted on the AWS cloud. It is written in Go and runs on Linux. It includes internal services (used by external services, internal jobs, worker processes, etc) and external services, which are the APIs that our agents, customers, and web application use to capture and analyze large amounts of data. These APIs and services communicate with our databases and other services to do their work. Our databases include Kafka, Zookeeper, Redis, and MySQL.
- Our web application, which is the analytics UI for our product. This is the user interface that analyzes and visualizes our customers’ database performance. Our platform is an AngularJS application on top of a PHP/Symfony backend, hosted in the AWS cloud.

As a software engineering intern, you will discover, document, code, test, deploy, and monitor production systems. You won't be siloed off to an Intranet app or spreadsheets. We know you can do this because we've built a software development lifecycle of continuous integration, automated testing, peer review, and continuous deployment. Our other interns have shipped code to production within days. And they almost never broke anything!

We do this by studying the craft of software:

- We practice small, fast cycles of rapid improvement and full exposure to the entire infrastructure, but we don't take anything to extremes.
- We write code and tests, using Git and GitHub, pull requests, issues, etc. We collaborate with peers on code review and approval.
- We test, deploy, observe, and operate the systems we build. (Those who build it are the same people who test, ship, monitor, and fix it). We use a variety of tools depending on what part of the system you're working on. These include Grunt, CircleCI, ChatOps, BugSnag, VividCortex itself, the Unix command line, and more.
- We measure and improve the app as it runs in production. We use our own software (because it's unbeatable at what it does) as well as services such as BugSnag.
- We have a culture of blameless learning, responsibility, and accountability.

To succeed, you'll need to be able to:

- Use the command-line (terminal) proficiently. You don't need to have dreams about sed and awk, but if you've only worked in Windows, you don't know basic Unix core utils, and you don't know how to edit a file with vi over SSH and commit/push it with Git, you're going to struggle.
- Learn fast. No matter how experienced you are, it's going to be like drinking from a fire hose. You need to enjoy learning and information overload. If it's stressful for you, this won't be much fun.
- Ask for help quickly. Try to solve things; that's how you learn. But it's better to recognize when you need help and take 10 minutes of someone else's time, than to waste a day spinning your wheels.
- Collaborate as needed; work independently when needed. You must be largely self-managing. You must be present and online during your team's normal working hours, and attend and participate in team calls and the like.

The position offers a competitive hourly wage and an on-ramp to one of the most exciting infrastructure software companies in the region.

Diversity is important to us. We welcome and encourage applications from all walks of life and all backgrounds.