
Ask HN: How do you deal with complexity in general? - gtirloni
Do you have a general approach? Any method? Do you measure it somehow? How do you know software is making things more complex than they need to be (aside from a feeling most of us have from experience)?
======
segmondy
By understanding it. Complexity will manifest if the software is complex
enough, but where?

You can have code that's easy to read and complicated to change. Or you can
have code that's complicated to read and understand but easier to change.
Perhaps it's easy to read, and change but complicated to scale? I like to
shove the complexity into areas I don't care about. If I'm building a system
that doesn't need scale, I'll take readability and easy to update over
scalability. It's a balancing act.

------
tmaly
I came across this post by Kent Beck the other day on dealing with complexity.
I think the TDD method definitely helps break it down into digestible chunks.

[https://www.facebook.com/notes/kent-beck/one-bite-at-a-
time-...](https://www.facebook.com/notes/kent-beck/one-bite-at-a-time-
partitioning-complexity/1716882961677894/)

------
m0llusk
Make lists. Try multiple approaches, especially with the observation and
framing that must precede decisions and actions.

------
jkantz
Lots of good advice on this topic here:
[https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch04s...](https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch04s01.html)

Especially further in on the topic of how there's a sweet spot for total
logical lines of code and manageable complexity.

------
LarryMade2
I think good part of complexity is not understanding something as much as you
could.

On projects Ive worked with for a long time they don't seem as complex as when
I started them, And when I refactor or rewrite, I am usually taking a more
streamlined approach as I now understand the what it is I am actually
tracking.

------
tonyedgecombe
Pick off the smallest piece that can do something useful then iterate from
there.

------
thecupisblue
Do an churn vs complexity analysis, talk to devs who work on the project, find
those areas, write unit tests, refactor into simpler, smaller units.

------
mabynogy
Reduce the problem to something simpler. If it's a project for someone else
I'll do my best to change his mind about his problem.

