6 ms·
I've even seen this mentality in startups. It does have some business rationale, provided you are thinking short term and focused only on near-term goals. One
by api 14y ago
I've even seen this mentality in startups. It does have some business rationale, provided you are thinking short term and focused only on near-term goals.
One of the reason businesses have trouble really innovating is that it's hard in a business to work on long-term things when markets are very short sighted. Only mega-corps, monopolies, and governments can usually do that... or hobbyists / lifestyle businesses who are more casual about hard business demands.
That being said, MS is surely cash-rich enough to think long term. So this doesn't apply as much here.
I've also found that of all things optimization almost gets you looked down upon in most teams -- even young ones. "Premature optimization is the root of all evil," and all that, which is usually misinterpreted as "optimization is naive and a waste of time." It's seen as indicative of an amateur or someone who isn't goal-focused. If you comment "optimized X" in a commit, you're likely to get mocked or reprimanded.
In reality, "premature optimization is the root of all evil" is advice given to new programmers so they don't waste time dinking around with micro-optimizations instead of thinking about algorithms, data structures, and higher order reasoning. (Or worse, muddying their code up to make it "fast.") Good optimization is actually a high-skill thing. It requires deep knowledge of internals, ability to really comprehend profiling, and precisely the kind of higher-order algorithmic reasoning you want in good developers. Most good optimizations are algorithmic improvements, not micro-optimizations. Even good micro-optimization requires deep knowledge-- like understanding how pipelines and branch prediction and caches work. To micro-optimize well you've got to understand soup-to-nuts everything that happens when your code is compiled and run.
Personally I think speed is really important. As a customer I know that slow sites, slow apps, and slow server code can be a reason for me to stop using a product. Even if the speed difference doesn't impact things much, a faster "smoother" piece of code will convey a sense of quality. Slow code that kerchunks around "feels" inferior, like I can see the awful mess it must be inside. It's sort of like how luxury car engines are expected to "purr."
An example: before I learned it and realized what an innovative paradigm shift it was, speed is what sold me on git. The first time I did a git merge on a huge project I was like "whoa, it's done already?" SVN would have been kerchunking forever. It wasn't that the speed mattered that much. It was that the speed communicated to me "this thing is the product of a very good programmer who took their craft very seriously as they wrote it." It told me to expect quality.
Another example: I tried Google Drive, but uninstalled it after a day. It used too much CPU. In this case it actually mattered -- on a laptop this shortens battery life and my battery life noticeably declined. This was a while ago, but I have not been motivated to try it again. The slowness told me "this was a quick hack, not a priority." I use DropBox because their client barely uses the CPU at all, even when I modify a lot of files. Google Drive gives me more storage, but I'm not content to sacrifice an hour of battery life for that.
(Side note: on mobile devices, CPU efficiency has a much more rigid cost function. Each cycle costs battery.)
Speed is a stealth attribute too. Customers will almost never bring it up in a survey or a focus group unless it impacts their business. So it never becomes a business priority.
Edit: relevant: http://ubiquity.acm.org/article.cfm?id=1513451 http://ubiquity.acm.org/article.cfm?id=1513451
- dhimes 14y agoThe concept of "premature optimization" also has another connotation in product development: Don't waste too much time making that product or feature optimized until you are convinced you can actually sell it. It's not that optimization is bad, but optimization before market trial (premature) can result in you spending precious time working hard on the wrong thing. Optimizing the right thing is good, but figure out what that thing is first.
- brudgers 14y agoIn a publicly traded company, such as Microsoft, that doesn't take long. It is shareholder value. It is not Optimization "for its own sake" promoted in the article. I savvy developer made need to run business tests against their software.
- mistermann 14y ago> It is shareholder value. But in what timeframe? The article seems to imply they are thinking only about short term value and ignoring medium and long term.
- brudgers 14y agoThe article implies that line kernel workers interested in optimization for the sake of optimization are ideally situated to judge what matters in the long and medium term, and that Bill Gates and Steve Ballmer, despite being the two largest share-holders and more than three decades of experience running a software company (apiece) are incompetent to recognize long and medium term strategies. The fundamental assumption of the article - that the Windows kernel should strive toward the Linux kernel management model is patently absurd. FOSS is free as in "free to break software that depends on your code."
- quandrum 14y agoI'm not sure he's arguing the individuals are making better decisions, but rather the sum of thousand developers making decisions is better than the shareholders the C levels at Microsoft. I think a good analogy is centralized government economies vs private enterprise economies. The less people you have making key decisions and the more isolated you are from the effects of bad decisions, the easier it is to evolve and improve. Obviously open source has a lot of failures and took a long time to catch up in certain areas. But things like the Linux kernel have become a massive, unstoppable force that's evolving quicker and more efficiently than ever before. Microsoft simply can't compete with the hundreds of companies and tens of thousands of developers working on it.