I will speak from my own experience. I was a philosophy major as an undergraduate. I later did a second bachelors degree in Industrial engineering because I liked systems and wanted to do more advanced mathematics. Only after those two degrees did I really learn programming and understand how to program using Object Oriented programming (Java).
I honestly don't see much of the connection between Philosophy and Programming. Philosophy is simply a much larger and broader concept. Programming is a discipline, philosophy is not a discipline. Also, Philosophy has more than one meaning - it has many branches. Philosophy is about opinions and doing as much as you can with a limited knowledge base - with incomplete knowledge. That is the essence of philosophy - dealing with incomplete knowledge.
Much like mathematics, programming is a logico-deductive system. And I think the important point that I am making is that in a purely logico-deductive system there is no philosophy - everything is known. However, insofar as there is art in mathematics, there is philosophy in mathematics. Insofar as there is art in programming, there is philosophy in programming. In so far as there is art in playing chess, there is philosophy in playing chess. Not everyhing is known in chess, because it is computationally too intensive, NP hard and all that. Not everything is known in programming, also. I didn't write all the libraries that I use in Java, and I have to make assumptions about the behavior of the libraries that I didn't write - this is the most important and the truest source of incomplete information in programming. With that said, I don't believe opinionated frameworks and design patterns are very philosophical in nature, for instance. Programming does not make arguments; it does not speak about the world; it does not describe anything, only what to do with data, but it can't refine data without further input. Programs do not create data, they can merely gather it or request it and analyze it; they cannot synthesize it. The data comes from the real world, not from programs, right?
Moving on, I believe the following analogies between programming and philosophy do exist:
1) a deep state of meditation that arises when programming, the same as when thinking about a philosophical problem, for instance, when writing a philosophical paper or defending an argument or line or reasoning. Thinking about the nature of anything is a philosophical quest.
2) the nature of computation is most likely the nature of the universe. The laws of logic and "thought" that the computer undertakes are the same laws of thought that a human being uses, in the end.
3) Programmers can philosophize while writing software all they want, but at the end of the day the software itself is not philosophical in nature. However, I would argue that a philosophy paper or book IS philosophical in nature at the end of the day.
Here are some branches of philosophy:
http://cas.umkc.edu/philosophy/vade-mecum/branches.htm
Do programs deal with ethics? No, not really. Do programs deal with science? Can they test scientific statements? I would say Yes Do programs get metaphysical? Hardly Do programs deal with and talk about language? ...Yes...the language of talking to a computer. Do programs deal with politics? No. Do programs deal with religion? Only if you worship your computer.
So there you have it. However, I would say, that many philosophy majors should become programmers because it is simply a good career choice for that type of person.
-Alex Mills the1mills@yahoo.com