Photo by Cookie the Pom on Unsplash

When evaluating how “strong” someone is as an engineer, there is often an emphasis on their technical abilities. The exact definition of “technical” is very vague, but this usually translates to having extensive knowledge in programming languages, frameworks, data structures, and other concepts in software development. While having a deep understanding of these topics is powerful, stack ranking engineers on their ability to invert a binary tree overshadows qualities of a different nature that also contribute to creating well-developed, long-lasting products. Having the aptitude to learn, build, and maintain code requires skills beyond being a human search engine. …

Photo by David Straight on Unsplash

On December 1, 2020 I left Gusto after over 4 years of employment. It was my first job out of university. My first job residing in a city faraway from home. My first job with significant consequences.

The Itch

My desire to leave had been building for months. I joined Gusto as a 22 year old fetus and had matured greatly since starting. I felt funny about the fact that I’d spent almost half of my twenties working for the same company. How much of my identity was tied to working there? Who was I without Gusto? …

Image source:

When you think of the word “interview”, what comes to mind? Do you imagine a simple encounter between two people exchanging questions and answers? One in which all is well and professional? And everything seems to be running smoothly?

As a software engineer, I’ve interviewed close to hundreds of prospective candidates both in a technical and cultural capacity. The format consists of 45–60 minutes of either solving a technical challenge or asking questions that reveal if they’d be a good fit for the company.

As straightforward as the process may seem, I’ve had my fair share of incredibly awkward experiences…

Perhaps you are not comfortable or don’t know much about either of these two terms other than they start with the same four letters “auth”. Well, were you aware that the prefix “auth” is actually Greek for “self”? Both operations refer to being able to do things on one’s own behalf, but there are important distinctions between them that I will break down in plain English.

In the context of programming, authorization refers to checking that a user or entity has the ability to access specific resources based on their permissions.

Authorization is not the same thing as authentication. Authentication…

If you’re intimidated by ActiveRecord :joins then fear not, this article will break down a step-by-step guide for understanding and using them with ease in your own code.

Why joins are important

The main motivation behind joins is to efficiently load data. With joins you can significantly reduce the time it takes to select records that fit the criteria you are looking for.

Slow code without joins

Let’s say we have 2 tables: Employee and Company where a company has many employees.

# == Schema Information
# Table name: employees
# id
# company_id
# name
# status
class Employee < ApplicationRecord
belongs_to: :company
# == Schema…

When I was a budding programmer and was requested to query data that involved more than one table, my stomach would drop and I would think to myself, “Well it was nice being a software developer while it lasted.”

This is unnecessarily dramatic. But let’s be honest, knowing how to use and distinguish joins in SQL can be a little confusing. However, with a bit of practice and some basic knowledge about how they work, they really aren’t bad at all!

So let’s jump into the four most common SQL joins.

Let’s say we have a group of cats and…

This article is based on my presentation “Gusto & Xero: 4 Offices, 2 Countries, 1 Massive Payroll Integration” given at Kiwi Ruby on November 1, 2019 in Auckland, New Zealand.

In January 2019, Gusto became the preferred payroll provider of Xero in what was both companies’ largest software integrations to date.

Photo by Don Agnello from Unsplash


Gems that I’ve included in every Rails app and Ruby gem I’ve worked on thus far are the following:

rspec (or rspec-rails for Rails)
rubocop (or rubocop-rails for Rails)


Note: TSPE stands for “Too short, please explain”

In the past few years, I’ve built a handful of Ruby based repos from scratch including Gusto’s Partner Directory as well as our OmniAuth strategy gem. While these projects have ranged from being Rails apps, to Rails engines, to Ruby gems, I’ve consistently used these three gems to lay the groundwork for development. …

One of the most unique and often misunderstood features of Ruby is blocks. Blocks are Ruby’s version of closures and can be used to make code more reusable and less verbose. But keywords such as yield can be hard to grok at first and make this functionality a bit intimidating to work with. This article aims to go over block essentials and build up your knowledge piece by piece.

What is a block?

Blocks are anonymous functions whose return value will be applied to the method that invokes it. That’s quite a mouthful 😳 so let’s work up our understanding.

Blocks consist of code…


Julianna Roen

✌🏻 Software engineer @ Loom • (she / her)

Get the Medium app
