
Microsoft's developer crusade - autodan3
http://www.zdnet.com/microsofts-developer-crusade-7000017636/
======
henrikschroder
> A shift from Windows applications to the web has, contrary to popular
> belief, not hurt Microsoft's developer story.

What the?

In the 90's, if you wanted to "program", and if you wanted to show other
people your skill, you made a windows executable and distributed it through
one of the myriad of windows shareware/freeware websites. "I want to learn to
program" meant firing up Visual Basic and having a go. And Microsoft was king,
because they had the best tools, and they had the platform everyone was using
and targeting.

Now, almost noone makes windows executables anymore, if they want to show off
their skill. People wanting to learn to program would never use Visual Basic
today, it's completely off the radar. They are much more likely to learn some
web framework and put up a web app to show the world, or make a phone app and
put on an app store. Windows executable? That doesn't run on your iPhone or
MacBook or Android.

And Microsoft has no idea on how to get the new learners back. They have
nothing to offer them.

~~~
opminion
There is a huge cultural divide between what you seem to think and the .Net
world.

(I agree with you, but know plenty in the other camp and it took me a while to
understand them).

Someonebody should document that gap, if it hasn't been done, in the same vein
as The Cathedral and the Bazaar.

~~~
henrikschroder
I know there are a lot of developers doing a lot of work for a lot of
companies on the MS stack.

My point is that there's no influx of young aspiring programmers entering that
world anymore. The ones that are there now got there by picking up VB or VC++
as kids, but noone is picking those up today, and MS has absolutely no idea on
how to attract new developers, none of their offerings are interesting to
someone new to the field.

~~~
seanmcdirmid
So you are claiming that the average age of a Microsoft developer (one relying
on the Microsoft ecosystem) is edging up rapidly? I would love to see some
hard evidence about that, though its definitely plausible.

At least on hackernews, the number of Microsoft developers seems to be quite
small (a poll would be interesting though).

Disclaimer: working for Microsoft, speaking for self.

~~~
henrikschroder
I'm saying that their mindshare has been shrinking constantly since the 90's.
They really didn't have any serious competition back then, but they have so
much competition now, and they don't stand out anymore.

Yes, their stuff is good and competent, and they're serving the needs of their
existing customers and developers, but they don't make kids _excited_ to fire
up Visual Studio and crank out a Windows Phone app, the same way they made
kids _excited_ to fire up Visual Basic and crank out a windows exe back in the
day.

There aren't any success stories around the Microsoft ecosystem anymore. Who
makes the quick bucks today? Phone game developers. Facebook game developers.
That's what people are chasing, so that's what people are wanting to learn how
to do on their own time.

Who wants to learn how to make Windows Phone apps? Or Silverlight apps? Or
Windows app store apps RT or whatever the hell they called that mess. Noone,
except those already being paid to do it. There are lots of steady jobs there,
but exciting ones? No.

~~~
seanmcdirmid
Well, kids were excited to fire up Visual Studio and write XNA code for their
XBox. They might be excited now to use DirectX in the same way, though the
barrier there is much higher. Then what about F#, TypeScript...Kodu and
Project Spark?

All of this discussion is anecdotal, we have no hard evidence really what
developers under 30 think about Microsoft. And kids are extremely dynamic and
fickle anyways, they will quickly adopt any technology that helps them achieve
their goals as things fall in and out of favor. So its not like there are hard
external barriers to Microsoft winning back young dev mindshare, only internal
cultural ones.

We also seem to do much better in Asia (China, where I'm more familiar) in
outreach than the west. Perhaps that is temporary and a result of
startup/hacker culture not really taking hold here, but for the present we
seem to be doing very well.

> There aren't any success stories around the Microsoft ecosystem anymore.

This is quite a weird statement. In the enterprise, there are plenty of
success stories that even I can't understand, like Sharepoint. Perhaps you
mean the lack of "sexy success stories"? I could agree with that.

------
vlasta2
I have been making native Windows applications for years and I am still making
them. Around year 2000, Microsoft was a reliable partner. They made the OS,
provided the tools and others were free to make any applications they liked.
There was little to complain about.

These days, being a Windows desktop software developer is pretty bad. Leaving
out all the .net framework craze, Microsoft has made things much worse for
many old software developers with their attempts to control everything. I am
not OK with Microsoft being the one, who decides, whether users may run my
software or not. I simply cannot develop for WinRT no matter how nice the
native+HTML5 API may be. Even on desktop, Internet Explorer checks every
download and hides the install button if the installer is "untrusted".

In short, Microsoft is not a reliable and respectful partner for independent
software developers anymore.

------
binderbizingdos
> But the company has adapted to the new developer world, embracing the cloud
> and open source and contributing important new technologies to the developer
> community.

Ok, don't make me laugh.

I wonder how much they pay him for writing this stuff.

~~~
WayneDB
Which part did you disagree with and what evidence do you have that it's not
true?

Have ya not heard of any of the hundreds of open source projects that
Microsoft has released? Typescript? ASP.NET MVC? Entity Framework? Reactive
Extensions for .NET and Javascript?

Oh, did you expect them to just open source every single one of their products
or something? Apple and Google don't even do that and I bet you love them,
don't you?

------
vijucat
Any developer with a memory would be quite mistrustful of this "crusade", if
any. Microsoft's pump and dump of technology stacks just plain hurts; the way
they just made COM/DCOM nearly invisible by deleting the MSDN support pages
and replacing them with .NET to force developers onto .NET was not pleasant.
Granted, .NET was / is awesome (and if you were serious, your firm would have
the relevant version of MSDN installed locally). (I recently heard about
something similar happening with Silverlight, but I am not sure. It was
genuinely exciting when Silverlight was launched and it's features in
comparison to Flash were trumpeted quite a bit at that time. Now : it's just
silently gone). You never know when the rug gets pulled from underneath your
feet with any Microsoft technology.

Let's say they get convinced that the next big thing is some form of
Intentional Programming. They are not going to do a graceful transition from
.NET to IP. They'll suddenly remove all references to the Old Thing on
site:microsoft.com and all you'll see is the New Thing, trumpets blaring. This
is psychologically difficult for a developer who has invested years, not just
months, learning the Old Thing.

The same attitude is visible with how the Metro UI is being shoved down my
visual pathways with Win 8.

A related but often tacit issue is that the pace of change in technology is
actually a vehicle for age discrimination. All of us do it at some level
("Good God, COBOL on the resume?! What is this, 1979?"), but I think that the
lack of graceful transition from older technologies to newer ones by large
firms makes it institutionalized. You have to choose your skillset carefully;
the human mind cannot simply absorb ALL of COBOL, C++, Java, Ruby, SQL and
NoSQL! Or it can, but you're sacrificing something, maybe even personal
memories, in order to hold technical knowledge.

~~~
berntb
I guess this particular problem might get better in the future.

Microsoft had a monopolist strategy, so it was in their interest to e.g. make
those monopolist products hard to interface with other companies' alternative
software.

This means the APIs had to be complex with subtle bugs, so e.g. something that
could run Windows applications couldn't easily be cloned -- and, as you note,
periodic replacements are also needed.

Since the monopolist strategy isn't that productive anymore for MS, the pump-
and-dump phenomenon _ought_ to get better...

Edit: Also note that over complex functionality that is regularly thrown away,
so developers' investments are lost, is lowering our collective life quality.
I don't use MS products anymore. Maybe when/if they need to compete without
monopolist strategies...

~~~
vijucat
"complex with subtle bugs" describes the experience so well!

------
bsaul
Microdoft lost developpers when they traded bill gates for steve ballmer.
Putting a salesman on top instead of someone who knows the art is the surest
way a company can completely loose itself. We've seen that over and over
again. There's a reason why in the old family business boss' s sons had to
start from the bottom, doing grunt work first for some years, then climb the
ladder little by little, until they could pretend to replace their fathers as
the boss.

~~~
megablast
Do you really think things would be any different under Bill? I am not sure
what you think would change.

~~~
bsaul
I'm sure it would. Salesmen always see money first, art seconds, and they
can't have intuition or give general direction regarding technical aspects. An
example of that is windows 8 fiasco with its mix of tablet and desktop UI and
surface fiasco. It is clear that they are following trends, but don't know
where they're going. I can easily imagine ballmer looking at market shares and
numbers to make choices issues by issues. That kind of thinking leads to
products that are in the middle of nowhere.

~~~
rbanffy
I don't think billg sees art first and money/power second, but, at least, he
can see art. It sure seems Ballmer doesn't get programming in any meaningful
way.

------
300bps
I've been a Microsoft developer since QuickBasic. I program mostly in C# now.
I love ASP.NET MVC. I love the new features in Visual Studio 2012. I love the
extensions to C#. I work full time at an investment bank and do side
consulting for creating highly functional websites. I see pros and cons of
every framework and language but .NET and C# are the best for me right now.

There's a lot of negativity here and frankly I was a little afraid to post
anything positive.

~~~
Avalaxy
I'm still a student. I started with Java, but found out about C# after
programming Java for 2 years. I'm so glad I did. C# is (in my opinion) much
better than Java, it has loads of very useful features (LINQ, very easy
async/parallellization, delegates, lambdas, a good UI framework) and Visual
Studio is a much better IDE than Eclipse and NetBeans will ever be.

I mainly used C# for some client-side stuff, but then I found out about
ASP.NET MVC, which is extremely easy to use and offers a lot of flexibility.
It's also nice that they made it open source (just like Entity Framework,
which is brilliant too).

Later on I came into contact with Azure. I didn't even know about Azure untill
I saw Scott Guthrie's presentation about it on TechDays. I have to say I'm
absolutely in love with Azure. Azure has seen phenomenal improvements over the
last few years. In my opinion Azure has surpassed Amazon's cloud offering by
far. They offer more features (imho especially the PaaS is awesome, their
services make sure you don't have to deal with sharing stuff between multiple
servers), offer both Windows and Linux servers (for very good prices), it's
really fast and it's also cheap (prices are the same as Amazon's, plus they
offer huge free trials). Oh, and their libraries for Azure are open source
too.

There is no denying that Microsoft created a LOT of awesome stuff the last few
years... They really changed into an open company.

~~~
300bps
>They really changed into an open company.

They were forced to change into an open company in regard to development tools
because of competition. And that's a great thing!

I think the programming world would be worse off without the spectrum of
options available to programmers today. As it stands now, no development
company can rest on its laurels and is forced to innovate and adapt.

------
RyanZAG
If Microsoft wants to succeed at this angle, they are going to have to make a
decision. Full, first party support for .net and other products on Linux, OSX
and Android. Complete app portability between all platforms, with all
features. (This means OpenGL, not DirectX, etc.)

If they do that, developers will love them, but their Windows division will
kill them. If they don't do that, only developers who don't know any better
will use them.

Good luck, Microsoft, you're going to need it.

------
beagle3
Call me when they stop threatening Android makers, and after the next
standardization effort that affects them but they don't sabotage, and I might
consider them again.

------
skrebbel
I'm a big fan of Microsoft's dev tooling and platforms, but this article is so
full of nonsense that I don't know where to begin.

------
EdSharkey
The last great IDE Microsoft put out was Visual Studio 6: the C++ compiler
optimizations were amazing, the UI was zenful (you had to know your hotkeys
for things, gasp!) The darn thing just did everything, and I enjoyed working
with it.

Versions after 6 had more and more panels and property sheets started
cluttering up the works and crowding out my editor, and there were lots more
things begging for the mouse rather than the keyboard.

Seems like their tools philosophy changed after Y2K. It was writing on the
wall for me to move on when Ctrl+Tab/Ctrl+Shift+Tab in VS stopped working like
a stack of MRU editors because they started adding visual/clickable tabs at
the top for all the open editors. "It would be confusing", said the
marketdroid, "to have Ctrl+Tab jump all over the place between these tabs here
- better to just cycle left and right through the editor tabs in the order
they are displayed." Sigh.

~~~
skrebbel
Ctrl+tab is MRU in VS2012. Or at least it is on all my machines and I never
had to configure anything there.

Also, you're complaining about very superficial stuff. My VS layout has a file
explorer on the left, big code view on the right, current errors and warnings
/ console output on the bottom, and that's it. How is that bloated? It's
basically what sublime text looks like, but then whiter.

It literally takes 2 minutes to hide all toolbars and install the 'Hide main
menu' extension, what's the problem?

------
EdSharkey
Oh, and Microsoft, if I have a process that opens a file, could you PLEASE
stop locking the file in your weird and arbitrary ways?

How many times have I had to kludge my code for running on Windows because of
file locking policies that were in place for, what, DOS 3 compatibility?

It's no wonder to me why deploying to Linux is so popular. Draconian file
locking policies in Windows, huge PITA right out the chute.

~~~
asveikau
Usually this is the application's fault. When you open a file with the Windows
API there is a bit mask of what another handle can do (read, write, and
delete/rename). The problem occurs when you specify 0 for this parameter
because you're looking at MSDN and you don't know what any of this means. That
locks out concurrent access to the file.

There are some other weird behaviors that probably shouldn't be there (such as
renaming the parent of an open file or the behavior when an open file is
deleted) but an application misusing the sharing flags is probably what you're
thinking of.

~~~
EdSharkey
So you're saying, for example, that you can delete files that are currently
open in another process in Windows? So not hypothetically: you've personally
succeeded at deleting a file on Windows that is currently open in another
process?

Also, is it the other process'es responsibility to open those file handles
with the confusing, poorly documented, non-zero flags so that I can
read/write/delete from my process? What if I don't own or control the other
process? Am I just screwed in the majority of real-world cases?

I suspect the problem here is a lot more complicated than me not setting open
flags and getting all cross-eyed when visiting the CreateFile page at MSDN.
The real problem is Microsoft's insane default file open semantics that do
exclusive locks purely for the sake of compatibility with 30+ year old legacy.
I've lost face on jobs because of file locking going on that was out of my
control and creating havoc in my app. If we were targeting Linux, there
wouldn't have been a problem, so the status quo is not okay.

In my opinion, Win16/32/64 code should be sandboxed and only run in VM's in
future OS'es; shed the legacy design decisions like pessimistic file locking
completely. Trash the standard Windows API (not just hide it) and give me a
next-generation Posix or CLR as a sane platform for new development.

~~~
asveikau
> that you can delete files that are currently open in another process in
> Windows?

You can. However, there is an unfortunate behavior here that is different from
Unix. When you delete an open file you cannot re-create one with the same name
until the handle is dropped. (Once that gets to the NT APIs it will fail with
STATUS_DELETE_PENDING until the last handle is dropped).

You could work around this by doing rename + delete instead of just delete.

I thought this behavior was dumb until I looked at the on-disk structure of
FAT. No inodes. The filename is your inode. It makes it easier to implement a
FAT driver if the semantics are such that the name entry sticks around until
the file closes. That is a weak excuse, and sadly the people in the Windows
division with the power to change this don't really care about it. (FYI, I
worked in the Windows division from 2008-2011, not that I defend everything
they do.)

> poorly documented, non-zero flags so that I can read/write/delete from my
> process?

Yeah, I agree this was kind of stupid. There are internal folks at MS, some of
them quite influential, who think it's stupid too. But it's already been done.

> The real problem is Microsoft's insane default file open semantics

It's only "default" in that if you pass 0 it's what you get. If you think of
"default" as FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE (and if
everyone writing Windows software had that in their head) things would be a
lot better. Granted that's a big if.

> Trash the standard Windows API (not just hide it)

This is the same fallacy a bunch of internal people came up with in Windows 8,
however the truth is large chunks of the Windows API have nothing wrong with
it. For example with what I'm sure are very simple changes in ntfs.sys, the
corner cases around files being open [the ones I mentioned in my earlier post,
not the ones around sharing flags if we consider them "by design"] go away,
without invalidating every API in existence.

~~~
EdSharkey
> You could work around this by doing rename + delete instead of just delete.

That's um, inconvenient. I've heard similar tales, but I'd wager there are
many more corner cases that could bedevil us. For example, what about .dll's
and .exe's that are currently open in other processes? My experience has been
that you simply cannot do anything with those files once they have been
opened.

The whole Windows file system just seems like a rat's nest of bad and worse
design decisions.

> Granted that's a big if.

Stop. This is a bad design decision that has surely cost industry billions to
reckon with and maybe cost a few lives along the way too. This is not the
developer's fault.

> Yeah, I agree this was kind of stupid. There are internal folks at MS, some
> of them quite influential, who think it's stupid too. But it's already been
> done.

Hm, sounds like you're an insider! Right, well, I'm not satisfied with that
blasé attitude. I think you ought to take more pride: Windows is kindof
important, like, to humankind. It is really unethical to leave such bad
designs in place, festering and impeding our progress and wasting our time.
Your internal folks at MS who are clueful need to be heard.

> > Trash the standard Windows API (not just hide it) > > This is the same
> fallacy a bunch of internal people came up with in Windows 8, however the
> truth is large chunks of the Windows API have nothing wrong with it.

Seems to me that Windows RT could run on any kernel or VM. If that's the
direction all development is going to take at MSFT, then do everyone a favor
and chuck that boat anchor Win32 and plop the legacy apps into a VM ghetto
running in seamless mode.

Don't be afraid, just do the needful.

~~~
asveikau
> Hm, sounds like you're an insider!

Was. As the comment you're replying to mentions in parenthesis, I wasn't there
for all that long and I left a few years ago. Not that I in my lowly position
would have been able to convince people to change some of this stuff...

> Seems to me that Windows RT could run on any kernel or VM

It's pretty heavily tied to Win32 and COM.

I think the way you're talking about it is a little weird though. Would you
criticize Android, for example, for having a Unix-like system underneath? I
mean, 'cause Unix is like.. old, and stuff. </snark> Stuff simply being old
isn't really a compelling reason to discard it. I'd say NT especially is
mostly on the right track in terms of being a modern kernel. Not without its
warts but it doesn't deserve comparison with DOS or 9x. COM has some good
ideas at its core too.

~~~
EdSharkey
> It's pretty heavily tied to Win32 and COM.

Ah, I did not know that. So, is WinRT a peer to Win32/Win64, or is it built
atop Win32/Win64? I have heard that COM is bread and butter to the way
Microsoft teams compose their systems, I should have known they would have
based it on that. Maintaining the legacy through COM seems to encourage
coupling in the design that would make it impossible to change out the OS
underpinnings.

> I'd say NT especially is mostly on the right track in terms of being a
> modern kernel.

In the abstract, yes, NT is a vision of pure loveliness. NT 3.5 was super
exciting when it came out, such a rock solid business OS (at the time)! Not
sure what we got now in the concrete sense though - it's a real hodgepodge,
new and old. I sense all the wise greybeards who could provide the vision have
long since moved on.

I'm not suggesting Unix-like is a panacea, but it's on a better path than
Windows as far as file systems go. There are surely optimizations and
streamlining that a new design could showcase to blow away Unix/Linux/BSD. A
new design from Microsoft would be refreshing, mainly because they have the
cash and power to do it right and still offer their all-important backwards
compatibility.

------
BillySquid
He might be a little biased "CEO of Blue Badge Insights, an analysis, strategy
and advisory firm serving Microsoft customers and partners"

------
andrewstuart
As Steve Ballmer says "developers, developers, developers, developers!"

But are independent developers allowed to develop for Xbox One?

No - developers not welcome.

~~~
pjmlp
They are welcome in the same way console market has worked since the early
80's.

~~~
andrewstuart
Yes but they are missing a huge opportunity by not opening the Xbox platform
up to all developers equally.

That's an opportunity that Sony and Apple won't miss.

~~~
Zigurd
Consoles have been shrinking in unit volume in the current generation, and it
is an open question if the next generation can reverse that trend, or if it's
game-over. Nobody has ever succeeded at mixing the AAA-game model with open
access to indy game developers. It's an attractive idea in isolation, but it
doesn't work for the AAA publishers and console-makers. And it is unclear if
anything really works in that business anymore.

