The problem is the methodology....
I usually associate bloat with object oriented programming techniques. There's nothing wrong with these techniques, of course, except that a surprising number of programmers haven't a clue how to design with objects ("like giving a chainsaw to a three-year old to play with...."). The result's invariably a mess because the bottom-up design that these techniques encourage end up with programmers lacking a clue what their software's doing.
(I do real time. My stuff has to work and I have to know at all times what my processor's doing, you can't just fire and forget or you'll end up with a car going out of control or something. We need more of this discipline in the apps world -- put the programmers on a diet, reduce their memory and processor size.....)