For point 3, I think it's a benefit. I sell myself as a particular kind of programming specifically because I do not want to work on lame projects that don't interest me at all. I think it's perfectly valid to self-identify as a "systems programmer" or "web programmer" because, unless you're under certain situations, you probably don't want any ol' programming job. These days I even specify what languages I want to work in because I'm so nitpicky.