Today, knowledge is more accessible than ever before. Actually finding the time to read it, though? Now that’s another issue altogether.”

If you are a software engineer, I am sure your web browser has, at any moment in time, at least four open tabs of things you will read “the moment you have 15 minutes to spare.” These are personal development materials, deep dives into the technology you’re currently using, and anything not directly related to the task you’re currently working on.

If like me, you are compulsive about open tabs, you are probably going crazy because you’re not getting…


Production systems are constantly changing. It can be new code that is being deployed, it might be a change in usage pattern due to the onboarding of a new customer, or simple degradation in performance due to worldwide network issues.

Those changes are inevitable, and therefore our system should always be monitored, and we, as owners, should be alerted on any degradation.

A few weeks ago I got into an argument with one of my colleagues on how to implement an alert that will trigger when one of our Kafka consumers was lagging behind. …

In my previous post, I talked about anchoring bias, and how it affects the evolution and quality of our legacy code. I’ve argued that when working with legacy code, developers allow themselves things (in terms of quality, usually) that they otherwise wouldn’t.

I’d like to continue talking about legacy code but from a different perspective. It is widely acknowledged that legacy code, while a necessary evil, causes technological complications. Less widely discussed, however, is the social cost. …

Image by David Libeert on unsplash

Code readability and structure evolves. What was once a small, readable, neat codebase, within a few weeks can become a messy repository with many objects, where it’s hard to navigate the relationships between them

In the short article below, I’d like to share with you, one, very common pattern, that exists in many repositories. A Pattern, that if avoided can increase the readability and reduce the complexity of your codebase.

The “Model Dumpster”

The “Model Dumpster” is the simple, widely used, one, notoriously big and cluttered package called models.

You probably have one in your codebase too. It’s the one you need to…

Code reviews can be hard, but they don’t have to be

Code on a laptop
Code on a laptop
Photo by Joshua Aragon on Unsplash.

Most developers agree that code reviews are an important part of the development cycle. Even more developers think that code reviews are a great platform for learning and improving your professional skills. But all developers can relate to the fact that in some cases, code reviews can turn ugly and painful on teams that lack the “right” culture for them.

In my opinion, code reviews are a critical part of our learning process as software engineers. The greatest gain from code reviews is not the code quality or the small chance of catching a bug or two. …

Not so long ago, our systems were simple: we had one machine, with one process, probably no more than one external datastore, and the entire request lifecycle was processed and handled within this simple world.

Our users were also accustomed to a certain SLA standard — a 2-second page load time could have been acceptable a few years ago, but waiting more than a second for an Instagram post is unthinkable nowadays.

(Warning: buzzwords ahead)

When systems get more complex, with strict latency requirements and a distributed infrastructure, an uninvited guest crawls up our systems — request failure.

With each…

Feeling Anchored to Your Legacy Code?

We all have in our code base this one huge class which is just a big ball of mud. It probably handles loads of different concerns, maintained by dozens of developers, and changes a lot. Also in most cases, its tests aren’t amazing — and in extreme cases, it lacks tests altogether.

Did you ever stop and wonder, how the hell did we get there? How come no one ever stopped and refactored the hell outta this piece of code in the dozens of times features were added over the last few years?

I assume you are probably a decent…

The main goal of the development department in a fast-growing startup is to deliver business value — and deliver it fast. In many cases this speed comes with a price tag — in some cases we might choose the easiest solution to implement rather than the optimal solution, in other cases, we might use some SaaS/managed platform to avoid the additional effort of maintaining infrastructure in house.

In the “cloud era”, where every action is audited, labeled and then billed, every inefficiency can easily add up to quite a substantial amount at the end of the month. …

No system is complete without real and precise visibility into its work process and performance. In many cases, long after the functionality of the feature is done and even tested, we spend endless efforts adding metrics and logs to make sure we can observe the system from the outside and understand what it does, and most importantly — ensuring we have enough information to investigate it in case of a failure.

Last week, we at Riskified, redesigned a small processing system for one of our integration teams, to enable them to crunch through large amounts of data, fast.

The task…

Sometimes there’s more fun in quick-and-dirty scripts than perfect code

My favorite part of our profession, surprisingly enough, is not designing super complex systems that need to stand tall with thousands of concurrent requests.

It’s writing small, mostly hacky scripts that solve and automate the simple day-to-day problems I encounter.

Over the last month, I started to become intrigued by the amount of code review we handle in our team and the simple fact that it’s not necessarily being planed and divided as a workload in our planning.

Knowing how much work you’re gonna do and estimating the effort required is one of the cornerstones of the agile methodology. To…

Boris Cherkasky

Software engineer, clean coder, scuba diver, and a big fan of a good laugh. @cherkaskyb on Twitter

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store