First, that sounds hard. I'm happy that you're asking for help and I hope you find the help you need.
Next, you'll probably get a bunch of advice about leaving immediately, how you don't have to put up with this nonsense, and so on. I consider this advice well-meaning, but it might not take into account the complicated web of constraints that you face, so I recommend interpreting "You should get out there now!" as something more like a supportive "You don't deserve to live like this!" True, but not necessarily enough on its own to formulate a plan to address your quandary.
In response to your final paragraph especially, it sounds like you need to have a real, frank conversation with someone who can help you navigate this situation. One in which you can get into the complex details of the situation and balance all your competing needs and desires. I say this because, sadly, you will not be able to solve this problem by running away from it, because it will find you again and you'll be even more tired and even less interested in dealing with it. You probably need more than "Get out and take your people with you".
If you'd like to try to have this conversation, then I think I can help. You can start with my handle here, search the web, find out more about me (to judge for yourself whether I might be able to help you or I'm full of shit), and then contact me. If you think we might click, then ask me for help. Ignore anything that you see along the way that looks like a price.
Meantime, any advice I can offer will sound like a platitude, so I won't bother. The reality of the situation is much more complex than that. Instead, think about what you'd like to have happen and maybe we can figure out how to make it happen.
Read the book "The E-Myth Revisited" before you decide to go solo. You might be having an entrepreneurial seizure; it's not necessarily a bad thing, but you might prefer to be better prepared for what happens after that.
> I feel guilty when our customers have repeated bugginess in our app.
You might be feeling over-responsible for the bugginess in your app. If you did your job perfectly, which forces in the environment around you would still cause you to ship bugs?
In your shoes, I would still want to do everything in my power to limit the bugs that I ship---that's why I practise TDD, for example---but I look carefully for the boundary between what lies within my control/authority and what doesn't, then I refuse responsibility for what doesn't lie within my control/authority. And that was a more-than-a-decade-long change in my mindset.
Not everyone likes TDD; I don't mind. I have a system that helps catch my mistakes sooner, so that I limit the associated damage. I have a very effective system, which I trust, and which therefore allows me to work aggressively: if I can recover from failures inexpensively, then I don't need to agonize over failures. If I drive the cost of failure down close enough to 0, then I don't need as urgently to limit the probability of failure.
What can you do in your work that might help you limit the cost of failure? If you had that, maybe you'd feel less guilty about making mistakes, because you'd done significant work to limit the cost of those mistakes.
I routinely run a combination of Slack and Discourse for my online communities. I can move interesting Slack threads into Discourse for longer-term and more-thoughtful discussion.
The immediacy of chat has its place, but so does the semi-permanence of something like Discourse or Groups.io or a good, old-fashioned mailing list.
We have a vague notion of a thing, so we call it "X". Later, as we learn more, we realize that we can think of X as a category of things, and that one of those things, annoyingly, should probably be called "X". Now we have a problem. Some people will call the thing X and some people will continue to call the category X, because they read our blog posts from five years ago, because they were so popular, because we are so awesome.
This is a sign of a good thing, even though it causes confusion. Now we have to roam the countryside saying "I know we say 'X' to mean this general thing, but we also say 'X' to mean that more specific thing. I'm really sorry. It's my fault. I recommend that you say 'Y' to refer to the category, but be prepared to read 'X' on the web. It is what it is."
I agree. I think you've overstated how many people take that position, but I agree. By the same token, I find it unfortunate when a person turns "TDD doesn't work for me" into "TDD is a bad idea", which DHH has certainly and explicitly said in his articles on the topic. His title "TDD is dead" simply makes one group of people cheer mindlessly and another group roll their eyes. It doesn't help the conversation.
That said, I understand meeting extremism with extremism. I don't think it works, but I understand it.
I think of it the other way: if it's easy to write code that "understands" your code, then it's probably easy to understand your code, because you can encode (ha!) your understanding precisely enough for a computer to execute it and accurately enough to pass tests.
I don't quite buy the contrapositive, though: I easily understand small functions that touch well-named global variables, as long as it touches maybe 1 or 2 of them, but we wouldn't call such a function particularly "testable". At some point, poor testability and difficulty in understanding correlate, but we can easily exhibit entire classes (ha again!) of easy-to-understand-but-difficult-to-test code.
If we had a catalog mapping test/testing problems to design smells, perhaps we'd find it easier to argue our position more convincingly. A bunch of us keep meaning to write that catalog, but I haven't seen it yet. :)
I like to pair. I like to talk about pairing. I have worked with people who don't pair well. I worked with one person whose wife noticed that his entire personality changed for the worse when he tried to pair. He stopped pairing.
You don't like to pair. You don't want people to try to pair with you.
So far, I'm with you.
How do you get from there to "if you ever talk about pairing, you're incompetent and horrible"? I have trouble with that part.
TDD is a fundamental learning technique. It teaches the principles of modular design. Notice! One can learn modular design in a variety of ways. I make no claim that TDD is "the only" nor "the best" of these, but I claim that it works for enough people to merit attention.
Learning requires investment. Investment carries risk. Risk aversion/tolerance is a very personal and contextual thing. There's almost no point arguing about when it's good to be risk averse and when it's good to be risk tolerant, because of this heavy coupling to the context. Better to be aware of the phenomenon and work things out case by case.
Some people generally don't like to learn. Nothing you do will force them to like to learn. You can invite them to try to learn; you can try to make it comfortable and safe for them. That might work.
Some people find such value in a learning technique that they continue to use it, even after learning 99% of what they will ever learn from it. Continuing to use the technique provides them comfort. Whatever works. Others eventually break free of the learning technique, knowing that they can fall back on it when they feel pressure.
I care about this: people who want to practise TDD should be free to do it; people who don't want to practise TDD should not be forced to do it. Everything else is noise.
Next, you'll probably get a bunch of advice about leaving immediately, how you don't have to put up with this nonsense, and so on. I consider this advice well-meaning, but it might not take into account the complicated web of constraints that you face, so I recommend interpreting "You should get out there now!" as something more like a supportive "You don't deserve to live like this!" True, but not necessarily enough on its own to formulate a plan to address your quandary.
In response to your final paragraph especially, it sounds like you need to have a real, frank conversation with someone who can help you navigate this situation. One in which you can get into the complex details of the situation and balance all your competing needs and desires. I say this because, sadly, you will not be able to solve this problem by running away from it, because it will find you again and you'll be even more tired and even less interested in dealing with it. You probably need more than "Get out and take your people with you".
If you'd like to try to have this conversation, then I think I can help. You can start with my handle here, search the web, find out more about me (to judge for yourself whether I might be able to help you or I'm full of shit), and then contact me. If you think we might click, then ask me for help. Ignore anything that you see along the way that looks like a price.
Meantime, any advice I can offer will sound like a platitude, so I won't bother. The reality of the situation is much more complex than that. Instead, think about what you'd like to have happen and maybe we can figure out how to make it happen.
Peace.