I've met a lot of "meh" ones, who can kind of get the job done but obviously don't care about or enjoy programming. It was just a high paying career that they could get into.
I've met very few people who do it because they really enjoy doing it and are constantly being driven to learn. They usually get bored at a company within two or three years and move on.
I've met a lot of bad interviewers too, who obviously have no idea how to conduct an interview or what they're looking for in a candidate. They tend to jump on the latest interviewing gimmick bandwagon, whatever that happens to be, without really understanding why that gimmick is supposed to get results that are better than random. Most of the interviews I've seen could have just as easily flipped a coin and had an equal chance of getting a good developer.
Funnily enough, most C standard library address resolvers can handle IP addresses as actual 32 bit numbers without the octects, which is an occasionally fun party trick.
Ahem.
Anyway, yeah, things shouldn't need to do things with object internals as much as Java programmers seem to think that things will need to do things with their object internals. I'm leaning toward not writing accessors until I actually need them and then asking myself if I need to access specific information elsewhere, does the data actually belong in that class. In java's defense, if you asked most professional programmers about interfaces and design by contract, you'll probably get a pretty blank stare. At least any of the ones I've interviewed in the past...
* be...cause I've never downloaded Elementary OS.
I don't want to be young again, I just don't want to get any older.