Microsoft - Goodbye To All That...
david.ing.name
david.ing.name
The problems you had in 2006 are still problems you have in 2010. IE6, browser fragmentation, HTTP, JavaScript. I would argue that today you have TOO MUCH choice. You have people endlessly debating whether to learn Ruby or Python (but never PHP), whether HTML5 will replace Flash (sorta, kinda), whether to use -moz CSS properties and so on.
Web development has solved distribution and possibly piracy and not much else. Still struggling on mobile, still difficult to develop cross-platform, still hasn't replaced anything of importance as preached for the last three years. The web is becoming the ultimate blub.
I think the author is in the honeymoon phase when it comes to the web and open-source. Both are important, but they aren't going to win/kill/destroy the alternatives.
Maybe in another 5 years, we'll see things calm down again, but it really is a confusing software landscape these days.
Sure you've got to support IE6 (mainly if you do enterprise stuff), but in desktop apps you have MacOS, Win7, WinXP, all Linux flavours. You can't make a cross-platform game (handheld or console). Mobile apps are divided in iOS, Android and probably WinMo7, webOS, RIM, ...
Anyway, you make points that I can sympathize with but I don't understand some of it. Why do people have such a visceral dislike of licensing costs? Presumably most HN people want to eventually build a start up that charges people money for a software service. People here are often quite indignant when someone complains a service costs too much. Yet MS is somehow bad for making money. Personally I find most of their pricing to be reasonable (in some cases that's no doubt thanks to pressure from free alternatives).
Also why do people always write these goodbyes and feel they have to cast off everything from MS forever? These proclamations are just strange. Let it be known to everyone that I'm never having apple flavored jolly ranchers again! Seriously, think of MS as just another shop in the bazaar.
The license cost point is a good one. I actually think it is kind of sad that software as a profession is all becoming enterprise software. No offense, but look at almost all of the YC projects... they're all things that I frankly would have had virtually no interest in coding as a kid. It all looks CRUD apps with the word "social" in the pitch.
But I think the profession has become one where software is marginalized, and you make money off of everything else. It's like music. No one wants to pay you for the music -- you have to make money selling t-shirts.
And then we have threads where people are surprised to see people say, "I just need a programmer".
Yeah, this was actually a point of contention when OSS started getting big, I think. But it was inevitable--things that are fun to write, people will write for fun.
I think there's some fun stuff left. Low level code tied to specific hardware and code that very few people need and can be held as a competitive advantage, for instance.
I don't think Microsoft is bad to want to make money, more that the choices around now make it a different dynamic around web technologies.
I'm not sure why others write these posts, for me it was more a long winded way to say 'After a long time I'm not mainly using the Microsoft dev stack, here's what this blog will be about'.
I won't suddenly forget 6 years of .net, but for me it's quite a shift.
Why do people have such a visceral dislike of licensing costs?
Some people are like that, sure, but that's a loud minority of idiots.For me it's not a dislike for licensing costs, but a preference for free of charge; like all people I like a good deal when I see one.
Not to mention that most software requiring licensing costs also has additional handicaps, like not being able to look at the source code or fix it; which is really necessary sometimes, especially when your company is in the software business.
I hope what I wrote in the blog didn't come across as visceral anti anything, especially making or spending money.
I like tools I can inspect or modify and improve upon. the fact they are also, most of the time, free of charge, is an incredible bonus.
They don't; what they dislike is the hassle of managing license keys, not being able to fix broken software themselves. The problem is not to be free as beer, but free as speech. And this is why RMS is true :)
In either case, I'm trading off flexibility for the speed at which I can have _something_ and I care far more about having something that works tolerably well than having something I can change to make it work better. If it breaks, I'll find something else; the software ecosystem is big enough now.
Which is why I'll take "reasonably reliably working" over "I've got the rights to fix it".
That being said, I've been doing .NET stuff for a good 9 years now (2001, when the first public beta was released). I'm kind of tired of it. I don't feel I'm learning a whole lot of new stuff and it doesn't excite me anymore. I've been dabbling in Ruby and Rails recently and playing with node.js. This stuff is interesting.
Good luck with your journey.
I'm living in a house Microsoft helped pay for, and as others have commented, the tools aren't really everything. I can enjoy ruby or python or anything else as I see the same patterns in them all.
In short, we live in interesting times and it's fun to explore if you get the chance.
I'm tired of an industry where it's assumed that using technical tools is the skill, rather than understanding and applying technical concepts.
I'm tired of "I'm a .NET developer" or "I'm a python developer". I want a world where we're not tied to a particular framework, where people hire expert technologists and business analysts regardless of what framework they used at their last job. Where managers truly value people and interactions over tools and process.
The inhumanity and subsequent waste of it all is really piling up, and theses posts only reinforce the ignorant and shallow perception that the tools make the professional.
(FWIW - I am not a programmer/developer)
e.g. Saying "Ruby Developer" isn't like saying "Brain Surgeon". It's more like saying "Hammer Carpenter" or "Scalpel Surgeon".
Web Developer, Embedded Developer -- these are more akin to specialization on the order of "Brain Surgeon" or "Endocrinologist". Notably, no-one's taking issue with that kind of specialization.
If you have the feeling for the music you can create music using anything. Ideas just blow to your mind. The tool, well, it's is just an interface to concretize your idea.
But I think specialization is not a bad idea.
Maybe that part of the analogy doesn't hold up for a hospital, but it sure as hell does in a software engineering organization. If you have a bunch of people working together towards a common set of goals, it makes things a hell of a lot more complicated if everyone is just working in the language they like playing with the most, regardless of their overall technical knowledge. Organizations standardize on best practices, languages, frameworks and technologies because it simplifies things.
After running into yet another bug in a new and shiny framework, costing me oh so much time, safe and dependable is starting to sound rather nice.If you always use cutting-edge do you really save time over using the tried and tested? A lot of time is lost due to having to learn new things, lack of documentation, lack of features and bugs. There is no absolute answer of course but it's a thing I think is important to keep in mind.
He may want to use the right pencil, the one that feels right in his hand so he can muster the subconscious forces that drive his talent.
Programmers are no more assembly-line workers than architects.
I find it much, much harder to charge money (I'm in the developer tools space) in the "FREE", open source, free is beer, as... whatever, and all that crap world, where people would just expect you to work full-time several years with $0 revenue - I just do not understand all that crap.
So massive respect to Microsoft - these guys are doing us a huge favor by educating people that software costs money.
We are the worst market out there to sell because we all love to build different colored dog houses and paint bike sheds various shades purple.
- - -
I've loved VS.NET in the past, but it doesn't make me happy any more. Personally, I can't have fun working with it. It is impressive, but it lacks soul.
My rants on IDEs in general: http://blog.mathgladiator.com/2010/10/on-ides-refinement-of-...
http://blog.mathgladiator.com/2010/10/if-i-were-to-write-ano...
Unlike Apple and Google which educate people that software costs 0.99$ or is free. What the heck can I charge if Id software publishes their latest game for 0.99$?
Therefore, we should abandon X and do Y, whose promises haven't yet been broken.
Most probably because...
> .NET/VS.NET is one of the best programming environments ever engineered
... simply isn't true.
Unless you are saying it's one of the 10.000 best programming environments ever engineered or that others, like Smalltalk/80, Genera, Interlisp, Turbo Pascal, the NeXT toolset, Zope, Rails, Django were "grown" rather than engineered. I agree VS is and has consistently been the best single IDE when you are using Windows to write software that runs on Windows, but it fails miserably out of its narrow domain (however deep it is, as it accounts for a huge market share). It's much like Xcode being the best IDE for using an Apple computer to write software that runs on Apple computers. It certainly is.
Microsoft deserves some recognition, for many times they delivered what the market needed. From its very first BASIC interpreter, to Windows, to Windows for Workgroups, to the first affordable alternative to Unix on RISC boxes (NT, for those too young to remember), to Visual Basic (the only language many corporate developers ever knew) they more or less set the tone of the entire PC industry.
As for charging money for software, the market changed. It's like complaining you can no longer sell ice blocks because everybody owns a refrigerator or that you don't sell as many carriages as you once did because people prefer cars. Embrace the change, use the tools and help build them into even more impressive ones (from the list I showed in the first "real" paragraph, 4 have always either been open-source or have a direct descendant that is). You can use them for free, you can build on them and you can improve them so they better suit your needs.
Actually, so long as I'm writing C++, I greatly prefer QtCreator over XCode. It actually helps me navigate my code, whereas XCode just seems to get in the way.
I'd agree that XCode is the best IDE for writing Objective-C apps for OS X on a Mac... but only because it's in a field of one (as far as I know). In my opinion it's a truly terrible IDE.
I do not agree. Nothing is free, its just that costs continually get shifted else where into abstraction. If you pay money to advertise your service then you and (others) are all indirectly paying for your software (and others') so you can be able to offer your software 'free'. If you say, choose to monetize by ads.
Really there has not yet emerged an economic model that beats simple old just charge money for it in terms of ease of implementation and use, reliability and path to profitability for someone starting off.
Sell Ads, take a minuscule rent to display ads other people bought, micro-payments, licensing, charging for support (urgh!), free (crippled) version to bait to a paid version are actually all more of the same. Except that all but the last requiring a large amount of traction in activity, reputation, users or both. Something very not easy to get, requiring a much longer runway than is feasible for most.unless they wish to seek investment, which is its own can of worms.
But I do agree, this direct charging is not going to work much longer than this decade I don't think. It is going to be very interesting to see what sort of new economic models evolve to support consumption and greed. These are interesting times. I hope to be part of it.
If, however, your goal is to deliver a desktop application that runs on Windows, MacOS X and other Unixes, or an app that runs on Symbian mobile phones, VS is worst than useless.
Not at all true. Setting up VS to work with Qt isn't too hard. And once you've got it set up it's a perfectly fine tool for writing cross platform Qt apps. Then to build and test you just do some clever stuff with virtual machines and you are good to go.
> .NET/VS.NET is one of the best programming environments ever engineered
What you're doing is when somebody claims "trains are more energy efficient than cars" then you say "but not if you run a train on a road"/"you can't run a train on a road". This is true but that was not the claim, the claim is clearly about the productivity a programmer has with the tools for developing applications for the platforms that the respective tools are targeting.
And you can build applications that run on OS X and Linux with VS.
It would be every bit as pretty as driving a train over a road...
VS is a space shuttle. Very complex, very impressive and with a very limited usage. To its credit and unlike the shuttle, it can do one thing very well.
It all depends on your priorities. If all you do is write Windows software, VS is the best. If what you do is web apps that will run on Unix-like servers on platforms like J2EE, Django, Rails, Flask or anything like it, you can tweak it until it becomes barely usable. Of course, only as long as you conform yourself to running your workstation on an environment profoundly different from what the app will run on production.
Priorities matter. I wouldn't use a Formula 1 race car to launch a satellite, regardless of how much they are impressive vehicles. Compared to what it takes to launch a satellite, they are, really, quite unimpressive.
Surely ye jest.
There's more startups charging consumers now than anytime I can remember. It used to be that unless your startup was retail based, it was free. Those days are gone.
I'm serious. The market changed. You can no longer sell a C compiler, a desktop operating system or an e-mail client. You can sell a lot of stuff.
And don't call me Shirley.
The bad news is that small companies cannot do that easily - they typically rely on a single product/service that they need to charge people for, like any traditional business out there.
Same with app stores - they are pretty much forcing 3rd party devs to give away or sell for pennies. Sure, we get this occasional story of a successful mobile product, but the truth is for each success there are tens of thousands of apps making close to nothing.
This, for me, is NOT a good trend for software startups. The whole "free" movement make it exceedingly hard to sell software nowadays.
People write these kinds of posts all the time. You see more of them on sites like this because people who tend to dislike and put down Microsoft and feel good about their choice constantly upvote this kind of posts.
Stackoverflow is a example of a site which shows off that C#/.NET done in a proper way is a very platform.
I could agree C#/.NET is a very platform, if I could understand what that means.
With lots of work and a talented team like SO's you can do a lot of extraordinary things done. The fact that SO stands apart as "C#/,NET done right" shows how much work it is to build a website on that stack.
Not everybody needs to be a Facebook.
As for why people are writing these, I'm not sure - for me it was just a 'I'm writing stuff on other stacks now, here's the blog'.