I installed Home Assistant on a Sunday afternoon thinking I'd point it at a couple of smart plugs and a temperature sensor, see the readings on a dashboard, and be done by teatime. That was four weekends ago. Since then I have written more YAML than I have in the rest of my career combined, and I have strong opinions about the difference between a state trigger and a numeric_state trigger that nobody asked for.
The thing that hooks you isn't the dashboard, it's the automations. The first one I wrote turned a lamp on at sunset. Trivial, a few lines, and watching the lamp click on by itself at exactly the right minute did something to my brain that I'm not proud of. Within a week I had automations for heating, for "everyone's left the house so turn everything off", for nudging me when the freezer door had been open too long. Each one was ten minutes of satisfaction and then an hour of edge cases.
Because that's the trap. The happy path is quick. The unhappy paths are where the evenings go. The presence detection that thinks you've left because your phone's wifi dozed off. The automation that fires twice because two triggers overlap. The 0.x release that renames a config key and breaks half your file on a Tuesday, which is the tax you pay for a project moving this fast. I now keep the whole config directory in git, because I have broken it badly enough, often enough, that "roll back to last week" is a genuine feature.
What's kept me at it, rather than ripping it out, is that the good bits are genuinely good. The heating now follows a schedule that actually matches when we're home, and the bill says so. The house lights itself sensibly in the evening without anyone touching a switch. None of it depends on someone else's cloud being up, which after a couple of years of homelab paranoia is the part I value most.
If you're tempted, two bits of advice. Put the config in version control before you write your second automation, not after you've broken your fortieth. And accept that this is a hobby, not a setup. It is never finished. It just reaches a state where it annoys you slightly less than it did last week, and you call that a win and go to bed.