SoftwareSerial Write to return Read in Serial Monitor?
SoftwareSerial cannot talk to itself. Since it is implemented in software and not hardware it can either send or receive at one time, but not both.

Look at the code for write in SoftwareSerial:

size_t SoftwareSerial::write(uint8_t b)
{

...

  cli();  // turn off interrupts for a clean txmit

...


  // Write each of the 8 bits
  for (uint8_t i = 8; i &gt; 0; --i)
  {
    if (b &amp; 1) // choose bit
      *reg |= reg_mask; // send 1
    else
      *reg &amp;= inv_mask; // send 0

    tunedDelay(delay);
    b &gt;&gt;= 1;
  }

...

  SREG = oldSREG; // turn interrupts back on

...

}


Since it turns interrupts off, and interrupts are needed for it to detect incoming data, therefore it cannot detect incoming data while it is sending.