Good Little Developer, do what you are told
Peter Laudati managed to hit basically all my red buttons in a single post, that is rare. He talks about the recent Alpha Geeks posts in the community, but I do believe that he is observing a different community.
It seems almost like a repeating cycle where there are highly skilled developers moaning about the lesser skilled developers around them.
Ha? In the recent posts, the topics was never the developers, it was the tools from MS and their ability to be utilized effectively by developers outside the very thin line that was painted for most of them.
When I see developer tools coming out of Microsoft that support this group, I get excited because it makes my former job as a 'shepherd' easier. I know that the tools will guide the folks who may not be experts and keep them on the path that has been outlined for them. Wizards, software factories, source control with check-in policies, etc, I jump for joy! Give me more! I know many of the large enterprise companies I consulted for could benefit greatly from all of these.
I have no way to express just how bothered I am by this statement. Shepherd? Developers are not sheep! Maybe a further look is needed, one that goes beyond the sheering pens. The last time I run into this attitude, I was at prison. If I ever want to lord it over other people again, I would go back to being a warden. I had no idea that being a developer or a consultant carried with it the same danger of illusions of grandeurs. It looks like you want code monkeys to build your grand vision, that is fine, but those are not developers.
I have been at places where they had the 9 to 5 programmers, and you know, they were perfectly able to follow a technical conversation, learn what they needed to learn, and get their job done. They may not be slavering all over the new CTP bits or spreading the buzz about the vNext+2, but to get to the point where you hand dumbed-down tools is showing acute contempt for the developers in question, and I find it insulting.
Yes, there are thick headed developers, I have met some of them that were on top of everything (with applications that used all the GoF patterns) and couldn't code their way out of a wet paper bag.
Putting the baseline of the tools not at the lowest common denominator but at the lowest point, period, is harmful.
The great thing about Visual Studio is that if you don't want all the hand-holding of wizards, you just don't use them.
Um, no. Feel free to hand code an SSIS package, or a BizTalk process, build any complex WinForms UI without the designers. Most of the wizards and designers are producing bad code, aimed to build a demo quickly, not to build a maintainable application.
As saying that I can code it by hand is all very well, if the framework and libraries support it, currently, a lot of the stuff that was raised is not possible to use effectively without the wizards.
BTW, if you see a theme about SSIS, I am dealing with that right now... sigh (how the hell did I end up being the database guru? I learned SQL as a self defense, for crying out load!)
Microsoft has entire teams of people (mine included) that focus on supporting the developer community. Feedback, good and bad, is always welcome. While I can't predict how the product teams will respond to it, I can tell you that they are listening.
They may be listening, but there is decide lack of response, the other side of the conversation. The various insiders group doesn't cut it, not when the first time most people see a product is when it is already too late to do any significant change on it.
Comments
Whoah there, Ayende.
I don't think he means "Sheep" the same way you do. If you consider these together, they make sense:
" I think it's a fact of life that there will always be people with different skill sets in the technology field."
"I get excited because it makes my former job as a 'shepherd' easier."
He's talking the process of mentoring junior developers.
Rob
"Developers are not sheep! "
If developers don't need a shepherd, then we have no need for Martin Fowler or anyone else.
You still need people to stick their necks out, set best practices, and guide the general developer through the wilderness of creating software.
And sorry, but Microsoft is in the best position to do this. If anything, we need them to shepherd more, not less.
But as for Microsoft's responsiveness -- I'll agree with you there.
There is a distinct difference between a mentor / guide and a shepherd. And I certainly don't think that MS is in the best position to do this, the guys in the fields, the people who are doing thing, are.
Rob,
That doesn't sound to me like mentoring, this is laying down the law, "THIS is how you do stuff".
Thank you! Thank you! Thank you!
I registered comments of complaints at both Peter and Nick Mallik's sites. They just really don't get it by proritizing for the Morts always over the other types of develpers they are not only not producing the right tools but keeping the Morts exactly where they are. The wizards are producing bad, unmainatable code and there is no path to mentoring, it's all just keeping them in a pen
I think Sam's comment here, and Peter's followup to Sam's comment on his post speak for themselves.
@Rob & @Chris
Last time I checked sheep do not eventually become shepherds. Sheep remain sheep until they die. However, junior developer can turn into mentors/senior developers.
So the analogy of
sheep = junior developer
shepherd = mentor/senior developer
is very poor and inaccurate (but it probably does reveal more about the original author's true opinions albeit unintentional. If he did not mean it then he should have chosen a different word to describe the relationship but the rest of his post supports his use of "shepherd".)
I agree with Ayende. It can be viewed as dismissive of and condescending towards the developer community especially within its context.
Lost you there, you may need to draw a picture for me. Can you expand?
I think that the developer tools that Microsoft provides are well-meaning, in that they aim to make common processes repeatable. Unfortunately, the code that they generate is so weak that we often have to get even further into the weeds as we otherwise would have had to. (For example, sometimes we have to try to figure out how to work around the WinForms designer outputting junk code or crashing.)
I think what Microsoft should be focusing on instead is providing US with the means to create repeatable processes -- rather than defining the processes themselves. That is to say, I think that Microsoft would be better suited in allowing us developers to create tools to help our jobs. That way, we can tailor them to our unique issues -- and at least SOMEONE will understand the real process that hides behind the wizards!
The GAT seems to have this goal in mind, but it's (at least in my experience) a little too complex and young to use. P&P also isn't pushing the GAT for public consumption, as far as I know...
"I agree with Ayende. It can be viewed as dismissive of and condescending towards the developer community especially within its context. "
Isn't this the pot calling the kettle black? Not all (I don't think I would Ayende in with this), but a significant portion of those that happily latch onto the 'Alt.NET' mantle can't seem to make it through a discussion without some subtle or not-so-subtle condescension towards the Microsoft developer community at large.
For instance, 'Mort' could be used as a merely descriptive term, but it is almost always used in a derogatory fashion (where it is essentially semantically equivalent to 'moron'). Bellware has some colorful (thus memorable) phrases about 'crack-pipe smoking'.
And the list could go on and on.
That's why it is interesting to read about 'Us vs them', 'Echo Chambers' and other things that Ayende and other people in the blogosphere have used to talk about Alt.NET.
What do you expect?
Now, I personally can out-condescend just about anybody, so I'm not at all excusing myself from this. It's an occupational hazard of working in IT in general and has a long history. I'm reading all this stuff so I can learn better programming techniques and apply them to the work I do for clients as to gain business competitive advantage. And I don't particularly care if I'm personally insulted (which is why I accept the BlogCoward moniker, because I thought it was hilarious).
But, it seems to me to be bad 'marketing' (for lack of a better phrase) to insinuate that if you've ever used a wizard to generate code, then you are a moron (exaggerating for effect).
Especially if it is your desire to spread better programming techniques throughout the community at large.
jdn,
I think that a lot of the criticism goes toward MS for encouraging this demo driven behavior, not to the developers.
I also believe that it was agreed that it is not cool to talk about Us vs. Them, precisely for the reasons that you mentioned
I don't think that anyone is saying that, I certainly never did. I dislike wizards, and I think that if you are not aware of what the wizard is doing, you are going to end up in trouble, but that is different.
What this post was about was trying to put developers in a box with the wizard and nothing else.
Ayende, thanks for the thought-provoking post. I do not agree with everything you say about what Microsoft does (for example, I don't think the need for the VS IDE when coding C# is a bad thing), but I do think you are right in that Microsoft is helping keep developers closer to sheep than necessary by how they do things. In particular, I think they could do a much better job in providing excellent example code (which some will copy&paste -- this is unavoidable), and succinct, accurate requirements/feature listings for their products and frameworks to make understanding them as easy as possible. If Microsoft were to make "finding the model in the tech stack" [1] easy, I think they would, in the process, provide excellent examples of how to document software.
I would very much like to see an open discussion of how to further develop Visual Studio, what the priorities are, etc. I am unaware of any serious competitor to Visual Studio, so I cannot think of any reasons why this would be a bad business decision for Microsoft. I think Microsoft has a spectacular opportunity of capturing a huge chunk of the developer community, including the so-called alpha geeks, by providing a dream development environment. I wish they would capitalize on this opportunity by having an open development process with .NET and C#. I'm not sure about others, but I would be willing to put in a decent amount of time, at least 40 hours total, to help Microsoft better their development technologies and tools, absolutely for free. Am I alone in this (as in Microsoft is profiting from my work), or do others realize that the return on investment could be spectacular?
[1] http://ayende.com/Blog/archive/2007/03/08/Finding-the-model-in-the-tech-stack.aspx
Yes, I understand that was what your post was centered about, but I think that what Peter was driving at (obviously I can't speak for him) is really close to what I mean.
And I absolutely think there are people who think (exaggerating for effect) that if you use wizards to generate code, then you are a moron. And they blog about it.
As a more general point, as a pure matter of business, you can create very effective, productive money producing applications using the wizards. You or I or anyone else might cringe at the code, but the fact of the matter is that the crappy Access 95 application we used in a previous lifetime in the shipping department at the warehouse practically ran that part of the business.
No one cared about separation of concerns, design by contract or any of it. And you know what? I can't think of a single reason why they should have, even if they knew what those things were.
And that's a massive part of the market that Microsoft serves that got them to where they were, and so their toolsets reflect that. And I think that's what Peter was saying also when he talked about 'novices'.
Besides which, you can always create one's own Wizards, DSLs, etc. and make the generated code just about as good as anything you hand-rolled.
Except for (at least) SSIS. I was pumped to see it in action and man, did it really disappoint.
Ayende & jdn, is there any consensus that it might be possible to make wizards and form designers and whatnot that result in better code/configuration files/etc.? I definitely hear the note about how VS2005 is working well in some situations, where well is defined in terms of dollars. Alternatively, it could be that a well-written non-wizard framework/toolset could be as productive -- assuming that this is impossible seems very dangerous.
@Luke
As you might imagine, Ayende can speak for himself.
I don't think there is necessarily a consensus in alpha geek crowd, but I leave it to them.
My own opinion can be found here:
http://www.blogcoward.com/archive/2007/06/13/27.aspx
"Isn't this the pot calling the kettle black?"
The kettle called the pot a "sheep" but the pot did not call the kettle anything. This kettle simply stated by the pot indirectly referring to itself as a "shepherd" then that it is implying that the pot is "sheep".
Alright these analogies are getting silly...
Seriously, nothing inherently wrong with wizards if used correctly AND you understand what it is doing under the hood so you can undo things if necessary (leaky abstractions anyone?). They most certainly have their place. However, my experience has been too many people who become overly reliant on wizards for ALL of their development and that can be dangerous. Unfortunately, wizards can be a crutch when you do not know what or how else to do something.
Why is that the case? Because the general message from MS (including Peter) is to use the wizards for everything versus use it conditionally for things that are truly tedious, repetitive, and mindless. For example, if I use any wizards 10% of the time during development they seem to focus on flipping that to 90% (or higher) for everyone.
I've encountered and inherited too many applications/ "prototypes" built by others that appeared to be "90%" wizard-driven and boy was it NOT fun to maintain it and add new enhancements for the customer.
All we are asking is for more development tools and flexible frameworks (in addition to the wizards) where we can build sustainable and high quality applications beyond what the wizards can provide.
Comment preview