Not an INTP, but whatever.
I'm a CS major right now, and I really do love it so far. However, sitting at a cubicle all day and doing code-monkey bullshit would drive me insane. Because of this, my goals are:
1. Get to a more software engineering like position.
2. Lead a team and or develop big-picture plans for large scale software systems (also see #1)
3. Become a CS professor
Any of those will work.
Speaking as an NTP, my strengths in programming generally center around:
1. Foreseeing future fuckups and preventing them by altering the plan before they happen
2. Developing the object/inheritance structure of the system, and working out the stubs. Basically, the big-picture plan.
3. Coming up with original ideas for projects, and new ways of doing things that will make the job easier or more useful.
4. Debugging the system
In the same manner, my weaknesses in programming generally center around:
1. Following through with things. Anything.
2. Unit/white box testing, and making sure that all detailed test cases are tested
3. Incorporating things at the lower-level when trying to implement my upper-level ideas. For example, I may have a good general plan for an algorithm, but will likely get stuck translating the pseudo-code into solid usable code. That or I may think I have it all thought out, but end up making it too big picture and leaving some blanks that make it unusable in its current state.
4. Anything centered on Math. I really don't like math or efficiency checking.
Programming as a living doesn't necessarily mean sitting and fussing over details all day. Small details will inevitably be part of the job, but you'd be hard pressed to find any job that doesn't require some sort of significant attention to detail at some level. The problem with programming careers, is that (as far as I know), the attention to detail jobs are most of the lower-entry jobs. I'm not looking forward to having to drudge it out before I can move up.