Microcontrollers obviously have more than 1 bit of memory + 2x analog comparators + one 33% / 66% voltage divider (which is all a 555 timer truly is).
What is surprising however is how flexible 1 bit of memory + 2x analog comparators + one 33% / 66% voltage divider
For example, switch debouncer could be solved in code, resistor+capacitor or other methods. But you know what's one of the best performing switch debouncers?
1-bit of memory with an analog comparator. Aka: a 555 Timer.
> 555 is useless without multiple extra parts
Not needed for bistable multi vibrator (aka: just a flip flop mode). Which happens to be the debouncer circuit.
You can add the 555 Timer to an already completed design if it is later discovered that debouncing was an unsolved problem.
I don't think it is always appropriate to assume that code can be rewritten (or rearchitected) to fit your needs. Sometimes its easier to solve problems with a touch of extra external hardware.