Microsoft.Data and Positioning
I just read a very insightful post from Evan Nagle about the topic. In it, Evan hit a key point:
Technically (and commercially) speaking, Microsoft has a slew of perfectly legitimate reasons for splattering the landscape with these "watered down" technologies. But, culturally speaking, it's painful to the professional Microsoft developer. It is. Because the Microsoft developer's personal and professional identity is tied up in the Microsoft stack, and that stack is now catering to a bunch of cat ladies and acne-laden teenagers. That's the real issue here.
If Microsoft thinks that they can get the market for bad developers, good for them. But that needs to be highly segmented. It should be clear that going with that route is leading you to a walled garden and that writing real apps this way is not good. The best comparison I can think of is Access apps in the 90s. There was a clear separation between “just wanna write some forms over data app over the weekend” and “I want to build a real application”. When you built an app in Access, you had very clear idea about the limitations of the application, and you knew that if you wanted something more, it would be a complete re-write.
That was a good thing, because it meant that you could do the quick & dirty things, but when things got messy, you knew that you had to make the jump.
The problem with things like Microsoft.Data is that there is no such line in the sand. And when you call it “Microsoft.*” you give it a seal of approval for everything. And when you have a piece of code that is explicitly designed to support bad coding practices, it is like peeing in the pool. If there is only one pool, it is going to affect everyone. There wouldn’t be nearly as much objection if it was called WebMatrix.Data, because that would clearly put it in someone else’s pool, and it that turn into a putrid swamp, I don’t really care.
There is another issue here, and it is not just that the community is afraid of inheriting horrible Microsoft.Data projects. It is much more than that.
Salary data is from the UK, because that is the first site I found with the numbers)
- C# average salary: £42,000
- VB.NET average salary: £34,000
Now, I really can’t think of a good technical reason why VB.Net programmers are paid so much less, but those data points match what I have seen about salaries for developers in both positions.
In other words, VB.Net developers are getting paid a lot less for doing the same job.
Now, why is that? Is it because of the legacy of VisualBasic still haunts the VB guys? Because there is still the impression that VB is a toy language? I don’t know, but I think that at least in part, that is true. And that is what happen when a platform gets a reputation for being messy. People know in their bones that building stuff there is going to be costly, because maintaining this stuff is so hard.
Microsoft has repeatedly stated that they are after the people who currently go to PHP. Let me do the same comparison:
- PHP average salary: £32,500
- Ruby average salary: £45,000
- Python average salary: £47,500
I don’t like those numbers. I really don’t like them.
Put simply, if Microsoft attempts to make the .NET platform more approachable for the PHP guys, it is also going to devalue the entire platform. I am pretty sure that this is something that they don’t want. Having a lot of hobbist programmer but fewer professional ones is going to hurt the Microsoft eco system.
Microsoft, if you want to create a PHP haven in the .NET world, that is great, but make sure that it is completely isolated, because otherwise you are going to hurt everyone who has a commercial stake in your platform.
I think that there is a lot of sense from commercial point of view in WebMatrix, but it should be clear that this isn’t .NET programming, this is WebMatrix programming. So if Microsoft succeed in gaining market share for this, it won’t be the .NET developers who would suddenly look at a 30% less money, it would be WebMatrix developers who would have to carry that stigma.
Comments
So true!
From that same site, avg. Java salary: £50,000. So is the message, "if you like your C# chops and don't want the PHPifying of .NET to drag down your salary, you can use a fairly similar language syntax and become a Java dev."
Nail. Hammer. Head.
The only thing I think is good coming out of WebMatrix is IIS Express. For MS to target the hobbiest/newbies/uni kids/php scripties i think is a really poor decision. I'm wondering if they have some secret_squirrel market research that stats something about the number of newbie programmers that start in PHP end up migrating / taking-the-jump to another non-.NET language. As such, they wish to target those first timers with WebMatrix so when they do make the jump, they goto .NET+C#, etc.
I still feel that if that's their plan, it's still poor. Make a kick ass commerical product and newbies will learn that as their foray into programming.
I'm still embarassed that VB/VB.NET existed :( It still devalues the .NET brand today.
MS need to learn from Ruby on Rails and catch up to them. I'm sick and tired of hearing about fellow members leaving to RoR ... and half the time, I don't blame them anymore.
There's a lot of good working coming from Guru-Gu's team ... but sometimes i do wonder about the odd decision (eg WebMatrix and it's ethos).
Donno.
-PK-
I think you have hit on something here. Segmentation is the key. Currently they seem to be just throwing everything into this big bucket called '.NET' which only confuses purposes.
Seems more likely salaries are based on demand/ supply. Maybe the reason Python/ Ruby/ Java developers are paid more is simply there are fewer good ones available in the marketplace. Likewise more VB developers around than C#
On one side, they're making C# more VB like (dynamic!), on the other end of the spectrum, they're also pushing F#, PLINQ and similar higher end technologies as well.
Basically they're trying to cover more ground. However I fear the situation will become like C/C++ today, where you have really good engineers on one hand, and lots of underskilled "coders" who assume they know the language on the other. People will claim they know .Net when they can code VB (or Dynamic C#), but will have very little idea about higher level designs.
It's like having a commercial app - until you have your own you just hold your nose when you read the EULA. The only time you dont mind reading it is when you write it.
Same thing with MS - you just have to hold your nose and use it - O no wait, not me anymore because Im of to RoR and real open source.
No license fees, software maintenance fees, and most of all the stupid activations.
"Now, I really can’t think of a good technical reason why VB.Net programmers are paid so much less, but those data points match what I have seen about salaries for developers in both positions.
In other words, VB.Net developers are getting paid a lot less for doing the same job.
Now, why is that? Is it because of the legacy of VisualBasic still haunts the VB guys? Because there is still the impression that VB is a toy language?"
More precisely, I think it's because a lot of the guys who wrote those crappy LoB apps got promoted to management and don't value programming as an independent discipline. I can't tell you the number of times I've heard "I know VB, so I can code it myself. I just don't have the time".
That to me is where the threat of devaluation comes in, now that same attitude will infect C# in about 5 years.
Maybe they will hire Sarah with her Cojones too and put her in charge of that division. :-)
Everything boils down to economy!
Probably IT is time to define the Software Profession.
"However I fear the situation will become like C/C++ today, where you have really good engineers on one hand, and lots of underskilled "coders" who assume they know the language on the other. People will claim they know .Net when they can code VB (or Dynamic C#), but will have very little idea about higher level designs. "
I have news for you guys. We are already there.
I'm seriously thinking it may be time to look into Ruby or some other language just to get away from the stupids.
I'm surprised that Python programming is rated so high. There are NO python jobs here in AZ.
Thing is, if someone decided to use the WebMatrix platform and suddenly is making good money, this person might decided to hire someone to help him/her to extend the business.
Initiating the Evil Cycle....
While some bottom-line people at Microsoft thought that this is a novel idea, the end-result has always been the same for using some of the Microsoft-based solution: you're just making our industry even worse.
Great article. I think MS will fail with the idea of capturing people who would go for PHP for the sole reason that most people go to PHP because "it's not MS". It's not that .Net is too hard for them, it just the anti-MS thing.
About a year DotNetRocks had a panel discussion with the topic "Is software development becoming too complex?". I believe that Microsoft's focus on simple solutions actually prompts questions like these.
The result of this is that we're getting alot of solutions that are simple to use but all come with some sort of drawback. Thus you need to choose, everytime.
What I mean is that as they are catering to cat-ladies and acne-teenagers, they are acctually doing them a disservice by dilluding the path of how to create good software.
Of course we all know that the numbers always lie. Sure the average says you will make less, but the good ones always make the most. the average in Ruby will be more because there are less of them. The more programmers you get in one language the less the average will be, since they can't give everybody the top salaries.
Just look at wath SAP guys earn and what COBOL guys make. Just look at what we paid our Exchange 5.5 consultant. All a lot more then what was mentioned above, so perhaps you guys should do that.
But you should do what you like doing, if you don't like your job no amount of money you get will make you happy.
And don't forget the numbers always lie.
I agree about the positioning part w.r.t. WebMatrix, inline code in views etc.
However, I see some value in Microsoft.Data.dll for the rest of us as well. There are always these smallish tools that you need to write, close to the DB for all kinds of taks (I'm thinking custom data migration tools, stuff like that) where today I would use 'native' ADO.Net. Microsoft.Data comes in handy for those scenarios.
I guess what I'm saying is that it's not Microsoft.Data as such that is the issue, but the way it's positioned (as a data access enabler for web applications). Just my .02$.
"The best comparison I can think of is Access apps in the 90s. There was a clear separation between “just wanna write some forms over data app over the weekend” and “I want to build a real application”. When you built an app in Access, you had very clear idea about the limitations of the application"
Unfortunately, many people back then were unaware of those limitations, and a lot of very complex systems were build in Access or using an Access database as a ""database server"" with a lot of concurrent users accessing it at the same time...
We should remember that back then Access (or other similar systems like Paradox or DBase) were competing with FoxPro, in which many "enterprise" systems were build, sometimes by big software companies...
Would be interesting to see in the salaries comparation sheet some JAVA amounts compared to C# as illustration of purposes of the platform :)
JeroenH,
There are some useful funcs in VisualBasic dll. You can reference that from C#.
You could do the same for WebMatrix.Data dll
"The result of this is that we're getting alot of solutions that are simple to use but all come with some sort of drawback. Thus you need to choose, everytime."
Also it means you have another thing to learn and maintain when bad developers choose those options...
"... Put simply, if Microsoft attempts to make the .NET platform more approachable for the PHP guys ..."
I really don't understand all the PHP hate. You can write clean, maintainable, code with PHP just as easily as you can with any other language. By the same token, you can write horrible abuses of coding in any language. The language doesn't make someone write bad code; they only have themselves to blame for that.
PHP, love it or hate it, will do absolutely nothing to stop you from shooting yourself in the foot. It's syntax can be very flexible and it's up to the developer to be disciplined. That doesn't make it a bad language. The same could be said about C/C++ pointers.
The reason we see so much bad PHP code out in the wild is due to the fact that the barrier to entry is low and it came into existance at the right time and exploded in popularity.
This smells & looks like badly cooked spaghetti with stale sauce... sigh! Windows Phone 7 to conquer the mobile market & Microsoft.Data to conquer the PHP developer, geez!
OMG, this is scary. There are Microsoftues out there reading this right? There is indeed missing segmentation, within the .NET stack it is unclear which parts aim to which target group. If that affects my salary, I am very pissed because I know I can write high quality, maintainable software with .NET that doesn't rob my clients.
Microsoft must stop labeling everything with .NET, think a lot less geeky and technology-driven and put some thoughts into what parts of the stack aim at what kind of scenarios.
The access example was good. Throughout your last post and reading the comments I was thinking, isn't this the target group that Access aimed at? Hell, what would be wrong to label all this webmatrix microsoft.data cruft "Access 2.0" and be done with it? I don't want to write Access apps, I want to write .NET apps, stuff that focuses on new features for my client's, and moving Software Engineering into areas of quality that are common place in car manufacturers or other Mechanical Engineering.
This is blown way out of proportion and because of what? A namespace!
I do agree however, that the namespace should be called something else. Would you prefer System.{Amateur,Hobby,Small,GoUseNHibernateInsteadPleeease}.WebMatrix? ;-)
anonymous,
It isn't a namespace, it is the position that this namespace grants.
And yes, Amateur.Data would be perfect.
As a .Net developer in the UK, I can tell you that those figures are as much to do with "supply and demand" factors and the geographical distribution of jobs as anything else. There are very few Ruby jobs outside the bigger cities like London or Manchester and salaries for those jobs are bound to be higher because of the higher cost of living in those places. VB.Net and PHP jobs are probably more evenly distributed across the country in places where salaries are lower, there are more of those jobs in total, and thus the averages for those languages are lower.
There's probably a similar explanation for the discrepancy between C# and VB.Net, too. There's lots of finance houses in The City building apps in C# with salaries commensurate with that industry and location. So it's not quite a case of "the same jobs" paying less for VB.Net...
Your post is a bunch of hogwash http://bit.ly/cAQnyX please watch http://bit.ly/cosUnq because your missing the point.
As far as Microsoft.Data.dll, all it does is provide a wrapper around ADO.Net. Now I am pretty sure that most of you use libraries in the System namespace, and very few in the Microsoft namespace, aside from maybe Enterprise Library. All the Microsoft namespace tells me is that it will be supported by Microsoft in some manner. It doesn't tell me I have to use it and it doesn't tell me how to use it.
I think the only confusion is that there will be some .Net samples out there using libraries which are part of WebMatrix and not freely available. From a usage point of view, Microsoft.Data.dll has nothing to do with WebMatrix and I don't think it should be distributed and/or licensed soley through the product. It should be available for download as a seperate library. So "if" someone "chooses" to use it for "their particular situation", they don't have to download and install WebMatrix to get it.
<rant
You guys really need to stop equating "bad" developers with this dll and WebMatrix, it just makes you sound arrogant and doesn't help your credibility. Microsoft .Net was built to enable individuals and teams to "choose" the right language for the job. WebMatrix is just another tool choice, like Microsoft Small Basic. Are they the right ones for enterprise development? No, but they aren't being marketed that way either. Get over it. There are plenty of .Net projects that have bad code in them too, as this blog's "Find the bug" posts can attest to.
MS listen to their customers not their dev community. The customers are saying this IT stuff costs too much, it's not our core business, we want to hit the ground running and react quickly. They don't really care how it's done so long as it just works. I believe this is a small step towards an eventual marathon effort to minimize the need for developers in most businesses. Azure is a big part of making this a reality. I've been a long term .net dev and I am seriously considering doing an about turn and doing my best to stymie this effort. I reckon MS are after the dev dollars.
Nail in the coffin.
I stopped following Microsoft examples since after seeing the sample applications they put out with the ASP.NET 1.0.
They keep putting horrible examples as way to build applications --- which only work if your site has only 10 visitors and 1000 records in the database.
If not for C# & Visual Studio, I would have left Microsoft eons ago.
The recent product releases from MS really ties into what Rob Conery said at NDC2010 ( streaming.ndc2010.no/.../). Microsoft is catering to the customers rather than the developers. They are now run by a salesman rather than a visionary. While I see making money is necessary to an extent, not innovating makes you stale, which stops growth.
These new products (which simply add a pretty face to what is out there) are aimed, not at innovating and creating new technology, but targetting the larger share (PHP and non-.net devs) and wooing them over to the MS stack to increase revenue. Unfortunately, for us who make a living in the MS stack, this sort of approach stifles creativity and puts all creativity into the hands of large companies with big purse strings who MS listens to.
All of us MS devs have skin in the game. A lot of skin in the game. Give us reason to stay. Don't make us feel like we fell for the ol' bait and switch. Your products are good. Your devs are incredible! But we haven't see any real innovation in a long time! Adding makeup to existing products is not innovating.
Microsoft, rather than putting out these blog fires over and over again, simply start innovating again. Don't be afraid to cut away old technology and do what you did when .Net came out. Make me say 'Yeah, why didn't I think of that. I want some!'.
What an insightful post.
This is elitist crap. Watching an MS guy give a demo where he drags a dataset onto a form and says "look - an application with no code!!" does more to de-professionalize the platform than courting the PHP community ever could. Ever heard of Wordpress? Its PHP and is more of a "professional" app than 95% of .NET apps out there.
You need an application that does one thing for a handful of users. The application is going to be super-specific to your company so custom development is needed. So do you write a n-level, OO program just because? Or do you create a program (that can be extended later) quickly using a tool like Lightswitch? It does what its supposed to do and the users are happy. You can jump into the C# code at any time and fix any little annoyances.
Further to SteveR, London based jobs are a huge skew factor in the UK. Also, those figures are calculated on an awful lot of double counting - 17000 or so England C# jobs but add up the other numbers and you get 26000 or so.
Take London out of the equation and there seems to be a lot less to worry about than you make out - VB & PHP peak at around £30k, C# at £32.5k, Java at about £35k, Python at £36k or so, and Ruby is stick a finger up to check the wind.
The salary graphs for PHP and VB are very clustered around the mean which to me would indicate that they don't offer much progression - it's either switch language or switch to management to get more pay. C# and Java have big chunky tails all the way up to £100k.
PS
The Microsoft.* namespaces have always had foetid pools
I threw this up on his blog entry as well, but figured it applies here too.
"and that stack is now catering to a bunch of [...] acne-laden teenagers"
I think you are forgetting that that is how most of us started. It wasn't that long ago when, if you asked me, I would say I prefer PHP over ASP.net simply because I could better understand it, and wasn't forced to use some "complicated" architecture to build software. And it was great, for a time. Then I started realizing the need for architecture, patterns and design. Once I had invested some time learning these things, it became apparent to me that ASP.net was a much better alternative for building more structurally sound applications. So I moved over and haven't looked back.
Now imagine that instead of me using PHP back then I had used WebMatrix. From my perspective it's similar - but it has better support for my operating system, and the development environment is easier to setup and maintain. Now as I realize the need for software design, I can simply "step up" to asp.net mvc, or other .net framework, without changing platforms or languages. And then eventually I'll get bored of writing SQL, and map up some POCOS to EF4. It would be a gradual and enjoyable experience - instead of the quite jarring one I had with the switch from PHP to C#.
A final note:
Unfortunately I was hired as a ColdFusion developer for my current job. It took a bit of persuasion, on behalf of the entire team, for us to switch to ASP.net. However, sometimes I find myself needing to transform data from one table, or one database, to another. Often times these are "nasty" legacy tables with a bunch of strange conventions and designs. If I have to do a one-off data transformation like this, I will use a ColdFusion script instead of C#. Why? Because I don't want to waste the time mapping my entities to these crazy schemes - and there are already a bunch of pre-written SQL statements that will get me the data I need. I wouldn't use C# because writing raw SQL was a pain in the ass, compared to CF. But when I saw the initial blog post about Microsoft.Data I was happy, because now I can easily use C# to solve these problems instead of having to write in that awful mind-numbing piece of garbage platform CF.
<contrarian
To me the clause "Because the Microsoft developer's personal and professional identity is tied up in the Microsoft stack" doesn't sound right. It might be true for any number of people, but some company's commercial offerings (whether Microsoft's, Oracle's, IBM's, or another's) seems like the wrong basis for professional identity. I'll allow an exception for offerings produced by the sweat of one's own brow.
Mastery of one or more toolsets, and mastery of how to apply the best toolsets to the tasks at hand, seem a much better basis. And if Microsoft cranks out some pieces that aren't to your liking, OK, but unless it undercuts the stuff that is to your liking in some practical way it's not really important. In the domains I tend to develop for, they've got stuff that really works and stuff that seems weak.
Being a developer, I'm happy with the higher salary aspects, until as a customer, manager or owner I'm paying them. None of the surveys I've seen quantify productivity per pay rate, so it doesn't seem incredibly useful to look at salary as a proxy for the value of a C# vs VB vs Erlang programmer.
I would concentrate on making yourself useful as a developer instead of expecting Microsoft to market their product in a way that benefits you or your group. A macro values (average salary) has little or no effect on the individual. As it has always been the fact that innovation and success drives up your rate more than whatever Microsoft plans.
Also your view of PHP developers is incendiary. So you would propose that ASP.NET developer is instantly a better developer than one who writes in PHP purely by their platform? This is where the hogwash comes in: it has little to do with Microsoft and everything to do with individuals. I think we should post a link to this post to some PHP forums so you can get a true feeling for how prejudice your being.
Sorry, but I'm really not sure what the fuss is about here. It seems to me that MS.Data is making life easier and that really is a good thing all round.
So what if it's easier to produce software? Maybe businesses will get to have some software that adds value that they otherwise would not be able to afford. I'd say that the more businesses that gain benefits from using software, the better our industry is, period.
Can't say I disagree with Kincaid. stackoverflow.com/.../asp-net-c-running-queries...
Good post, the name Microsoft.Data does seem very ill judged.
How about Productivity.NoGeeksNeeded.AntiResumeBuilding.Data?
Ultimately I think the WebMatrix is the right call for Microsoft, it just isn't the right time, should have been about 2003, forked classic ASP / Web Form development then, different tools, same .Net framework. I think with all the cool kids running around now with brand new Apple labtops, it is going to be hard to draw that group into your developer stack. And MS won't get much help from the geeks here crying about future lost wages.
Don't worry geeks, your short term wages will remain as you jump from job to job, blogging your every step, writing over-engineered code left for others to deal with in the endless marry go round of the "industry" jobs (I'm just not challenged here any more), while PHP, Ruby, and Python continue to dig MS's future grave. MS will age with you, kind of like the old timer Novell engineers still have a place supporting legacy apps, so will you.
Microsoft, keep swinging. I like your products, want you to succeed. Listening exclusively to this segment of the market is doom, glad you see that and took a first step, may not work, but take more steps. Something will connect.
I'm tired of that "php has good applications, like wordpress, facebook, etc." crap. Of course php is a good language! And of course there're a lot of good php programmers! But those good applications are made not doing that kind of crappy code webmatrix try to sell.
It's not about developing software more easier, it's just the ilusion that real world applications are easy to build.
I gotta put my two cents in here.
You can write bad code, and bad systems, in any language on any platform. It's all about how well you know the tools and the platform.
There are some pretty serious applications written in PHP, and I've built some damn complex systems in VB6 (albeit with components in COM, COM+, C, C++ included).
There will always be people out there, who, as it is said, know enough to be dangerous.
I was listening to the connected show and they had a lengthy discussion on this product here's the link
www.connectedshow.com/default.aspx?Episode=35
they made some interesting observations
Would be great if Oren would appear on their podcast to discuss this issue like the host suggests.
The host made a comparison with the health industry where we have nurses doing all the mundane work for doctors and how similar that is to our industry. think of Lightswitch project been done by beginners and when the project needs to scale you bring in the "Doctors"
Comment preview