Absolutely it's true. Programmers in most corporate environments are treated like assembly line workers. Work for X hours, Y amount of work gets done. Programmers should be interchangeable units that can be continuously reorganized to optimize productivity.
In reality, of course, programming is not like manufacturing at all. It's more like creative writing, or painting, or composing. It's difficult to tell how long something will take, what problems you might face along the way, etc. Business people typically do not understand this; getting an MBA will usually teach you about organization, supply, resources, large teams, and other things that are irrelevant for software development (not to mention business connections along the way, which is just as important.)
But software is clearly necessary if you're going to be competitive in almost any field, which is why programmers are needed. Business people usually don't like you; you're just a necessary evil. They'd rather not have to deal with programmers at all. They would rather buy some software package that comes in a carton. A person who works on something all day that they can't understand and can't easily measure the productivity of scares them. "Why are these programmers all so fiddly? Can't they just do their work like everyone else?"
This is one of the reasons most corporate software sucks.
(I've never worked for any extended period in a large corporate/enterprise environment, thank god, this is just the general story I hear from people who have.)
I work at IBM. You can't get more corporate than that.
I had a co-worker say this to me last week - "I just feel like [our manager] treats people like resources, batteries if you will."
He complains a lot and his department transfer is going poorly, but I couldn't help but agree with him here.
To say that its creative writing, painting, or composing is frankly dead on. I don't have to convince our audience here that is true, especially anyone who has seen a truly elegant solution to a problem.
Corporate software definitely sucks as a rule, I believe, because the passion and motivation for excellence has been sucked out of them. I was discussing design philosophy (as related to a structure/organization question) with my technical team lead and he said something to the effect of (not far from verbatim), "Yeah, I'm not really passionate about [design philosophy], I usually follow whats there."
This is a guy that supposed to be leading a group of developers. Over a year and a half I have determined that taking a diplomatic approach to design and programming issues isn't always the best solution. It leads to disconnected and mangled code.
Apple is different in this regard because the CEO was, and at heart (hopefully), still is a programmer (despite app store mayhem - everyone makes mistakes). The market has noticed and felt the difference. (Also notice how Apple doesn't do a lot - if any - corporate level development.)
I agree with your stance completely and am willing to make the bold statement that the only person that should lead an organization that produces software as a direct product for consumers should be someone that has developed before and still has the passion about the art.
(Edit: a quick side note to all of this - I have friends that are in the Silicon Valley area and quit IBM way before I contemplated it. At first I thought they were whiny because they didn't get to write python code but what it comes down to is they understood and accepted the fundamental breakdown between organizational behavior and the art of computer science.)
I've worked in corporate software environments (though only two years as an employee, thank god), and I think you've expressed it well. It's noticeable that your description is largely without bitterness, presumably because you've mostly evaded the experience.
It's why I left. The alternatives were: start my own thing, or get out of the industry. Of course now I wonder why it took me so long. One reason is the time I spent wishfully thinking that the problem could be addressed by agile processes and "organizational change" (the latter being a genuine fiction as far as I can tell) before concluding that they were incapable of delivering even the minimum I needed not to go crazy.
In reality, of course, programming is not like manufacturing at all. It's more like creative writing, or painting, or composing. It's difficult to tell how long something will take, what problems you might face along the way, etc. Business people typically do not understand this; getting an MBA will usually teach you about organization, supply, resources, large teams, and other things that are irrelevant for software development (not to mention business connections along the way, which is just as important.)
But software is clearly necessary if you're going to be competitive in almost any field, which is why programmers are needed. Business people usually don't like you; you're just a necessary evil. They'd rather not have to deal with programmers at all. They would rather buy some software package that comes in a carton. A person who works on something all day that they can't understand and can't easily measure the productivity of scares them. "Why are these programmers all so fiddly? Can't they just do their work like everyone else?"
This is one of the reasons most corporate software sucks.
(I've never worked for any extended period in a large corporate/enterprise environment, thank god, this is just the general story I hear from people who have.)