"Never roll your own X..."
I do not like that statement. I get the why behind it. The why as I see it is "don't build what has already been built", or "there are many 'gotchas', so better leave it to the 'pros'".
If you're "in software", you've elected to be a professional. No ifs, ands, or buts. In my view you either care about software as a craft and approach it with intention and care, or you move aside. Apathy or vague opinions don't have any benefit.
Though, I will say, with the bar constantly being lowered to get butts in seats, it does make it easier to look really competent. But I digress...
I get it, but it depends on balancing what you're optimizing for when building.
For instance, Slack (love it or hate it) was an internal project for a game startup. Basecamp could have easily tried to build their project management workflow around off the shelf software, but decided against it. There are various other examples of products being built to either scratch an itch or see if it was viable. Even Andrew Kelley said "you know what, why not a better C?". Someone probably told him, "just use C/C++..." (i.e. "never roll your own programming language").
Even though I do not like Instagram, someone probably told them "doesn't Facebook alreay have photos?" (i.e. "Never roll your own facebook"), but the founders didn't listen. Now look at them. Yeah... they showed them, amiright?
If you are working on a project and want to roll your own auth, I defer to the authority that is Shia LeBeouf: do it!.
And please... for the love of God... salt your passwords with argon2.
I've have this tension right now. I want something like the developer experience of instantdb and the immutability/sematnics of datomic all wrapped up into some sort of protocol with the browser is an optimisitic peer to the transactor, and that I could run it reliably on a $5 vps, and have all the data backed by object storage.
That doesn't exist. It probably won't exist unless I, or someone else, executes. Unless it is rolled. But the whispers of "don't roll your own db, just use postgres" haunt me.