Microsoft’s developer problem
marco.org
marco.org
The even bigger problem, I think, will be the lack of dogfooding: most developers of the kind of apps Windows 8 needs don’t use Windows. .. or.. many of those consumer-product developers, now entrenched in the Apple ecosystem, to care so much about Windows development that they want to use Windows to develop for it.
It's easy to think that when entrenched in the progressive, UNIX-oriented crowd, as most of us on HN are, but take a little dive into the Windows world and the scope of even just indie developers working on Windows is mindboggling and totally eclipses the open source, Mac and Unix crowds, in my estimate (though this is truly just an estimate).
Yes, Bing did not beat Google. Yes, their phones have always been second-tier (until this latest batch which is pretty nice). Yes, there are a lot of things that they have failed at.
But the one thing they have that others dont is the user base. Everyone and their mothers has windows (unless you are or are related to a computer geek (like my dad who runs ubuntu)). This is the power of Microsoft, if it can translae all of that userbase from Windows 7/8 to the tablet/phone market, then the game is mostly over for Apple and Android.
Microsoft can do that with a top-notch product, and each new iteration they put out is times better than the last. They also can provide to most enterprises what Apple or Google/Android cannot: a seamless integration of all of their Windows-powered devices (which means that they can still keep their XP/.Net boxes running and integrate them with some API).
They are aiming for one OS to run on everything. Smart move. Takes time, but will ultimately will give them the edge. They have proven to be a dependable enterprise supplier, and giving enterprises more options to compete will just make them stronger.
Will developers write code for it? They already are. You just don't read about it due to the marketing snowball that Apple and Android are enjoying.
If you think about it, iOS and Android have only existed for less than ten yers. Windows has been here since Pangea. You think they survived this long by chance?
Edit: Please fix your webpage. It does not load properly without JS.
I do not see Windows-ish or Microsoft-esque software to be an asset in the mobile field for the great bulk of consumers. It is not a desirable experience, just a now-familiar one.
Absolutely. I experienced that with my father and wife. Ubuntu and iOS empowered them to not be afraid to try something new with the computer/device. When people are not afraid of "breaking windows" a wonderful thing happens: they use the device as a tool of empowerment rather than a tool to get some task done.
After five years those interaction models and expectations are seared in to a large number of people and it is going to take an absolutely incredible product to make her move to another platform.
That is why I said that Microsoft keeps iterating better products. I'm sure hey are about to hit it big. What will make people like your mother or my wife change back to Windows is the integration with the other Microsoft products. The majority of professions (my wife is a teacher) are tied down to MS. Giving them a phone that will integrate with that will just make the others look like Linux looks o someone who has always worked with Windows: foreign.
I do not see Windows-ish or Microsoft-esque software to be an asset in the mobile field for the great bulk of consumers. It is not a desirable experience, just a now-familiar one.
The bulk of consumers would pick something familiar over something new (or even better). They know Microsoft through Windows. They will pick Windows if given a trendy and functional phone that will inegrate wih their life (and not the other way around).
I'm sure many developers find Objective-C/Cocoa/Xcode to be a terrible development environment, but they do it anyway, because that's where the action is.
I don't think many people have the type of religious aversion to Windows or non-Apple platforms that Marco is alluding to.
(Also, are there really any high-profile iOS apps remaining that aren't already available on Android because the developer refuses to write software for Android? Instapaper and Flipboard were the biggest I could think of and it's not true for those 2 anymore)
Plenty of these people want to do more for mobile devices, too. Microsoft is in a position to give them an easy way to do that (especially given the shared base of Windows 8, Windows RT and Windows Phone 8). Will it work? We'll see, but if it fails it won't be because Microsoft failed to interest great developers If it fails, it will probably be because Microsoft failed to interest consumers.
So some of those developers are just the sort of people who might make the leap into the Windows 8 ecosystem. Microsoft has always looked after developers so I agree with fpgeek that it will be more about PR and marketing and image than the ability to attract developers. Indeed PR and marketing and reality distortion was what enabled Apple to become the dominant player in the smartphone market.
(1) See the religious wars article that happened to be on the front page concurrently with this one: http://news.ycombinator.com/item?id=4150951
For the last 2 decades MSFT's whole company strategy is to get developers to make apps for Windows Desktop. Name the last big "Windows App" that made you buy a copy of Windows? The web killed that and iOS and Android made it worse.
Now Microsoft needs devs to make Windows 8 apps and they are hoping that the inherently huge Windows Desktop ecosystem will make it so cheap to port to mobile that developers will build tablet and mobile apps from their Windows 8 codebase.
The only problem is if you have a native app you are talking about 3 or 4 codebases to deal with - iOS, Android, Windows (and its variants), and the web. As it stands now most devs will stop after doing iOS, Android, and web. Who knows if Windows App Store is going to sell enough software for it to be worthwhile to add a 4th codebase.
The opportunity in this is for shops who are willing to port popular Apps to Windows. At this point the only apps that are worthwhile to build Windows first are games.
Edit: plus, if you're already on a .NET codebase, you can target all of those platforms with minimal fuss (and more).
And since there are no apps, there are lots of opportunities just writing the same kind of apps that people have written in the past, except for Metro. It'll be a new gold rush and you can trust me, developers will rush for that new gold.
I have Windows in case I ever need to use FrameMaker again. Sometimes I boot into Windows to play Portal.
So basically none.
Visible Analyst 2008
Net Weaver
SAP client
CoD Black Ops
CoD MW3
Insert tons of other video games
Internet Explorer
And that is just what I personally need a copy of Windows to run.
You are correct about enterprise apps and (many) games. If you are a big gamer, there is not much point to get a mac.
Also for testing website as listed below.
2) Windows Media Center
3) VS.NET
4) Games
Windows 8 may not be successful in the consumer space, but I imagine it has a serious shot at doing very very well in the workplace.
As someone who spends a good amount of my professional life in the Microsoft stack, let me say that there is a bit of a negative correlation going on -- the ones who have embraced Microsoft's failed initiatives (their failure predictable) have generally been, from my observations, mediocre developers. There are some core Microsoft technologies that are excellent, but there are various fire and motion initiatives that have been simply a waste of time.
Comparing the Silverlight community to the Flash community, the Silverlight community is much more concerned about architecture (MVVM, Dependency Injection, IOC, etc), while the Flash community seems to have much more of a focus on 'how to accomplish a visual effect. It's not quite that clear cut, but these are the general trends.
The other significant item is the cost to change development operating systems- Microsoft platforms have been stagnant for too long, HTML is fairly agnostic as a development platform so iOS has been pulling many people there. (Not to mention that a fair number of newer web technologies treat Windows as a second-tier platform).
Some of the larger costs for supporting development on multiple OSes, for a small company:
- Basic systems maintenance (OS licenses, user logins across machines, support, parallels?)
- Consistent development environment- sharing source control between systems, porting build/test scripts, etc
- Related tools- if you're doing a lot of UI work, may also need Photoshop or Illustrator on your new OS.
Having said that the main reason I chose Microsoft as the platform for my products was their commitment to backwards compatibility and the It Just Works policy. As an example, I have an Itanium server running Windows and my applications developed on x86 just work there, maybe not optimally but they do. I believe the same was true of Alpha machines. Windows 8 partly does away with this since the ARM version does not support Win32 applications.
Assuming that ARM is the winner in the tablet arena, any tablet application will have to be built from scratch which poses an interesting dilemma: Which platform should I choose for tablet development? The iPad, Android or Windows? At this moment Windows is the worst choice because it is not ready, there are no devices in the market and, what could be the reason to wait for it, my applications will not "Just Work".
Microsoft does not have a developer's problem but the times ahead are pretty rocky for anyone with a large investment in the platform.
Now, it's worth knowing that line-of-business dev jobs probably constitute a gigantic chunk, maybe the majority, of all programming jobs in the industry. So it's not nothing that those jobs are dominated by ASP.NET and J2EE.
But to Marco's point, line-of-business developers don't have a great track record of marketing applications directly to consumers. "Enterprise software" has picked up its connotations for a reason.
However, a lot of those folks who do J2EE and Dotnet during the day will have fun tinkering at night. So I predict there will be no shortage of amateurish and clunky apps for Metro platforms.
This sounds like hearsay to me. If a gigantic chunk of the developers are working on ASP.NET and J2EE I would be surprised if they did not transfer those skills to their own business when they open one. Stackoverflow is one such case to give an example. So in my opinion, Marco's premise is wrong even though it may be correct within his circle.
The exception to this would be games developers, and I do think games are an important part of a mobile app store ecosystem.
Looking outside of mobile games, the majority of games are developed using Windows and Visual Studio. With Xbox Live Microsoft already has an established online gaming service.
Microsoft has some advantages that they haven't made use of in this niche.
So Microsoft has shut out the Win32 native code developers from the WP7 and mobile platforms by more or less requiring all apps be developed according to Metro specifications.
All the other developers will need to be given a reason to rewrite their app for managed code (i.e. C#) for Metro. The only real reason for professionals to undertake such a task is potential revenue, which isn't there until the users materialize.
Everyone else is mostly using Java or Flash or
something specific to iOS or Android.
That's not true, there's a large ecosystem of game developers writing in managed C#, in the form of the Xbox Live Indie Game market. It shouldn't be difficult to port those to Metro, assuming Microsoft doesn't shoot themselves in the foot somehow.The quality is debatable, but there are over 2,500 indie games according to http://marketplace.xbox.com/en-US/Games/XboxIndieGames. I've heard some success stories.
Most serious games are C++/DirectX anyways, so they should port over to Metro Win8 very easily (they won't have to use much WinRT).
Unless Microsoft sees how many app developers they've lost with this policy and has a change of heart.
This article http://arstechnica.com/gadgets/2012/06/windows-nt-coming-to-... says explicitly "OpenGL ES, the 3D API used by iOS, won't be included, and so 3D applications will have to be rewritten to use Direct3D."
You are right that the lack of OGLES support will probably continue to be off-putting to many mobile developers.
(Rationale: WP8 is based on W8 core, WP7 doesn't support OpenGL ES and if they'd do the work to support OpenGL I'd assume that they'd do it in W8 first, since W8 is where the big money is).
Did I just miss this memo or something? Yes native apps have been enjoying a strong growth curve, but they have yet to overtake web usage in any statistic I've seen. If anything the app fad seems to be losing steam.
For me it is actually rather interesting that they went with HTML first, considering that they had the resources to skip on the HTML version completely. And I'm sure that they did this, not because HTML was the fad of the moment, but because HTML has inherent advantages ... like, when Windows Phone 8 gets released, Facebook will be available for it from day 1, just as it is available on any phone that has a web browser.
And of course they had to go native. Developing web apps for mobile phones is extremely painful. For instance the last time I developed something for an iPhone, upload buttons in the browser were disabled. So basically in the name of user experience or whatever the hell reasons Apple is conjuring these days, they deliberately broke the user experience for web apps by not allowing uploads of photos. And considering this is the number 1 use-case for active users of Facebook, they were forced to go native anyway.
The alternative road, which both Facebook and Google took, was to wrap that HTML in an app container that would let them bypass the browser restrictions (like uploading of files). But this was a bad idea, at least because the web view on iOS has much worse performance characteristics than the browser. For Facebook at least it's amazing how they accomplished the feat of making the native app more sluggish than loading facebook.com in the browser (which is perfect btw, except that you can't share photos with it and it also doesn't have any mechanism for giving you notifications in real time, but I don't miss that because that's what email is for).
Not really. Some amount of development effort will be required to ensure compatibility with any given platform browser. Certainly cross-browser compatibility has gotten better in the nearly 20 years of WWW existence, but it is not perfect. And additionally, you'll have to consider various platform issues such as the upload field on <iOS6 you mention. Alternatively, if Facebook were to work on a native Windows Phone 8 app, they'd potentially have it available from day 1. They have the resources and they'd likely have abundant support from Microsoft.
wrap that HTML in an app container that would let them bypass the browser restrictions (like uploading of files). But this was a bad idea, at least because the web view on iOS has much worse performance characteristics than the browser.
And at most because every other top-tier app which went native instead of HTML provided a vastly improved user experience. Facebook and Google web view apps look and behave antiquated in comparison. Not exactly putting your best foot forward. Google has moved faster, where the G+ app is now native on iOS, providing (perhaps) an improved user experience (at least a valiant effort at one, anyway).
I can't speak for everyone, but exactly how long are we supposed to wait for HTML to become a write-once environment that enables as-good-as native apps? We've had nearly 20 years to address those two issues on the desktop and still both issues exist. I just don't see that ever happening. And users will notice.
"And during that decade, almost every such developer I knew switched to the Mac if they weren't already there, partly because it was better for developing web apps."
This is the first time I've ever heard anyone make this claim, which seems dubious at best. How in the world is the Mac better for developing web apps?
Even if it were true, though, it doesn't contradict my point. Most of the web does not run on ASP.Net ... that's a fact.
For web dev in general the split is pretty even, but if I am looking more at startups or small shops, the balance shifts towards Python/RoR (with Javascript being pretty ubiquitous whether you are on .Net, Java, RoR, or Python).
Still see this more of a tooling cost issue though, which makes sense. MS licensing is not cheap, although I've worked with a suprising number of startups that are on the MS stack, or using a combination of languages.
One opportunity has a choice in development tools. The other doesn't, really. The former market for developer mindshare can and does change; the latter is Microsoft's entrenched base which is never really in jeopardy (nor very relevant to the growth of the tech field at large).
I'd expect the shift to be more a function of cost, since it's a lot easier for a startup to spin up on OSS vs. procure Windows licensing, and it's also a lot easier to get free hosting deals like Heroku, etc. than Windows (although I expect BizSpark is changing some of that).
So I do agree that there are some appealing reasons to start projects on nix and OSS, but ease of development and quality of tooling (i.e. a 'better development experience') is likely not at the top of the list.
As someone who dealt with the nightmare of trying to develop Ruby on Rails apps on Windows in 2006, I assure you that this was a significant issue.
I'd expect the shift to be more a function of cost, since it's a lot easier for a startup to spin up on OSS vs. procure Windows licensing, and it's also a lot easier to get free hosting deals like Heroku ...
This is also true.
In general, Windows was not an ideal environment for developing for the web.
Since the article is talking about Windows Developers, it's probably fair to assume that most of them are knocking out code in Visual Studio. And regardless of one's opinions on Microsoft, it's hard to argue with the quality of their developer tools.
I'd agree then that Windows is not an ideal environment for Ruby development, but not all web dev is in Ruby, and windows is an excellent web development environment if you're building out on the Microsoft stack.
(I'm probably an anomaly in that I actually switched to Windows - from Linux - a few years after that, around 2008)
Of course, the reason for this is that until very recently Apple wouldn't let any version of OS X run under virtualization on any other platform, so if you wanted to test in Safari you had to have a Mac. I think OS X can now be run virtualized, but that's a very recent change.
Aside from browser testing though, having a Unix-based operating system certainly makes development using the open source web stack much easier (though of course you can always run virtualized Ubuntu on Windows).
There has been a Windows port of Safari for awhile so that point isn't correct unless you meant that you couldn't test Safari/Mac unless you had a Mac.
Plus, for the first time you could compile apache and use Photoshop in the same environment.
Then developers who were there early on because of that, started writing the tools that later became the standard. (eg. TextMate, Transmit)
Macro is a mac developer, his friends are mac developers and he somehow determines Microsoft development is dead because he doesn't do it. And we are supposed to believe him in that.
Next step: profit?
I'm expecting many developers that long for a better dev. environment to buy 3rd party IDE's like IntelliJ IDEA & AppCode. They also cost less than what you'd spend on Visual Studio Professional (yes, i know i'm ignoring bizspark here).
Along with this, I'm just not excited about microsoft's pitch with surface as a laptop replacement. I want a tablet that replaces books and paper. Those aspects still require hardware design that feels good in "vertical" mode.
If Microsoft increases their market share significantly, then "everyone" could go to market very fast with Visual Studio. In my opinion they will achieve significant success in less than 2 years.
https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt
and why is OP trying to make up a word where one already exists?
http://www.marco.org/2012/06/22/microsoft-developer-problem#...
The product's portability, interesting design with a kickstand (brilliant!), that clever keyboard case, and the supposedly high-res stylus built-in make this a beast of a convergence device, and I think they may have pulled it off. I have a hard time believing that the non-Pro ARM Surface will be shipping anytime soon, however.
From a development perspective, I'm probably going to rely on the web browser to target this platform for the foreseeable future, though the resources at my disposal have largely made this choice for me. That said, I certainly wouldn't discount the possibility of developers getting a Surface for themselves, and eventually supporting the platform with their apps. They're a pretty sexy piece of kit.
So the type of apps you're going to see for this platform aren't going to be ones sold in app stores, but internal mission critical apps. This community is also very much about supporting legacy and in no rush for the latest and greatest. And while this ecosystem may not be sexy it's very profitable and it's a focus that both Apple and Google are weak at.
Also Microsoft already has the sales relationships with these large companies so they will place orders. To me this is more about Microsoft going after the turf of companies like Dell and HP than anybody else. I have to wonder if we'll see Microsoft branded PCs and servers in the near future. In my mind this is in the same league as Oracle buying Sun.
If they came out with Microsoft branded PCs and made a hit on Dell/HP sales, Dell/HP will fight back and ship Ubuntu. 25% hit on sale would be ... devastating.
You want to know why MS branded PCs won't ever happen? Because Steve Ballmer said so with the above paragraph as an example of the business trade-off.
Tablet, on the other hand, is a different segment.
My gut tells me that this is the first act of a play, and my bet is that we'll see some more back stabbing before it's over. Although my bet is that Dell and HP will be running away from the PC -- or at the very least someone will have to go in that game of musical chairs.
Second, Ballmer said it himself that it will not go down like that for PC business. Why do you think they have x86 and ARM?
I will take your bet when it comes to MS launching its own PC. MS will definitely not do that. I have the insider info up on my sleeve albeit a few years old but still recent.
Like I said, tablet or other devices, other than laptop and workstation, will be a different ball games altogther.
Everybody has too much to lose when it comes to workstation and PC.
While I've heard or read prediction/assumption/guesses/perspective of MS smells like IBM 10-15 years ago (and they are legit, I'm not saying it has no merit), that difference alone is a huge (and fundamental) one.
Speaking of "great ones", there are plenty of great ones that work at MS, just like there are plenty that work for Google. It's just that the "great ones" solve different problems in different domain: most people only heard about smart people working at Google solving problems at scale, while the .NET team (Visual Studio, Compiler, IL, Libraries, etc) are not necessary "trendy" any more.
Judging MS engineers as "average" engineers are simply naive or too cocky without proper education at best.