15 years experience here. Always received decent pay IMO, and never been short of puzzles to entertain my brain. Plus you get to doss about on STW, obviously.
What area is the PhD in?
Computer science - computer vision really.
You should steam in with that kind of background. If you've not long left in the phd, maybe stick it out - or try and convert it to MSc.
If you want on job training, possibilities for promotion & bonuses, and don't mind working on a big systems where you're a small part of the whole affair, go for a big company. You also get to see a good spectrum of the different specialities within software dev, which means you can pick where you want to head quite easily.
Smaller companies tend to allow you more free reign to code how you want (and make all the mistakes you want) and you'll probably have the chance to have a large input into the end product. Its less likely to find specialists and people will be "wearing a lot of different hats". Career path opportunities aren't easily come by, though, without leaving and going for a position somewhere else.
Both can be good, both can be bad - depends on the company. I've learnt a lot from both ends of the scale.
I'd aim to look for somewhere that values the word "engineering". There's lots of people who know code; far less who can engineer. One doesn't pay so much, the other does. One will be working with your ten gallon hat on, the other will involve decent process & practices. I guess ultimately engineering is the science/art of doing it right, wheras writing code can be done both badly and easily. My experience is that customers ultimately are willing to pay for things that work, a lot more than crap knocked up in a hurry, you can imply a lot about how a company will work from its customers and who they are (i.e. don't work for a startup whose only customer is a nigerian gangster, just to pick a completely random example out of the blue)