This article, like many others, seems to overestimate how large the actual numbers of developers is at Microsoft, as opposed to full teams with Test and mgmt and their associated marketing, sales, etc. organizations.
The .NET GC was roughly 1 person (sometimes a little less, sometimes a little more). Most of the base class libraries were one person. Even larger things, like the text editor, were usually a senior person and one or two very junior ones. And this is software that has to run on a not-at-all-fixed set of hardware platforms :-)
In my time there, I never saw or heard anyone "think they can solve problems by throwing lots of people at them." Uniformly, the decisions made to get things shipped were to either cut the features that were the combination of the furthest behind and least value to the market or to pull over extremely senior talent that had already gotten their parts shipped.
Of course, it was a big company, so YMMV. Can't speak for much more than dev tools, office, and windows.
I can honestly say that the Microsoft interview was the most difficult, draining 6 hours of my life. And that was for an internship -- basically interviewing to do a 3 month interview. I don't think anyone who's been on the inside would say Microsoft just "throws" developers at their problems.
FWIW I heard a story of the "Find Dialog" (Ctrl-F) in Excel being written by a separate team of several people that included few developers, few testers, a project manager and a technical writer. It was in '94 and it was told by a guy who presumably left MS not long ago in the context of describing the benefits of the COM.
Not to be obtuse, or maybe miss the joke, but how can you sometimes have a little less than 1 person working on one of the most important parts of your runtime?
"Full-time equivalent (FTE) is a way to measure a worker's involvement in a project, or a student's enrollment at an educational institution. An FTE of 1.0 means that the person is equivalent to a full-time worker, while an FTE of 0.5 signals that the worker is only half-time. Typically, different scales are used to calibrate this number, depending on the type of institution (schools, industry, research) and scope of the report (personnel cost, productivity)."
how can you sometimes have a little less than 1 person working on one of the most important parts of your runtime?
You make sure that person knows a lot about garbage collectors? If he's implemented garbage collectors before and is up-to-date on GC research, there's no reason one person couldn't implement it alone.
Maybe that's the problem at Microsoft: they think they can solve problems by throwing lots of people at them. They put together large teams to build products. And large teams require managers.
I didn't know Microsoft had a problem, they seem to be doing pretty well. They have some good products. Apple being successful doesn't necessarily translate to Microsoft sucking. They are both damn good companies.
@volski: "Apple being successful doesn't necessarily translate to Microsoft sucking."
Completely true, and as Steve Jobs famously said in 1997:
"If we want to move forward and see Apple healthy and prospering again, we have to let go of a few things here. We have to let go of this notion that for Apple to win, Microsoft has to lose. We have to embrace a notion that for Apple to win, Apple has to do a really good job."
@volski: "I didn't know Microsoft had a problem, they seem to be doing pretty well. They have some good products."
Personally, I use Microsoft Excel and Microsoft Exchange, and I feel they are best in class. For every other product they offer, I feel there are better alternatives.
The notion that Microsoft has a problem stems from the fact that most of the new product lines that Microsoft has put to market in the last 10 years, few have been a success. Microsoft's profit comes mostly from licensing and servicing Windows and Office.
Meanwhile, in the last 10 years Apple has introduced iTunes, iPod, iPhone, and iPad -- all mega hits. What makes it a sad sight to see is that every time Apple comes up with another iDevice, Microsoft tries to compete, and it simply hasn't worked out for them. Windows Marketplace, MSN Music, Zune, Kin, Windows Mobile 6.5, Courier -- the list goes on.
A dose of reality, Microsoft was in the smartphone market long before Apple. WinMo 6.5 was the last in a line of OS releases from the CE lineage that was incredibly successful. Apple for all its success with iPhone did not truly pioneer this space, they embraced and extended to borrow a term.
IBM was a damn good company for many years after the industry had effectively left their technology behind. Even today they make serious money; if that satisfies your criteria for doing well.
They just didn't grow in proportion to the industry.
And they've had to cut and refocus on their core products to maintain profitability.
Microsoft is now in a very similar situation.
Fumbled opportunity might not drag down today's numbers, but it's still a problem.
"Apple being successful doesn't necessarily translate to Microsoft sucking." - absolutely.
I remember reading somewhere (I'll post the link if I find it) that in terms of computers, Apple and Microsoft actually occupy very different positions in the market. Apple have something like 91% market share in desktops and laptops priced above $1000, while Microsoft dominate cheaper priced machines (how many Apple computers can you buy below $1000?). A person who is a Mac user is unlikely to voluntarily switch back to Windows, they tend to keep buying Macs despite the price tag (product differentiation justifies the price in their mind). How many people spend over $1000 on a new PC? Gamers and people who need/want advanced hardware, but they are in the minority of PC users.
Obviously, this is in relation to the historical relationship between Apple and Microsoft, now Apple is mainly a consumer devices company in terms of revenue, and Microsoft will go toe-to-toe will Apple in the tablets and smartphones markets soon. Will be interesting to see how the relationship fares as this happens.
I didn't know Microsoft had a problem, they seem to be doing pretty well.
In the mobile market? How about anything next-generation web? Social media? Microsoft doesn't seem to be doing well anywhere except the increasingly unimportant desktop and Office suite space.
Windows Live, Bing, Xbox, Servers, Cloud Services...
It's easy to bash on them, but they make quality products in a diverse range of markets. Sure they fail and fail big, but who the hell doesn't? If you have made anything successful, you've probably failed 100s of times. It comes with the territory.
Um, not to get all defensive, but we at STB are making quite a bit of money. It's probably over a million a quarter per developer. I don't know many people who can say that. ;)
Are you only including developers, or all the people who work on a product? I imagine that MS has a rather large team of non-developers working on products as well.
You want to be careful with that metric. You know the cleaners don't make much money, why not fire them?
I did actually mean all the people that work in development on the product. That is, in MS terms, all SDE, SDET, and PMs. I happen to know this figure is accurate for Windows (over a million per developer), although that doesn't include sales/marketing, administrative costs, etc. As for the cleaners comment, I don't really get your point.
Anyway, my statistic wasn't really meant to be taken that seriously, just proof that server is actually making money over here.
As I remember correctly, Office saves everything else at MS right now (by a large margin, followed by OSes). The gaming has recently been making more money than they are loosing (and will probably become their next important money maker). But the rest of the revenue makers are so low compared to those three that it's not even funny.
I suspect that they will probably announce service based offering (consulting) type in the long run (5-10 years maybe?) because they might not be able to sustain high margins of profit on Office and Windows sales due to competition and alternatives.
Right now they don't seem to have a great vision either, so we'll see were they are heading...
So I guess that we can say for sure (2009-2010 numbers) that online stuff is now loosing money, windows is now doing better that office, and gaming is quite behind but stable and profitable (albeit a lot less that office or windows). Let's be frank too, were talking about billions here, so those segments are quite big.
That's okay though - At least MS is smart enough to make an investment in a nascent technology. I bet everyone is losing money on the cloud, or barely breaking even.
Even Rackspace's Net Income is only 10 million dollars, coming off of 178 million dollars worth of revenue.
MCS (Microsoft Consulting Services) has been a business component for them for a long time. Whereas someone like IBM-GS seeks to make as much margin as they can off the services side, MCS is in the unique position of being willing to make smaller margins because the licensing revenue is significant. That attitude has been changing in the past 5 years but it is still part of the MCS culture.
"The engineers on the Mac OS and iOS teams move back and forth between the two projects based on release cycles and what's needs to ship next."
As somebody who has been rather dismayed with the way the Macintosh platform has started to stagnate in the past couple of years, I don't really view this as a good thing.
Just over a year old, and just past two years since Apple first showed it at WWDC 2008. Snow Leopard was a relatively minor upgrade even by Apple's admission (hence the price tag $100 lower than for previous iterations), yet it still suffered delays because of work on iOS.
Meanwhile, there was zero mention of anything Macintosh at WWDC this year, meaning we're probably at least a year off from any real news at 10.7, which would put us at 4 years since OS X has had any significant user facing updates.
To be honest, what more do you want to see in it? Perhaps Apple should go down Microsoft's route, and add more and more stuff until it looks and acts ridiculously.
In the time since 10.5 was released, MS has gone from the creaking, ancient XP to putting out Vista (yes, with some rough edges) to Windows 7, which is, frankly, the best desktop operating system that Microsoft has ever produced.
The superbar is a better dock than the Dock. Windows Search was a usable app launcher before Spotlight was. Aero Snap and Peek are useful window management features.
During the same time period, desktop linux has rapidly evolved, with Ubuntu 10.04 being a very polished UI on top of a *nix base -- something which used to be OS X's great claim to fame.
What I'm getting at is that Apple has been so focused on the mobile sector that they've been consistently and thoroughly out-innovated by their competitors in the last several years. I don't understand how anyone could argue that Apple resting on their laurels after 10.5 while Windows and Linux has consistently moved forward could possibly be a good thing.
I mean, remember WWDC 2006 where Apple was bragging that they were releasing Vista 2.0? [1] What about WWDC 2004 with the "Introducing Longhorn" banners? [2] For much of the last decade, Apple was at the forefront of desktop innovation. That hasn't really been the case since they started focusing on iOS, and the fact that they're pulling manpower from the Macintosh to work on iOS is a key factor in why.
Realistically, Apple hasn't even been all that innovative at all. They haven't really come up with all that much that's new, they've just been making existing things looks nicer than everyone else does.
If you look at OSX and Windows 7 from a purely technical angle, they aren't actually all that different. They both have an increasingly analogous set of libraries (Cocoa looks more like .NET every time I visit ADC's site, though Apple still isn't in Microsoft's league as far as development tools and languages).
Apple has done some innovative things, like OpenCL -- which, naturally, Microsoft is copying... but in the end, the differences between OSX and Windows 7 are largely user experience, not technology.
That's not a bad thing, but it does highlight the fact that most of the "innovation" that Apple has been touting over the years hasn't been innovation, it's been lambasting Microsoft for not having its act together.
I suspect that Apple is focusing on mobile computing and the cloud partly because there's no technical way to differentiate its computers from everyone else's any more. Their internals are built by the same companies that build everyone else's internals... so the only differences left are the operating system and the chassis. That's not going to do wonders for their margins.
>To be honest, what more do you want to see in it?
An App Store for OSX would be nice. Or even just a repository mechanism - I am so sick of updating the apps on my Mac systems when my multiple Linux boxes are always up-to-date with the latest stable releases.
Its 2010, can we please have an OSX repo mechanism, Apple?
Some apps use third-party libraries like Sparkle to provide this. But it's inconsistent between applications with no guarantee that any given app is updated without user intervention.
Oddly, Debian has about the same release cycle (once per 12-18 months), and ends up being the butt of lots of jokes about how they rarely ever release anything.
Debian has only recently settled on a 2 year feature freeze cycle. In the past, Debian has suffered from releases being pushed back due to constant feature creep in the name of stability -- that's much of the reason why Ubuntu was forked from Debian in 2004.
So the jokes may be dated in 2010, but there's a reason they came about in the first place.
I would agree with the general point, but if we're talking about end-user features, even Apple admits 10.6 was under-the-hood, so we haven't seen any UI enhancements since 2007 (10.5's release).
10.6 was the setup that is needed for the future. All the under-the-hood stuff is going to make a huge difference once developers focus on it and start ignoring <= 10.5.
Small, Independent Teams. Small teams
allow work to be done efficiently, quickly,
and carefully. Only three people work on photos, for
example, the largest photo site on the internet.
I am reminded of one of the companies from Neuromancer. Was it Maas-Neotek? Gibson described most large companies as being composed mostly of flab, with a few hard bits of "edge." But there was this one large company that was all edge. It was a predator amongst its peers.
For awhile Apple was just eating everyone's lunch because they were the only ones who understood end-to-end User Experience.
Apple's stated strategy for quite awhile was having the computer as the "digital hub." The target was clearly a merging of all media with the computing experience. Can you imagine what Microsoft could've done with XBox if they had UX and vision in the same league as Apple? It was like they already had troops dug in place in the key strategic spot. Apple would've been crushed. Instead, Apple walked all over them.
To be honest, I thought the remote app was great for about 5 minutes. Then it suddenly couldn't connect to my library until I went back and re set the code. It functions exactly as if one guy wrote it and never updated it.
As a UI developer with about 5 years of experience, that seems about right to me. I think I could have written that app given about 8 months. Heck, I suspect that the page turning animation was a relatively small part of the development.
I don't consider myself a fantastic developer either. I'd be suspicious of any developer with a few years experience who couldn't write an application like that given the right amount of time and motivation.
This isn't to belittle your comment, just that I'm thinking to myself "yeah, that sound correct".
I think more interesting than the fact that one guy wrote the entire application is that Apple gave one guy the time and space to create the application on his own.
I can't stand it either and I think Kindle has a better e-Book reader than Apple. Amazon did a good job at thinking, "this is not a book... this is not a book" where-as Apple brought all of the physical things from a book into an electronic application.
I always think its a mistake when unnecessary physical metaphors are copied directly into software. The page flip, and pages around the content, are all completely unnecessary for eReaders to work. If the Kindle has proven anything, its that people don't need to see pages and page flips to understand how to go to the next screen.
"Maybe that's the problem at Microsoft: they think they can solve problems by throwing lots of people at them."
Does the author provide anything to support this claim? and seriously, I wonder why every pro-apple author couldn't resist the urge to belittle other companies. No company is "perfect".
I'm really not sure how this is relevant to a company that has over 15,000 employees (non retail). If you've done any work for apple or their HR department you would most certainly know it's not run like a startup.
downvoters: Sorry if this question was offensive; I'm asking about if the "apple is like a startup" trend continues into developers being able to choose what kind of tools they want to work with. My complaining about my MBP isn't meant as a critique of apple, I'm just saying that if it was me I would probably choose a linux machine, not a mac.
I apologize for the off-topic question, but is anybody here a coder for apple (or has been in the past?)?
Are you allowed to use a non-apple computer if you work at apple?
I just got a macbook pro over the weekend (my first mac) and it seems like they've really gone out of their way to make this as difficult as possible to write code on. No page up/down keys...no dedicated delete key, no home/end keys...it seems like the UI is designed around the mouse. Alt-Tabbing seems really neutered in comparison to the gnome/kde/windows equivalents...and the solution that is offered is the expose' key (which works, but involves using the mouse).
Is there just a steep learning curve? Don't get me wrong, the machine is very pretty, but it seems like the type of work that geeks do was ignored when they designed this laptop (like having no dedicated right click key?)
Obviously they were talking about apple being run like a startup in that the teams are small...one of the things that I see advertised on some job postings for coding jobs is that there is a LOT of flexibility on what your workstation is...is it like this at apple?
Also, in Exposé it's possible to tab between applications and use the arrow keys to select windows.
As for right click: on an Apple trackpad, two finger click works much better for me than right click (either tap with two fingers or click with the thumb while two other fingers are on the trackpad) ever did on a windows laptop. YMMV.
FWIW, I also prefer the Mac ⌘⇥ (command-tab) behavior. You can drag stuff in and out of command-tab, you can hide or quit applications from it (Q and H keys), you can use either keyboard or mouse (or scroll wheel) to select apps, etc.
I think you’re mostly just unfamiliar with it... which is perfectly natural, but you might try phrasing your question in a less aggressive manner.
See also this: http://support.apple.com/kb/ht3211
You can configure some area on trackpad, clicking ther will register as right click (bottom right corner, for example).
Not devs but it is rumored that deep in the inner sanctums of the product engineering/design labs there are PC workstations running 3D/CAD/CAM/CAE software.
Well given that there are several pieces of Apple software that run on Windows (Safari, iTunes, QuickTime, etc) it would be strange if at least some developers didn't have access to Windows boxes. Although it's entirely possible that these run mostly on Apple hardware, surely they need "generic" PCs as well for testing.
Anyone who really chafes with the UI model of OS X probably wouldn't apply to work in Software at Apple, and even if one did you'd probably get rejected for other reasons.
If you're chafing on command-tab, try hitting its complement command-backtick
As for tools, you can use whatever you think is best for the job, it's just that for anything that touches the GUI the best tool is going to be Obj-C/Cocoa. In other places, the HN mindset comes out to play pretty hardcore:
The process sandboxing engine introduced in 10.5 is an embedded LISP
Their CalDAV and Wiki Server implementations are in Python with Twisted
They once shipped a desktop app written in Rails. Really.
The iTMS backend is all Java, and at least formerly used WebObjects heavily
For a while they had a bunch of GUI Java apps written with their Java/Cocoa bridge
They've let motivated employees write Obj-C bridges for Perl, Python, and Ruby (x2)
The guy that wrote two Ruby bridges is now doing a native Ruby implementation
They've got at least 3 independent javascript frameworks shipping with webapps
>Alt-Tabbing seems really neutered in comparison to the gnome/kde/windows equivalents...and the solution that is offered is the expose' key (which works, but involves using the mouse).
I agree with a lot of your other points re: the keyboard layout, but FYI on this -- OS X is app-centric in its WM rather than window-centric. (Coincidentally, W7 has moved in this same direction with the Superbar).
CMD-tab cycles through applications; once you've gotten to the application you want, use CMD-` to cycle through individual windows. It's a little bit weird at first, but once you get used to it, I honestly think it scales better for navigating large numbers of windows.
One of the first things you need to do is goto the Keyboard section of System Preferences and enable Full Keyboard Access for all controls. Makes OSX more keyboard friendly.
There are chords you can use to replicate some of those functions in any Mac OS X text input field--command-up or command-down is top or bottom of block, command-left or command-right is left or right of line.
Personally I just use vim--using the normal letter keys for navigation and jumping to insert mode is easier to me than chording or reaching over to the far reaches of the keyboard. If you're not vim-inclined, I'd use the Mac OS X chords.
To a certain extent you have to learn the "Apple" way of doing things. It does result in performance improvements (I think XCode's a pretty nice piece of software). That said, my preferred development environment is a UNIX terminal, vim, and a web browser, so I happen to see OS X as one of the best development platforms ("Get out of my way, don't make me worry about the system, and let me code!").
Its indeed awesome for a company as large as Apple to keep things this way. I have several friends at Cisco and Oracle and the teams there are just bloated beyond belief. I think a lot of this flows top down and the management needs to get it. Once you work at a well-run startup, you know that the only way to get things done is with small teams and a core team of star engineers who move around and get things done.
Is this really that surprising? It doesn't seem that complicated a project. Big companies surely don't have a team for every little project.
Wasn't the Facebook app written by one guy. Also TweetDeck was originally by one guy. Wasn't Reddit built by 4 people and Posterous basically by 2 or 3 people? And all for those apps the same people did all the business and marketing too.
No. Nobody said that. It's an example of how Apple works. Rather than having large teams with hordes of managers, Apple has a bunch of engineers who are trusted to be competent and work on whatever's needed. This way of working is more akin to a startup than a typical BigCo.
I've worked at several BigCo's and they all basically worked like that. Now admittedly non of these companies where pure software or computer companies, but still in my experience the whole "large teams with hordes of managers" seems to be very much the exception rather than the rule once you actually take a look at most companies from the inside. The only "hordes of managers" company I've actually worked at was a smallish company (around 50 employees)
This article does suggest Apple works this way with everything. Of course Apple isn't a startup; they're a multi-billion dollar 35-year-old company, but they do take a similar approach to organizing their teams.
No, that's just an interesting fact from the article. I assumed they assembled a crack-team of iPhone engineers to bang this out. I was surprised that one person put together such a high-quality app, especially in a company that could afford to throw lots of money/developers/teams to solve this problem.
That reminds me of an old story about the Texas Rangers. In 1896, Texas Ranger Captain Bill McDonald was sent to prevent an illegal prizefight in Dallas. Upon his arrival, the mayor of Dallas was confused why they only sent one Ranger, to which McDonald responded, "Ain't I enough? There's only one prize-fight!"
The story isn't true (there were several Texas Rangers on hand to prevent the prizefight) but I'm not surprised there's one, really talented guy working part time on the Remote app, as "there's only one app!".
Then a headline á "The Remote App Was Made by One Guy" would serve the article better than the sensationalist one defining all of Apple after this one project.
Maybe if Apple had more people they could make Mobile Me work like it should, release a new Mac Pro more frequently than once every two years, have a 64bit completely multithreaded Final Cut Pro written in Cocoa APIs, or something something antenna something…
The .NET GC was roughly 1 person (sometimes a little less, sometimes a little more). Most of the base class libraries were one person. Even larger things, like the text editor, were usually a senior person and one or two very junior ones. And this is software that has to run on a not-at-all-fixed set of hardware platforms :-)
In my time there, I never saw or heard anyone "think they can solve problems by throwing lots of people at them." Uniformly, the decisions made to get things shipped were to either cut the features that were the combination of the furthest behind and least value to the market or to pull over extremely senior talent that had already gotten their parts shipped.
Of course, it was a big company, so YMMV. Can't speak for much more than dev tools, office, and windows.