Farm tractor implementation
Instead of magic constants like "N", "S" etc. use an enum which contains named constants and their values are checked on compile time.

public enum Orientation {
  NORTH, SOUTH, WEST, EAST
}


With plain Strings it's too easy to set an invalid value to the orientation field.
You can move the turnClockwise method to an enum:

public enum Orientation {
  NORTH {
    @Override
    public Orientation turnClockwise() {
      return EAST;
    }
  },
  SOUTH {
    @Override
    public Orientation turnClockwise() {
      return WEST;
    }
  },
  WEST {
    @Override
    public Orientation turnClockwise() {
      return NORTH;
    }
  },
  EAST {
    @Override
    public Orientation turnClockwise() {
      return SOUTH;
    }
  };

  public abstract Orientation turnClockwise();

}


It increases cohesion and replaces conditional with polymorphism.

(I'd also try to create a Position class with x and y coordinates and move the statements from the moveForwards method to this class like goNorth(), goWest() etc. Then a new Position moveForward(Position current) method in the Orientation enum would call one of the Position.go*() methods.)
I'd change this array:

position = new int[] {0, 0};


to two ints:

private int positionX;
private int positionY;


Indexes here (0 and 1) are magic constants.
The moveForwards and the the Tractor class looks unfinished. Noone writes the field array.
This:

try {
  throw new TractorInDitchException();
} catch (final TractorInDitchException e) {
  e.printStackTrace();
}


could be written as

new TractorInDitchException().printStackTrace();


without the try-catch structure. A logger framework (for example SLFJ and Logback) would be better here.
What should happen when the tractor reach the border of the field? (When the index is negative or greater than or equal to the size of the array.)