The visionary versus opportunist side of this is pretty clear. Visionaries create new strategies, drive the public's understanding of new ideas through innovation, and generally lead the charge in new directions. Microsoft's record of innovation is a null set: just about everything they've done has been opportunistic, making money on other people's ideas or products.
Basically Bill Gates has made more money for himself and his shareholders selling Steve Jobs' ideas to the public than Apple has, but it's easy to see who's been the visionary and who's been the opportunist in that relationship.
The programmer issue is much harder to get to the truth on. Here's the canonical "fanboy" picture of Bill Gates, Programmer extraordinaire, from about.com:
Although Bill Gates is known mostly for his founding of Microsoft he also has done a number of programming jobs before becoming the worlds richest man. Bill Gates first programming job would be when he offered the principle at his high school a timetable organizer that would be more efficient and easier to use than what the principle had previously been using. Little did Gates' principle know that Bill had created the program to his own benefit... Bill was going to be in all the pretty girls classes. Bill's second job was a summer's work programming in which he earned 4200 dollars. At the age of fourteen Bill Gates and his programming buddy thought up the idea for a traffic counting computer which would later be named 'Traf- o-Data' and earn them 20 000 dollars. But when word got around that the computers were being sold out of a basement by a couple of teens the business fell through. Gates also worked as a Congressional Page and at a programming company called 'TRW'. After dropping out of Harvard Gates created the first basic operating language for the computer. Although Gates has programmed a number of programs he is still going strong at it and is programming as I write this.
So how much truth is there to this? Some of it has a basis in reality: he clearly did learn some BASIC in school; this summary, for example, appears to have consensus support:
In 1968 at age 13 as an 8th grader while at Lakeside School (a private exclusive school for boys) he got access to a Teletype connected by a 110 baud modem to a GE MARK II time-sharing system that only had BASIC (Beginner's All-Purpose Symbolic Instruction Code). The teletype combined a keyboard, a printer, and a paper tape punch and reader. It cost $89 per month to rent the teletype and $8 an hour for on-line fees (about $450 and $40 in 1998 dollars, respectively). Gates quickly became an avid programmer and one of the main users of the system.
(Note: You can experience a facsimile of this for yourself - see the GE-235 BASIC replication project led by Tom Kurtz.)
Paul Allen, two years ahead of Gates at Lakeside, was part of the group Gates found clustered around the GE terminal but his focus, and that of most of the others in the group, was on the internals: not on using BASIC, but on what made the thing work and therefore on what else it could be made to do.
Beyond that period, however, the picture gets hazy. We know Bill Gates sold a couple of programming projects culminating in his pitch to Altair on providing a BASIC for the MITS machine, but we do not know from independent sources either who delivered on those projects or what was delivered..
According to an Andrew Orlowski article in the register entitled Could Bill Gates Write Code? the answer with respect to the Altair BASIC is a resounding "Yes." Here's a bit from the story:
Even if you've been following our saga of Micro-Soft's 1975 Altair BASIC here and here, - one question remains unanswered.
Was it any good?
Reuben Harris has been disassembling a [4K Altair BASIC] binary with some help from Monte Davidoff, the third author of Altair BASIC (along with Gates and Paul Allen) and who we interviewed here last week. He has the same question in mind:-
"'Could Bill Gates Write Code?' Or was he merely the luckiest man alive," before concluding... "Yes He Bloody Could!"
And that should be convincing, except that it isn't because the quality of the code isn't at issue - and both IBM and DEC had similar products for their 5X00 and PDP lines respectively. What's at issue here is who first wrote that code and on that the only evidence we have is in a listing that miraculously surfaced sometime in 1999 - about ten years after Bill Gates first promised to make it public.
That source, which can be seen but not copied at Harvard's Pusey library, apparently contains these comments:
00560 PAUL ALLEN WROTE THE NON-RUNTIME STUFF.
00580 BILL GATES WROTE THE RUNTIME STUFF.
00600 MONTE DAVIDOFF WROTE THE MATH PACKAGE
Beyond that, what we know is that the other people involved from the earliest projects on, including Allen and Davidoff among many others, have amply demonstrated the needed skills in other contexts - but Gates has not. Indeed most of the photos from the period show Allen at work with Gates looking on, and even the Gates publicity machine has backed off claims about his post 1975 programming expertise and personal contributions to MS-DOS since the truth about its origins in QDOS and CP/M has become widely established.
So bottom line, was, or is, Bill Gates a programmer? Clearly he did some programming in his teen years but we don't know what he worked on, and while Paul Allen went on to write advanced microprocessor simulators, Gates clearly did not.
It's legitimate, therefore, to argue that he did programming, and so must be, or at least have been, a programmer; but, I think the questions should be considered largely unanswered because we have lots of claims but no incontrovertible evidence for any serious work.
But if he never did know much about making software, how did he succeed in building Microsoft? What I think is that fanboy's picture of him as the boy genius earning his way from programmer to billionaire misrepresents the nature of Microsoft as a software company. It isn't, it's a marketing company, and in that context we can treat David Every's summary of how Microsoft got IBM sponsorship as applicable both to the Gates programming record as seen by fanboy and as an answer to the question about Microsoft's success:
There was no quality to Gates' or Microsoft's product -- it was timing and chance (and marketing and contacts) that led to their success. They were wise and ruthless enough to exploit the opportunities -- there was no genius (but probably some fraud).