Battling complexity

Life is easy when the app is small. With time, it grows larger and complexity creeps in. In order to keep our sanity, we have to battle it.

If you've spent at least a few years working in the software industry you've either worked on or heard of some large long-lived project where features are a pain to add and its developers fantasize about killing it and reimplementing it from scratch.

Just like "the road to hell is paved with good intentions", you could say that "the road to complex code is paved with well implemented features". As the list of requirements and use cases that the system must handle grows, the complexity doesn't suddenly happen. It creeps in through the back door.

At the center of Toptal's business there is a very large system running it. The set of requirements and their complexity has grown organically over more than 60,000 commits. Toptal's engineering team has worked hard to keep its complexity under control and I'll use the experience from doing my part to provide practical advice that can be applied at any stage of the project to help it tame the growing complexity.

Skill level: Intermediate
Duration: 25 min
Photo of Radan Skorić
Radan Skorić

Radan is an Engineer from Zagreb and a Lead developer at Toptal Core Engineering team. He worked for a local start-up before switching to freelancing and eventually joining Toptal. He has done some desktop and 3D graphics programming but for most of his career, he's done full stack web development with Ruby on Rails. At Toptal, he focuses on back-end with an eye towards maintaining high quality throughout the entire stack. He also has a dog. If you ask him he will admit that the dog is actually much cooler than him.

Supported by

Organized by