
Ask HN: How do you manage complexity in your codebase? - byebyetech
I think managing complexity is at the core of what software engineers do. Anyone can implement complex systems but it takes lot of careful thinking and experience to build systems that are simple.<p>What are some of the ways have you successfully managed complexity in your codebase or system. I am interested in knowing real examples of your technical decisions that really paid off in terms of scaling your system without increasing complexity.
======
mattbillenstein
You need to develop from a general philosophy that less is more.

I use thin frameworks, no database orms, less class-based programming and more
stateless functions. It's very easy to follow the code chain all the way down
to the database just using grep and an editor -- no magic (or very little),
what is happening is more or less explicit in the code. And the code is
written very simply - I do spend some time just removing and simplifying
things as much as possible before I call them done. Pays dividends later when
you have to revisit stuff you haven't looked at in six months.

From the systems side, no docker, no k8s, I run Ubuntu LTS vms and manage them
using Saltstack. It's simple, lets me run my stuff on pretty much any cloud
that can run Ubuntu (any of them), and it's all automated. The rest of the
stack is filled out using best-in-class tools that I run myself - nginx,
postgres, redis, etc so I'm not tied to any proprietary versions of these
services. DNS load balancing directly to nginx - no ELB or hidden request or
ssl termination costs.

I try to run the simplest thing that gets the job done, and then run the exact
same thing in my development environments to have parity with production - it
works well.

