Taming Technical Debt

By on in Development

You, fellow software engineer, have probably felt the same as I have: while coding some big feature, you find a thing that is inefficient, unreadable, deprecated, confusing, or just buggy. Maybe it’s not bad code at all — you just realize that several packages are out of date, or your framework needs to be upgraded. You roll your eyes, you sigh, and you think, “Ugh, this has got to be fixed.” It’s technical debt.

You may also have experienced this: you go to your manager, or your project manager, and complain about the Technical Debt. “We really need to upgrade to Rails 5!”  Yet you can’t seem to get the go-ahead to fix it. “We have a hard deadline!” “We don’t have time for that!” they say.

Those in charge insist you have more important things to do. How do we convince them otherwise?

Continue reading …


NYC Design Mentor Night Recap

By on in Culture, Design

On Wednesday night, designers and design lovers from all over NYC gathered at Carbon Five SoHo to receive career guidance, feedback, and insights from five senior designers. The evening kicked off with a Q&A with our panelists:

Continue reading …


Why Do You Need a Product Manager?

By on in Product Management

Carbon Five began as a development shop almost nineteen years ago and added the Product Management discipline fourteen years into our journey. We have realized the importance of involving a Product Manager, who is dedicated to gathering requirements and can easily handle the business and technical aspects required to build successful products. There are many reasons why our clients see greater business success and adopt more efficient software development process when they have a dedicated Carbon Five Product Manager on their team. Here are a few of them:

Continue reading …


In Support of the “Snacklog”

By on in Development

Recently we’ve noticed a number of our clients maintain a backlog of small tasks that are handled separately from their main backlog. These are tasks that should be finished at some point, but will rarely take priority over business-critical features and bugfixes. Often they are bite-sized pieces of work that can be finished in a couple of hours or less: addressing engineering chores, paying off tech debt, and addressing minor bugs. Internally, this separate backlog has earned a catchy name: the snacklog.

Continue reading …


Starting Up With Diversity

By on in Culture, Startups

Why care about diversity early?

You’re not even sure if you’ll be around in a year. You need to figure out your market, your financing, your OKRs, etc; why should you even care about diversity and equity in hiring? It is not in your MVP and those issues can be solved later, amiright?

When companies put off focusing on diversity and accidentally perpetuate the same mistakes the rest of the industry makes when hiring, they’re creating a problem and then trying to fix it at a later date. Unfortunately, by creating the problem in the first place, it’s now that much harder to fix.

Continue reading …


Building Design Systems for Scaling Companies – SF Talk Night Recap

By on in Design, Events, San Francisco

How can scaling companies maintain design consistency and quality as internal and engineering teams exponentially grow?

Last week, Carbon Five San Francisco hosted Talk Night to answer this question and to discuss the secret benefits of building design systems for growing companies. Our guest speakers included:

Continue reading …


Idea: GenServers with Map-based state

By on in Development, Elixir

I recently gave a talk at Empex LA in which I talked about my desire to see simplifications and enhancements to using some of the OTP behaviors offered in Elixir. In this post I’m going to explore a simple improvement to the GenServer API that would make it a little easier to work with.

GenServers are processes that have state that can be transformed when the GenServer receives a message. This state is represented in a single value that is passed into the handle_call or handle_cast function.

This is easy to manage if your GenServer only needs to manage a single piece of information. But as soon as you find that your GenServer needs multiple pieces of information in state, you need to substantially refactor it.

Continue reading …


Pairing Retro

By on in Development, Process

Back at my first job in tech, we paired 95% of the time. Many people were new to pairing. As it was my first job, I was relatively one of the more junior people on the team, which is an especially difficult position to be in for pairing. It was an incredibly intense experience for the whole team with many growing pains. There was a lot to navigate and no set-aside time or structure to do that, so I started having “pairing retros” with my teammates. It made pairing a lot more manageable and I started having better experiences with my pairs. It’s now something I’ve continued to do throughout my career.

The concept is fairly simple. Set aside a time when you’re not pairing, to talk about pairing.

Continue reading …


We Belong Together

By on in Design

Five Ways Junior and Senior Designers Can Work Together Effectively

Disclaimer – I am a designer so this is written for /designer pairs but it’s also relevant for any other Junior/Senior duos.

Hello, wonderful Junior/Senior design duos! Odds are you are fairly new to working together. Perhaps the junior designer is fresh out of school or the senior designer just got a promotion. Whatever the circumstances are, you are now buddies and will keep working together. So, let’s make sure that it is awesome!

Continue reading …