What is the serial monitor actually doing?

SoftwareSerial mySerial(2, 3); // RX, TX

You told the SoftwareSerial instance that it owns pins 2 and 3.

  pinMode(2, INPUT);
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH); //set high as per the data sheet recommendation to mitigate spurious data

Then you go messing with them. Why? What data sheet are you talking about? The SoftwareSerial instance should be doing this, if it is necessary.

  mySerial.write(buffer, len);  // Serial.write wants the array pointer and the number of elements

Write a bunch of stuff to the serial port. OK.

  if (mySerial.available()>0){
  Serial.println(mySerial.read());

Immediately, expect a one character response. Why?

Well, I'm waiting?

C'mon. Hurry up.

I'm not a patient type, either.