The only thing I really want to address is that IT is not as "white collar" as it might seem. In fact, me and my friends usually refer to IT as blue collar work, and this being not so much the physical nature of the work, rather, it is the philosophical nature of IT work that makes it non-white collar (Perhaps grey? ring around the collar?).
By the way, the reason why so much of the programming work is in "more menial, mundane and transient" tasks is because of lack of good practices. There will be varying degrees of this kind of work, depending on how quickly and efficently you can accomplish you work and how much code reuse you've done. To me, three things that I could think of (but not limited to these three) has helped the developer community (though not all of it all the time):
1. XML - XML embodies many concepts and is so powerfully flexible and so large in scope that most people only see one or a few sides of it. To me, XML is useful for programmers for two reasons: generic data parsing and interprocess communications interface definition.
2. Open Source - The open source movement allows sharing of code and programming ideas and algorithms, etc. This is one of the places where programmers can achieve semi-immortality/fame - a program created in the philosophy of open source and/or free software takes on a life of its own. To some degree, it is even beyond the total control of the creator of the code. But most importantly, the work done is more cumulative and inclusive than the exclusive nature of closed-source/non-free software.
3. Microsoft's COM/DCOM/COM+/COM whatever. What Microsoft has done with this "technology" is enable binary "code"-reuse on the world's most popular PC platform, enabling the platform to develop massive amount of programs (quality notwithstanding) by reusing binary components. That the Gnome project is attempting to achieve the same in Linux flatters Microsoft enough to not simply dismiss it. You may not like the OS, the company, or even the technology - but it accomplishes a lot and saves programmers a lot of work (and at the same time created a lot of jobs for programmers good and bad).
What was the point? Oh yeah. So the idea is the the sense of accomplishment is achieved by doing as much work as possible without reinventing the wheel constantly. Programmers may or may not be able to point to something and say "I did this" and be proud of it, but I think that being able to finish projects while doing minimal amount of redundant and mundane tasks and maximizing the use of problem solving skills of the program may be rewarding enough. Contributing to open source can always help that anyway. Good practices and the three items mentioned above can help the programmer along.