Software Engineers at Terakeet are dedicated to designing and implementing Terakeet’s proprietary in-house enterprise technology systems.
Every Software Engineer has expertise in building and evolving sophisticated Rails applications that are used internally to manage a variety of Terakeet’s business processes. These systems are always advancing to support new features and technologies, and they contribute to Terakeet’s competitive advantage in the enterprise SEO industry. This is a highly skilled and innovative role that offers both technical and leadership opportunities with the benefits of working remotely or in-office.
Meet Craig Waterman, our Senior Software Engineer, as he highlights “A Day in the Life” of an in-office Software Engineer at Terakeet.
Joined & History
Over the past twenty-five years I’ve worked as a software engineer at places of all shapes and sizes, from tiny startups with Series A funding to life-sucking megacorps, and everything in-between. Of these companies, Terakeet has been the only company that publishes their core values, and actively encourages employees to hold them accountable. There’s no mere mission statement to be found here at Terakeet—our core values define our ethos—permeating every project and interaction.
In the Engineering department, our department leadership never stops working to improve themselves and our dedicated team of amazing engineers are invested in our engineering core values. We aren’t just cogs in a vast machine, we are the machine: learning, sharing, and growing together.
If it sounds great, that’s because it is. Yet it hasn’t always been a panacea. Many of the tools and processes we now take for granted didn’t exist just a few years ago. Along with our successes, there have been hard-won victories and painful learning experiences.
As I approach my 7-year anniversary here in Terakeet’s Engineering department, it’s nice to take a moment to reflect on what happens in a typical day and how lessons learned have shaped the way we operate today.
Let’s take that figurative walk through my day with some nods to the Terakeet of yesteryear, and end with a look into the future.
A Day in the Life of a Software Engineer: Syracuse Office
First Things First
The exact time my work morning begins typically revolves around how late my youngest son’s school bus arrives, but when I get to the office there’s a simple two-step ritual that cannot be broken:
Dongles — I’m living the dongle life with a USB-C only MBP, I plug-n-pray every morning. Ethernet dongle, check. USB-A dongle, check. DisplayPort dongle, check.
Coffee(s) — K-cups, French Press or our giant office coffee machine; one way or another, coffee is getting into my system.
YESTERYEAR: Luckily we’ve always had a k-cup brewer, and you could always French press your own, but I started off with a hand-me-down iMac with 4GB RAM and a spinning rust drive that spent more time beach balling than functioning. Investing in quality equipment that doesn’t hamper your engineering team is money well spent.
Second Things Second
After I’m connected and caffeinated, it’s time to start engaging with my team. We currently split our engineers into multiple teams formed around individual products Terakeet offers. Your daily focus and JIRA boards reflect your current team assignment.
Before I check in with my team, I spend some time catching up on Slack and Email notifications. I’m as attached to my smartphone as the next nerd, but in the morning my family has a strict phones-down rule for breakfast/getting ready at home. Unless one of our AWS alarms went off and texted me or a true emergency resulted in a phone call, I’m usually blissfully unaware of any other issues until I sit down to work.
In the previous article of this series, Breno noted we’re huge Slack users here, so much so that my morning routine is usually dominated with a flurry of Slack activity. An important early-morning process for me is checking in with my team, not just for project updates and problems, but to find out what’s happening on a given day or happened over their weekend. Did you know your co-workers are actually people? The More You Know!
As developers, we’re constantly branching, iterating, refactoring and all-the-while gathering feedback from each other. We use Github exclusively for our source code management (SCM) needs. For every issue and feature we’re working on in JIRA, we start a new branch+pull request, usually with a feature branch for an Epic.
This streamlines so much of our SCM process. I can’t stress enough how powerful the Github and JIRA combination is: progress reporting, troubleshooting, and code reviews are simple affairs now. Being in a near-constant feedback loop with your peers gets multiple sets of eyes on the code we produce, without putting extra cooks in the kitchen.
YESTERYEAR: We’ve tried Podio, Google Hangouts, and every IM client you can think of. Our communications used to be a gigantic mess of emails and IMs — egad! For issue management, we’ve done “the spreadsheet,” “the custom-bug-reporter-we-wrote-in-house-but-abandoned,” and even Podio. Identifying the right tools will require hours spent testing and vetting. Spend that time answering the right questions.
Third Things… Last
Other things that fill my day don’t always happen in a specific order or are rescheduled as-needed, but they’re an integral part nonetheless.
Every day my team has a stand-up meeting in the morning to discuss the state-of-the-project and make sure everything is on track. Occasionally, these are rescheduled or outright canceled, but have become a useful means to ensure the team stays focused and problems are identified quickly.
Learning is part of our team’s core values, and we have a dedicated Slack channel to learning-related topics. While these mostly lean toward engineering-related items, the occasional life-hack or other non-coding related topic gets posted.
We’ve also had engineers attend ElixirDaze and ElixirConf, and a few of us have been known to take machine learning courses on Coursera and Skillwise. The old stand-by, the DTF book still makes an appearance as well (although many of us have opted to go the electronic route these days).
Testing and Improving
Tests! It may seem like a no-brainer, but enforcing a quality test suite has become extremely important, especially when rotating engineers between teams. Rspec for Rails, ExUnit for Elixir; whatever flavor of tests you write, make sure you write them and please be responsible. While you’re at it, make sure you set up continuous integration (we’re huge fans of Travis-CI), we’ve all hit that git add/commit/push cycle a little too fast and burned a test or fifty at some point.
YESTERYEAR: True standups are relatively new in our engineering playbook, but are proving to be worth the extra overhead. Our learning exercises have included book-of-the-month, and periodic training courses, but were ultimately inconsistent in their application. With testing our test suite was… empty. Devoid of all tests.
scream if tests.empty?. Going back through our legacy code and adding tests after-the-fact was quite painful, but reaps great rewards to this day.
Terakeet’s become proficient at adapting to market and employment trends for years now: adding flex-time, hiring remote employees (half of our engineering team is remote!), and spinning up a series of exciting new products to meet changing demands.
That change is constant and my day-to-day process here may look very different in another 7 years, but I’m looking forward to it!
Did You Know?
Here are a few other things about working at Terakeet that I just needed to share:
- Engineering has ~60 custom Slack emojis. Yes, we’re addicts.
- We work in an open-office, but we have a number of focus rooms when you need to GSD™.
- We’re located in Armory Square, so lunch options are… numerous, and we do like to eat: half-price Sushi Mondays, fish tacos, and pizza and burgers galore.
- We have remote engineers in California, Connecticut, Michigan, New York, and Alberta Canada.
- We’ve got lots of dogs and cats among our employees (Mazy is one of mine on #catsofterakeet).
This is the third post in a three-part series about a day in the life of a Software Engineer at Terakeet. Read the other two posts here: