Smashing Magazine has a good article written by Steven Bradley examining web design through the Bauhaus lens of "form follows function." He first gives a pretty good summary of the history of Bauhaus and the evolution of its principles, then turns his attention to interpreting the validity of form following function. Unfortunately, he takes his analysis to logical extremes and logical extremes are seldom logical...
In his Descriptive Interpretation, he surmises that natural selection disproves form following function because the mutations come first and then the function for the mutation is found later. This seems a bit like the chicken/egg argument to me. It could be argued with equal validity that the function always existed and that the mutations that don't support it are failed designs that don't get passed on. I'm not sure this really an accurate filter for this analysis since we, as designers, don't truly function like nature. That is to say that we don't randomly generate designs until we find one that works; we tend to be more hypothesis-driven and design-test-design until we get it right.
The Prescriptive Interpretation is a bit more troubling to me because its logical conclusion seems to be single-faceted. It argues that "form follows function" prioritizes function above all else, which I tend to agree with - first and formost, a designed object should do what it was designed to do. However, Steven's argument stops there, and assumes that function is the ONLY priority. The end result is that each function would have one (and only one) correct design.
If you've read my tagline, you already know that I believe an object or system needs to be useful, usable, and compelling. You can't lop off any of these dimensions and have a successful design. If it's not useful, there's no real purpose to the design. If it's not usable, the user will not be able to unlock its usefulness. If it's not compelling, the user may never use it. (Quick point of clarification: When I say, "compelling," I'm not just saying "fun." I really mean that the user is able to "get it" - that they are able to incorporate it into their world-view and can visualize themselves using it)
Anyone who has designed for humans knows there's no "right" design for a function. People's contexts and tendencies are too diverse for there to be one (and only one) correct solution to a design challenge. You can't even say "a lightbulb needs a switch," because it may be that the user wants the ability to slowly raise the level of light to a level somewhere between "on" and "off." Looking at a function, understanding the people who will be executing that function and the context in which they will do so, and making sure that those people can quickly and pleasurably incorporate that function into their lives will yield the most effective design. However, the function leads the way: We need a way to fill this space with light.