The "XY problem":
The XY problem is asking about your attempted solution rather than your actual problem. This leads to enormous amounts of wasted time and energy, both on the part of people asking for help, and on the part of those providing help.
I am coining a new term: The "XY solution".
The XY solution is when you're building a solution for problem X, and other people think existing solution Y would help with that, because they share some similarities, so they push you to use Y, even though when you look at it carefully, Y is not actually suitable for solving X, especially with the constraints or requirements you have.
I had this when I first started talking publicly about implementing
backup software. I had specific goals and requirements that had led me
to a particular approach, and well-meaning strangers kept strongly
pushing me towards building my backup solution on top of tar
, zip
,
or rsync
, or some other existing thing for copying files around.
None of those were actually suitable for what I was trying to achieve.
I see this often in the software industry, because it's obviously good to build on top of existing building blocks. However, it's only good if the building blocks are actually suited for the task at hand. Making the judgment call on whether the blocks are good or not is an important skill in software development.
People suggesting Y to you is rarely a problem, unless they are doing it so very forcefully. It's good for you to consider many approaches. But it can be frustrating to have to reject the same suggestions repeatedly.
Example: Don't write your own operating system kernel, use Minix/MS-DOS/Windows/Solaris/whatever instead.
Example: Don't write your own version control system, use Subversion/CVS/tar balls/whatever instead.
Example: Don't write your own git server, use github/gitlab/whatever instead.