Keyvan Nayyeri

God breathing through me

Microsoft - The Talent Killer

Photo taken from http://www.my360theme.com/content/themes/448_1.jpg Ok, year is going to end, so let’s criticize Microsoft!! By the way, the last sentence was some kind of mathematical logic that is not being used!

During the podcast that I had recorded with High on Coding, I talked about the advantage of ASP.NET WebForms in the usage of classical development model and the way that you drag and drop controls into WebForms designer to quickly build an application. Although this is an advantage for any software development technology to speed up the process and make it easier, I think that this kind of development has become a religion for Microsoft at least in the area of development technologies.

This has been a serious challenge, especially among .NET developers, in the past 2-3 years as Microsoft has tried to provide classical development with some easy to use controls, wizards, and tools which aggravated the situation for professional developers and has allowed more novice developers to become commercial developers!

I always have had negative impressions on this strategy by Microsoft because they focus more on simplifying the simple and do not put any effort in the area of breaking the complexity of complex! In the past years, they have introduced many technologies that somehow were repeating the existing technologies built by third party vendors and open source community projects in which they were looking to alluring a higher quantity of developers rather than adding something useful to the software world. Most of the recent projects by Microsoft were nothing but a repetition of existing technologies in a larger scale, and easier to use!

In my honest opinion and based on the experimental evidence, the way that Microsoft has done this has yield to a worse situation for professional developers, and a better situation for amateurs. Microsoft abandons all opportunities for side-projects around its technologies and tries to invent everything, or maybe it’s better to say that they try to adapt everything!

This strategy has killed the passion for learning the principles and the role of talent in software development which should be a vital part of it, and we see that the number of developers without a good background in principles is aggrandizing so fast! The worst point is that this is reducing the quality to a great extent, and is yielding to perfunctory works and projects. Reviewing some projects, I realized that many of the developers lack a good background in principles and practices, and  have become developers in one night! Well, to be honest, two nights because they read one of those 24 hours books about Visual Basic or C# in one night and another 24 hours about ASP.NET in the second night!

Here comes the dangerous result that causes a bad position for the .NET technology in the software industry. The .NET world is being split into two contradictory parts: a group of professional developers that build software, components, libraries, and open source projects, and a larger group that just eat, and don’t know anything but merging existing components to build a superficial software. This latter group cannot build a software if they cannot find enough components to use, and they also cannot build anything on their own from the scratch!

As an evidence, you can review some ASP.NET MVC projects that are done in this short while since its public existence. Many of these novice developers are bringing a noise around the product but they know nothing about the principles behind MVC pattern. Taking a look at their progress, they just want to apply ASP.NET MVC in the same way that they were using ASP.NET WebForms without knowing anything about the MVC development! It’s interesting to see how they follow their regular manner to apply new technologies without considering the simple point that everything is not what we need! Oxite is even such a project that is reviewed by many guys in the past few weeks, and as Simone wrote, it’s just a good example of applying ASP.NET WebForms knowledge in ASP.NET MVC!

Those who have a technical site or blog about .NET can verify my assertion that many of the their visitors are those who search for a solution of a common task in development that should be a part of their existing knowledge, but they don’t know it. This is really sad for a large group of technical people who consider themselves as competitors to other communities like Java, Ruby, or PHP!

The worse side of the story is where we examine (check the chart) the difference between one of these novices with an experienced developer when it comes to salary and position. Unfortunately this saturation in the industry has reduced the chances for a good developer to gain the success that he or she deserves!

Moreover, I think that Microsoft is seriously killing the talent and doesn’t allow developers to be the genius people that they are expected to be. I’m not sure if this is a 100% true assertion but I feel that people in the .NET community are showing less talent than those in other communities, and of course, this includes myself! In the past few years I put more effort into development with Microsoft technologies, and I think that I’m smoothly falling my sense of innovation and problem-solving capabilities!

As a new year goal, I want to wish that Microsoft changes its strategies in the area of software development and put more effort in innovation rather than alluring more developers.

15 Comments

Cohen
Dec 31, 2008 11:36 AM
#

My 2 cents,

First: "make it easy to develop":

I think it is not bad to have a low bar...for technology... and have a large user/devlopment base...

Didn't we all start like that?

It's not really fair to compare to the other communities. How manny good php developers are out there? I know a lot of them who still do functional programming with no reuse of code ( = not at all DRY). In ruby a lot of developers still implement dal code in the wrong places. I mean every community/framework/platform have a lot of hobbiest. They are an important drive.

The difference in wages has probably a more ecenomic reason than anything else... For instance I can imagine that here in begium the same thing is happening. (we are actually recruiting for 3 open positions) There is a shortage for developers, so the wages to lure people go higher. The poeple who are the easiest to persuade are people who aren't working for a long time or are just coming from school = the inexperienced. Poeple who have an established position in a company know that stability and a good working environment are equally as important and stay in their company... Additionally in this time of financial crisis not a lot of big companies have the tendency to raise wages.

Anyway, just my take on the subject...


Hank
Dec 31, 2008 11:42 AM
#

I like it complicated. If it was all drag and drop, I wouldn't be so special now, would I?


Hank
Dec 31, 2008 11:44 AM
#

In fact, on re-reading the last part of your post, I emphatically disagree with your assertion that we show less talent and innovation than other communities. In my experience, this is just not the case at all.


My Best Blog Posts in 2008
Dec 31, 2008 1:41 PM
#

In the past 3.5 years of blogging, I haven’t had such best pick up collections in the end of the year, but now that everybody is writing one, why shouldn’t I write my own?! Collecting this list, I could realize some interesting facts that completely changed


jumboJ
Dec 31, 2008 2:45 PM
#

Everyone starts as an amateur. Making it easier for more people to begin coding and to actually get positive feedback ("Hey, look what I made") is a good thing. The more people that can get over the initial 'Damn this is hard' stage, the better. Passion for producing something tangible is why I left the biology field with a PhD to do something I really loved - coding. I am still a noob and have attempted to immerse myself in the culture, but there is a LOT of arrogance within the .NET community, as there is in other communities. Trying to learn and forge ahead as the the rapid and varied releases are sprayed out of the MS camp is ridiculous for an expert, but imagine (please try) that you are starting out and looking to contribute to both your own personal development and skillset as well as giving back to the community. It is ridiculously hard. Inexperienced people get jobs and write bad code for several reasons, including bad hiring decisions, lack of mentoring or support from the "enlightened" group within their community, as well as just a lack of experience in handling coding difficulties that gets better with experience. Please show some understanding in this matter - we do understand that people like you have contributed heartily and that without the mad skillz that you and those of your level of enlightenment, we would all be walking around in the dark without a flashlight. But everyone starts out small and builds on their failures and successes....there is just more of us now. And all you genius people will look even better now. There is arrogance in science, but nothing like I have seen from the IT world...the impersonalization of the Internet has worked its way into how IT people interact face-to-face, and that is NOT a good thing. It's like the Daily WTF - pointing out perceived stupidity rather than guiding and helping others learn from their misconceptions or lack of experience. Have a safe and happy New Year, my apologies for getting on my soapbox, but I have seen these types of posts from you before and am offended each time.


Keyvan Nayyeri
Dec 31, 2008 3:02 PM
#

@jumboJ

First of all, thank you for leaving your thoughts. I really appreciate that. There is no problem if you disagree with me and it's good that you have left your reasons.

I don't want to challenge your idea that everyone has started at a point and a starter needs some initial success, but it's a very bad idea to think that we should gain something without a value and enough work. I have no doubt that this quick access to everything in every field is a poison and directly affects the quality.

Moreover, a real professional software development mandates a level of knowledge and talent and success in programming requires a good level of these parameters. Besides, it’s a normal progress in sciences to make older concepts simple and break their complexity to find new things. In mathematics we prove theorems to use them in order to prove newer theorems and concepts. Therefore, there is no point in our discussion about the necessity of acceleration and simplification in the field of software development because I’m already aware of that.

But the problem is why Microsoft simplifies something that is already simplified, and why they too simplify something? I think that it’s because Microsoft wants to attract more and more people to develop professional software no matter what’s their background. Of course, I’m not talking about an academic background, but it’s a matter of a fact that they should have a level of knowledge and experience plus talent! Why should we have too many software developers who build software with .NET but can’t build something in a professional level? Why many of these .NET-powered applications have many weaknesses that appear in a longer term? I think it’s because of this point. We have many .NET developers, but few percent of them are really a developer! You know, this is not a case for Java or Ruby community because almost all the developers who build software with these technologies know development to a good extent.

Besides, I 100% agree that we should allow everyone to taste everything and tries to get it, but we also shouldn’t allow everyone to use it before he knows how to use it!

Have you ever asked yourself why many of the professional .NET developers are unable to build a medium scale software project from the scratch and maintain it in the long time? I think it’s because they don’t know that. They just can build software if there are all the tools in their hand.

I hope this makes sense. Happy your new year, too :-)


Marwan
Dec 31, 2008 3:34 PM
#

yes, this is the era of drag and drop develpers

Because I didn't learn programming from a university and started as an amateur I suffered from this problem a lot.

I found that every thing I want to do is possible by just draging and dropping some controls and a huge amount of code is generated behind the scenes.

The solution was to make every thing by hand to practice and know why and how the code is doing things.

I agree with you in the point that making developing easier had worsened the situation of professional developer and had enhanced amateur situation.

But Microsoft is a company, and the primary goals of a company are economical, so I don't think Mircosoft cares about that.

anyway,I think talent still exists but among professional(mostly old) developers not amateurs.

I suggest you add this post to your top ten, we are still in 2008 :)


Keyvan Nayyeri
Dec 31, 2008 3:42 PM
#

@Marwan

I don't think so. It wouldn't be one of those top 25 posts ;-)


jumboJ
Dec 31, 2008 4:11 PM
#

Keyvan,

Thanks for the reply, and I intended no malice, just wanted to express a point a view from the other side of the learning curve. I think a large part of the problem is that there is a ton of development (or possible development - you know how it goes with the MS marketing machine) being done with .NET. It has an infinitely higher profile than all other languages combined, and with the free tools and relative ease of dev environment set up, it is the easiest and most accessible with which to start (you ever try to get Eclipse configured properly....ouch). As the economy nosedives and MS and the MS community pump out various "enhancements" and frameworks, managers are making the poor decision in having inexperienced (i.e. cheaper) coders do the work normally allotted to Senior level folks, and with less Senior level people around to run code reviews and to mentor and guide Junior and new developers, their are no checks in place to keep the crap from going into production.

Another problem I am seeing is the developing niches - Winforms, WPF, ASP.NET, Silverlight, plus all their new and separate frameworks and new and improved dev paradigms (TDD, DDD, BDD, etc etc). People are being asked to work across these different platforms, which can lead to some pretty bad coding practices. Again, the economy may be partly at fault here as developers are being forced to learn new and often disparate technologies, and to wear various hats wthin their organizations. A lot of the other languages are relatively self contained - just think how much ground the .NET framework covers, it's crazy.

But the main gist of your argument is a point well taken, the problem is in management not understanding the difference between a Junior level and Senior level developer, other than the superficial salary savings, which is incredibly short-sighted. And the need for MS to oversimplify the already simple and not touch the complexities within the framework that really need the attention. Guess even the developers at the heart of the beast are being pushed to release oversimplifications and cater to the "time is money" coding philosophy instead of making truly substantive (to the Senior level developers) changes in order to kick out more and more releases. Hard to change that inertia since it is highly lucrative for them.

Enough from me - there is a ton of talent out there, in a lot of cases it just needs a proper amount of experience and guidance to fully develop its potential. Thanks for allowing and replying to my diatribe. Take care.


Lixin
Dec 31, 2008 10:53 PM
#

In my company, things are different. Most people in the team are experienced developers.

Just because using Microsoft technologies, we delivered more applications to users in shorter development time frames with more powerful features. That keeps the team size small and we have much less need to employ junior developers because most of the regular development jobs can be done quickly by drag and drop. Therefore we have plenty of time updating our skill set and put more effort on some challenging jobs.


Danny
Jan 01, 2009 2:24 PM
#

Keyvan,

The team of people you work with are important to

your sucess as a developer. Whether you drag and drop or do MVC. I buy donuts at least once a week.

Why ? When he's eating a donut I talk about MVC

and pair programming. I must admit the drag and

droppers are skeptical about MVC.

What's the eta on your upcoming book ? Will Wrox

offer an early access program where one can purchase chapters in PDF format as they become available. Thanks and still learning.

Happy New Year !

Happy New Year.

Pingback from Dew Drop - January 1, 2009 | Alvin Ashcraft's Morning Dew


Myke
Jan 01, 2009 11:13 PM
#

I respectfully disagree with the author. The need for programming talent has shifted from pure code to the duality of having to understand both code and business patterns.

Talent in this case makes obsolete the professional programmer in the traditional sense. It's not about being able to code by scratch that which has already been done; it's more about being smart about creating results. Too few professional programmers embrace libraries and modules that are tried and tested in favor of building from scratch, resulting in failure to deliver, flawed code, missed deadlines, and inadequate results.

The new and talented generation of programmers may be the ones who really know how to resuse code (once held by traditional programmers as the holy grail). Drag and drop is the ultimate reuse. Why not embrace the ability to produce results more quickly and robustly than with traditional programming?

If by talent you mean the ability to write self-modifying code and keep straight cryptic variable names, while building your own charting modules and database indexing schemes, then sure... talent is waning. But if your definition of talent is the ability to reuse code and produce business-class results, then I would say Mirosoft is driving greater talent.


Harsh
Jan 02, 2009 4:16 AM
#

The major problem with drag and drop code according to me is, the lack of understanding behind the code which is generated. I have seen many people using the drag and drop mechanism, and even if a small change is to be made, they are unable to do it from the code side, because of their lack of understanding.

I generally dont prefer drag and drop code alone, because that way you dont know what goes on behind the scene. I guess there has to be a balance there.

I know several "developers" who have been working in ASP.NET for over 2-3 years and still they dont have proper understanding of server-client relationship and still they keep on coding.

You can consider that as an advantage, but I guess in the long term its a disadvantage, because although the product maybe running, but it would have serious disadvantages.

Thus to sum it up, I give a heads up to ease of use to MS, but it would be really better, if developers develop a better understanding of the concepts before getting into this.


Do Not Blame ASP.NET WebForms
Jan 22, 2009 1:15 PM
#

As much as we get closer to the final release of the first version of ASP.NET MVC by Microsoft, the number of community debates about the advantages of ASP.NET MVC over ASP.NET WebForms increases. In the past week we saw some reactions by the community

Leave a Comment





Ads Powered by Lake Quincy Media Network