| It's not just you who struggles with this - it's a very hard thing to do even for those who do it a lot. The number one barrier is just recognizing that it's a thing and you can work on it and do consciously (and sounds like you did that, so that's already huge!) In fact, what distinguishes executives is their experience, ability and willingness to get others to see and rally around a problem or goal - which is why I positioned this to the person I was responding to as an opportunity. If you can figure this out, your career (and life) unlocks to the next level. Now to answer your question, some practical advice: 1. Most often, people conflate problems and solutions and just say "we should do X" without making the person first understand and agree that there's a problem to which X is a solution. So when you get pushback on X, is it because the other person doesn't think it's a good solution, or did you not even help them understand that there's a problem to begin with? 2. People often fail to evaluate whether problems are relevant, and to communicate that relevance. EG, have a solid answer to "who gives a fuck?" Like "this system is not well designed and I want to refactor it" - "who cares?". "This system is hard to work on, and we work on it all the time, so our feature delivery velocity is only half of what it could be" - now I am listening. 3. If you lost people, troubleshoot where you lost them. "You don't agree with my proposal to refactor the system, so I just wanted to double check if I had explained the problem well. To remind, do you agree that our feature velocity is slow? (yes/no) If yes, do you agree with me that the root cause of the slowness is the complexity/messiness of the underlying system? (yes/no) Do you agree that my proposal to refactor it will address it (yes/no) Do you just think now is not the time we can afford that investment (yes/no)." etc. Walk them slowly through the conversation, and if you ever get a "no" you didn't expect - dig into that. Is it because you didn't explain something, or because the person knows something you don't? It's not THAT different that debugging code, by trying to find the place where it disconnected from what you expect. But it takes time and confidence to stick with this process. 4. Write it down and have someone read it and tell you if you actually got the point across clearly. Writing things down helps me establish the logic to my intuition which is what enables me to do #3 better. 5. Realize this will never feel easy because it's hard, as long as you're trying and learning from the experience you're doing all you can be doing. 6. Take a class or read a book on negotiations (negotiations is just a process of understanding the other side's position as well as your own and talking through it in a way that finds a solution that works for both). Good luck. Happy to answer anything else. |
Suppose I were to ask you to explain to somebody non-technical why your application shouldn't have 12 different databases. It's incredibly easy to provide hand-wavey claims about inefficiency, but non-technical people are rightly skeptical (after all for every good idea there are 10 developers claiming a complete rewrite in XYZ will 2x everything).
How can you really provide hard evidence that an application with 1 database instead of 12 will be easier to develop in? Are you going to have devs write code for both cases, and show how many fewer lines of code it is? Are you going to take a dev survey? You can provide your word that certain production bugs were caused by this, but that's again presuming this individual believes you.
Even if you could really spell it out in detail, it's likely they wouldn't have the patience to listen. A chess grandmaster could probably spend an hour explaining a crucial chess move to me, why couldn't an engineering problem warrant over an hour of explanation?
I find completely irrelevant details (how distressed you are by the problem, your race, your last performance review) often have an outsized bias on how persuaded people are.