Migration is the result of a failure to communicate.

Migrate a question and there will be someone who thinks it should have stayed where it was, someone who thinks it should have been closed, someone who thinks it's fine.  So it comes down to who among those people has the most power.  With our rep system you'd think it's the most experienced user who has the most power.  It's not.  It's the one with the least experience.  It's the OP.

The OP can delete with one click.  The OP can migrate anywhere.  The OP will be confused when misfiled questions automagically end up in the right place sometimes and sometimes don't.

I used to think there was a magical bot that fixed code I posted.  Only later did I realize that it was a human editing in the indentation I didn't know I needed.

Migrating a question is failing to communicate with the one person with the power to correct both this mistake and to stop making it again and again and again.

I'm not just all talk here.  I've been doing this on [Programmers](http://programmers.stackexchange.com/help/how-to-ask). (Soon, root willing, to be named [Software Engineering](http://meta.programmers.stackexchange.com/questions/8196/new-site-name-and-help-center-phase-i-complete?cb=1)).  We have almost the same situation [ELL](http://ell.stackexchange.com/help/how-to-ask) has with [ELU](http://english.stackexchange.com/help/how-to-ask).  We have it so badly that we have a [bot](http://chat.stackexchange.com/users/125580/duga) that notifies us on our [whiteboard](http://chat.stackexchange.com/rooms/21/the-whiteboard) the moment anyone on [Stack Overflow](http://stackoverflow.com/help/how-to-ask) even mentions Programmers.  Why? So we can jump in an stop the OP and the close voters from thinking of sending content our way without first understanding what we're about.

But even with this, we get questions that have nothing to do with our topic  (which is [Questions directly related to the Systems Development Life Cycle, except for code troubleshooting and requests for written code](http://meta.programmers.stackexchange.com/a/8205/131624), by the way).  So I've been following [gnats](http://meta.programmers.stackexchange.com/users/31260/gnat) lead and leaving comments when I close.  gnat has a wonderful habit of commenting when he closes and not simply using the close messages to communicate. 

I'm trying to do one better.  I don't just tell the OP what's wrong.  I tell the OP what to do about it.

When I vote to close a question that's not suited for Programmers but seems like it might work better on another you'll likely see a message like this:

> Welcome to Programmers. We only support [good](http://programmers.stackexchange.com/help/how-to-ask), [on-topic](http://programmers.stackexchange.com/help/on-topic) questions. [Many sites](http://stackexchange.com/sites) have [different rules](http://meta.programmers.stackexchange.com/a/8067/131624). Feel free to take your topic to an appropriate site. Search existing answers first. Please [don't cross post](http://meta.stackexchange.com/tags/cross-posting/info) by failing to delete your question here.  Please see the tour and help links at the bottom of this page.

The welcome is because the user is new so being friendly and tolerant is the right tone to set.

The [good](http://programmers.stackexchange.com/help/how-to-ask) and [on-topic](http://programmers.stackexchange.com/help/on-topic) links cover most all reasons we ever close. Keeping a positive tone keeps hostility to a minimum.

Presenting the [many sites](http://stackexchange.com/sites) followed by the [different rules](http://meta.programmers.stackexchange.com/a/8067/131624) both acknowledges and assists with how easy it is to get lost and end up on the wrong site.  I absolutely love the [different rules](http://meta.programmers.stackexchange.com/a/8067/131624) page.

The line about taking your TOPIC (not question) to an appropriate site, is the money maker.  I don't advise anyone to simply move a question, as is, somewhere else.  I want the OP to think about what they've learned, where they're going, and reword their question appropriately.  

I also want them to search existing answers before they just barge into a different site.  They may have been smart enough to search ours before but now we're headed somewhere different.

The *coup de grâce* is to teach them about the evils of [cross posting](http://meta.stackexchange.com/tags/cross-posting/info) and inviting them to delete their own question.  This works surprisingly often.

It ends with a gesture to the tour and help links at the bottom of the page that could have prevented this mess in the first place.

----

I remember the frustration of seeing a carefully crafted question voted down and closed.  In that moment you're watching your baby die.  You'll listen to anything to figure out how to make it stop. This is when to communicate.  

Now we get people sending stuff to Programmers from Stack Overflow all the time.  Sometimes those people are right.  Sometimes they're wrong.  But what I wish they all did was point out the REASON to go to a different site.  Because this is a teaching moment.  Haven't we all had enough of seeing questions starting with "I was told to post here so don't blame me".
  
Please, send more questions to Programmers.  We like good questions.  But when you send people please understand what we are, explain what we are, and if you don't have that kind of time please at least use this link:  

 `[Programmers](http://programmers.stackexchange.com/help/how-to-ask)`.  

It does a better job of teaching everything we care about than any other single page.

Every one of our sites has one. It's the page I use when sending people to yours.

And if you must vote to migrate, please [read it first](http://programmers.stackexchange.com/help/how-to-ask).