There are a lot of headaches with this migration. I can sympathize because I have been doing the same migration for over a month now, working out all the kinks.One of the real pains is that you must absolutely reference this CSS file in 3.x:<link rel="stylesheet" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.3/js/esri/css/esri.css">
There are some other things too, like 3.x is very particular about spatial references. Anytime you are setting or changing an extent, you MUST include a spatial reference.I've just started getting into the migration to AMD references. These aren't critical at this point, but will become so as new versions of Dojo are released. Basically it is just a different way of referencing the ArcGIS modules. Here's an example:The old way:dojo.require("esri.map");
dojo.require("esri.tasks.query");
dojo.require("esri.tasks.identify");
dojo.addOnLoad(Init);
The new way:require(["esri/map", "esri/tasks/query", "esri/tasks/querytask", "esri/tasks/identify"], Init());
I hope this helps.