An MBA is an important step towards becoming a stronger manager for most people, however it probably shouldn't be the first step you take out of undergraduate studies.
I'm finishing an MBA-type program (it's a Masters in Technology Management actually, but 2/3rds of the courses are shared with the MBA), and I definitely wouldn't have gotten so much out of it 5 years ago.
Similarly, many of the things I was taught as an undergrad only made sense many years later (and I regret not having given them more attention).
In fact, my MBA-type program actually has an emphasis on entrepreneurship - we had an entire class based on Steve Blank's Customer Development model, which involved "getting outside the building" a lot.
They encourage startup building so much, I'm planning to turn my business plan into a startup :)
People who don't get higher education and just start their companies fresh out of high-schools will have WAY more business skills than MBA.
I'd say that 2 years of running your own business gives you more business skills than 5 years of MBA education.
In the same way being an hobbyist programmer will never give you the same skill set than a CS degree. It's highly unlikely you are ever going to study extensively algorithm, os and databases design, compilation or declarative and functional programming all by yourself because objectively it's not something you need to get the job done. Nevertheless, this knowledge becomes really useful as soon as you start designing complex system.
Doing an MBA (or an MSc for what it's worth, MBA cult is mostly anglo-saxon) is exactly the same thing. You will study a broad range of subjects and business areas and see different theories on them.
Don't misunderstand me, practical knowledge is invaluable and running your own company gives you a good understanding of your area. It's just than MBA will give you a broader if less practical view.
That is not to say you can't learn to do theoretically complex things without school, but when you're learning about DFA's or register allocation or the like, sitting down with a textbook and working through problems is often the best way to learn.
I'm a largely self-taught programmer, and I'm always running up against the theoretical background I don't have. Try writing a compiler for a modern language without understanding type theory, and try learning type theory by doing.
The first genuinely complex system I built in my career, back in the mid-90's, was a scripting language. It did indeed force me up against a lot of background I didn't have; I had a very good mentor though and largely did learn it by doing.
I've since learned-by-doing distributed systems (quorum and 2pc commits and logical timestamps in one sprawling system we built around 2000) and routing, graph theory (for routing and later for analyzing binaries, also graph visualization, which is a tricky problem), code generation for compiler backends, and very large scale data storage (for instance, in order to sample all the flows running over a tier 1 NSP backbone). To that obviously add all the security and cryptography stuff; I've always been involved in security but I consider myself a developer by training.
There are things I have run up against that have been too challenging to just learn. Linear algebra was one of them (although I've been slowly clearing that hurdle). RF and signal processing another. But those things are the exception, not the rule.
I might also contest how simple operating systems are fundamentally. They just move bits around, yes, but they're moving bits to and from a very complicated asynchronous and sometimes distributed system, and bridging it to code that runs under artificially simplified assumptions. It's true that most of it tends not to be interesting from a data structures perspective --- especially back in the 90's, when the whole process list and every TCP TCB were just stored in simple linked lists --- but there are parts, like the virtual memory system, that are much trickier. And all of that code runs in a much more complicated environment than userland.
Now, a PhD in CS is a bit of a double-edged sword. It's often a danger sign that someone has spent too much time on just one theory. I wouldn't recommend getting or using a PhD as a signal of being a good developer since there is way too much variance.
(Ob: I have also worked with great developers with no formal education.)
I agree, you can't become a good chemist without proper education, the same goes for particle physics. Business is not a hard science, it's a set of skills you have to develop such as: perseverance, creativity, people-skills and confidence. You can't learn it in any school, even the top-ones.
You can be a great actor, amazing cook, great musician or artist without having any degrees. Running a business is similar - it can't be simply in schools because it's not a hard science.
You get the experience from running your own company, look: Steve Jobs, Bill Gates, Larry Ellison
They don't seem to have any degrees and there are thousands of CEO's just like them who didn't get higher education yet built something amazing.
The 'hobbyist' programmers were creating the most beautiful things, when the enterprise with 'trained' programmers had no idea about the term 'internet'. The hackers gave us the internet.... The spirit of software development..
They create better things with haskell and clojure, and the trained graduates are stuck with what their boss say.
True pragmatism comes from within, and believe me, it librates you.
People are judged by their education all the time. Why should MBAs be exempt?
Though I do agree that the arbitrarily judging of someone based on what learning they have done in their life is ridiculous. Though I can't help but feel that even you have done the exact same judging: "Maybe if people working in startups weren't such elitists and thinking you don't need business skills to run a startup, you wouldn't have so many fail." Not having an MBA doesn't mean you do not have business skills.
They don't have a bias against education. They have a bias toward experience.
It's also a little weird to say that we're elitists because we're not hiring the elite of the business world.
I receive lots of applications every day. When nine out of ten that share one common characteristic (MBA), share another (no understanding of how they could add value in an early stage startup), you begin to connect the dots.