The State of ALT.NET
Over the past 6 months I have been trying to really quantify what it means to be using ALT.NET practices. And I can honestly say that I still honestly don’t know what it means to be an ALT.NETer. But I have come to a number of conclusions about the state of the ALT.NET community, that I wanted to share.
(1) The ALT.NET Community is fractured among itself.
There are too many different ways of out there of what it means to be a true ALT.NETer. There is the Test Driven Design crowd, there is the Domain Driven Design crowd, and to many other Driven Design paradigms to mention right now. Each advocate will stand up and say that their way is the only way to develop a true ALT.NET application, and all other ways are an abomination to software development.
From this point forward…
We need to understand that it doesn’t matter what paradigm you choose to follow or even if it has a name, just that you choose a way to design your application before you start coding. And as long as the way you choose to code is robust, easy to maintain, and easy for another developer to pick up where you left off — you are doing it right.
(2) Take the religious zealotry out of ALT.NET
This sort of goes back to #1, but I feel that it needs to be called out directly. There are too many people out there preaching about how their brand of ALT.NET is the only path to salvation from the drudgery of everyday .NET programming. I have heard from a number of people that you don’t have a true ALT.NET application unless you are using an IoC library, nHibernate, and separate your domain model in to a separate project library away from your data access layer. These types of strict requirements and zealotry for one type of component set the bar way to high for any average developer to say they are following the ALT.NET principals.
From this point forward…
It is an acceptable practice to use what ever makes the most sense for your project and your team. For example if you need IoC container and it makes your life easier as a developer to build the framework of your application you should use it, on the flip side if your application is pretty static and there is no need to have these swappable containers you should feel free to not use IoC containers until your application requirements dictate they are needed.
(3) Craftsmanship with out Engineering is no way to program software.
There seems to be a very strong focus on craftsmanship over standard engineering processes in the ALT.NET community. It seems like each week there is a new hot craftsmanship feature from some other language that is trying to be replicated in .NET. Lately it has been the focus of fluent API’s and the duck typing features that dynamic languages like Ruby have built in to their frameworks. This constant change and focus on new hot must have craftsmanship features really detracts from good solid software engineering principals that should be the focus of the ALT.NET education process.
K. Scott Allen had a really good analogy of this focus on craftsmanship over solid engineering of your code. He called it the Aluminum Wiring in side your software. In his article he talked about how the shortage of copper in the US during the 60’s and 70’s caused home construction to use Aluminum wiring over Copper wiring in houses, and how the use of Aluminum caused oxidization, corrosion, and overheating of the houses electrical system. He then went on to ask if all these new craftsmanship features are going to cause the same problems in software development and he specifically called out:
- Mock objects
- Fluent APIs
- Declarative programming
I believe K. Scott is not to far from the truth, because we are sacrificing good engineering practices for what really amounts to programmer candy, just like the US construction industry sacrificed good engineering materials to save a few dollars. It didn’t pay off for the home owners in the long run, and I surmise that this focus on craftsmanship will not pay off for the software in the long run either.
From this point forward…
We need to focus on good software engineering over the latest fad in software programming. Currently the latest fad is making C# work like Ruby. But it is just that a fad, that will quickly fade away when something new comes along. It is basically the programmers equivalent of the rise and fall of Paris Hilton in the media. Ruby is a nice language and has its niche purposes on the web, however there is a reason why Ruby doesn’t run mission critical applications (ex. financial systems) like C#, C++, or Java does, it simply doesn’t scale all that well. Only time will tell if it will be around for the long haul or fade way in to the abyss of languages that grace this earth for only a short time. But either way we shouldn’t be making business critical changes to the way we engineer software applications based on the craftsmanship of the newest language to hit the streets.
Conclusion
My conclusion is a short one on the state of ALT.NET. From everything I have learned over the past 6 months and the immersion in the tools that have come from the ALT.NET community, I have really come to one conclusion that seems to sum them all up.
ALT.NET started with some really down to earth goals of educating .NET developers about alternatives to developing software, by taking principals from other languages and frameworks and integrating them in to the .NET developers thought process. However this simple mission statement has seemed to have morphed into zealotry for design practices and certain tools and an obsession to always change the .NET framework to work more like the latest fad instead of forging out the best practices from other languages and frameworks. The state of ALT.NET is that it is broken, because it seems to be governed by a disorganized committee of bloggers with their own agendas. ALT.NET needs a hero, and that hero just needs to set down some commandments that all other ALT.NET conversations are governed by. See Update Below This is the only way the ALT.NET movement is going to survive the test of time.
This isn’t going to be an easy task, but I am willing to work with anybody who wants to form a working group to explorer the creation of these ALT.NET Commandments. If you are interested please click the Contact link above and maybe we can get something moving to help ALT.NET survive the test of time.
Update: Lee Drumond pointed out something that I didn’t consider about what I said above, and it probably should be rephrased so it is not taken the wrong way. I had said:
ALT.NET needs a hero, and that hero just needs to set down some commandments that all other ALT.NET conversations are governed by… I am willing to work with anybody who wants to form a working group to explore the creation of these ALT.NET Commandments.
This should have actually went something like this… ALT.NET needs a commitee thats sole focus is on advancing the principals of ALT.NET forward and breaking down the bariers in corporations through education. Once corporations see the benifits of ALT.NET, developers will be finacially modivated to learn the ALT.NET ways, to keep and advance their own careers. If the movement is not organized, it is nothing more than a social group that may gain a couple followers here and there, and really piss off others, just like any social group would.
By the way nothing I have said here is anything new to the ALT.NET community, it has all been said and repeated many times over in different ways and different formats. Unfortunately it is usually met with the same reactions, as Jeremy has commented below, and very little retrospective seems to be happening. Everything just moves forward as the status quo, as if there is nothing wrong with the fact that the same concerns are voiced over and over again.








March 18th, 2009 at 7:18 am
The State of ALT.NET…
You’ve been kicked (a good thing) – Trackback from DotNetKicks.com…
March 18th, 2009 at 2:04 pm
Good points…
another problem I see is that there are some people that have a lot of voice, and unfortunately all they do is criticizing and injecting only “negativity” inside the community.
To me being a ALT.NETer means:
– applying good design principles (like in SOLID, but only when it makes sense)
– looking at what is around, not only what comes from Microsoft, as there are a lot open source projects around that deserves a lot of respect
– write code as if the next one that reads it is maniac killer that knows exactly where you live
– making you code testable is a requirement (not TDD or DDD or BDD or xDD)
– always learn and improve your skills
– try to evangelize the 5 above principles and spread the word
Anyway, count me in…
March 18th, 2009 at 2:16 pm
I think that naturally as a .Net developer we are always looking for the next big thing, the next time saver, the next technology that will put us one step above the rest. I think that should be the goal of ALT.NET to look for and create the next big thing.
March 18th, 2009 at 2:24 pm
From my point of view, to be an ALT.NETer is formerly to be open minded in the .Net community and not to be only focused on what MS decide to be the truth.
. I hope to feel like an alt.neter in the future even if I use Entities in my project or not use an IoC.
With that paradigm we could see that the alt.net community gave an exceptional potential to the open source .net tools and promote best practices. But what you report is that the community seems to evolve in a closer mind, just like unix extremists some years ago? I hope not
The fact of being inspirated of other technologies is an evidence, that’s the better way to make your closed world progress, but you should not have to copy exactly or trash your main background.
I hope that alt.net people keep this open mind in the future and, indeed, it would be something very interesting if you manage to finish this alt.net commandments project.
Thanks for the post
March 18th, 2009 at 2:39 pm
ALT.net is about looking outside of the incredibly insular Microsoft development community. Mocking, TDD and IoC are considered old concepts by the guys on the other side of the wall doing enterprise development (ie: Java). They have been doing this for longer, have run into the same problems, and come up with solutions. It makes no sense to ignore these solutions until Microsoft offers mediocre implementations. Testing was considered radical until MSTest, which is hands down the worst xunit implementation currently in use. CI was considered radical until MSBuild, which is a clone of a java tool that has been around for about ten years. ORM only started getting buzz when Microsoft released Linq2Sql, which is wildly inappropriate for enterprise development, and EF which just sucks.
I may have gotten the wrong idea from reading this blog post, but what I am hearing from you is that we need to innovate in our own way, rather then just copying ideas and innovations from other places. I disagree with that, because as a group .net developers are so far behind in a great many areas. I agree that shoe-horning NHibernate and Windsor into small utility commandline apps is stupid, but we shouldn’t be debating their efficacy, we should be learning why they were created in the first place, and what makes them good ideas. Blindly following the java community is just as bad as blindly following microsoft, the goal should be to stop being blind!
Also, I think you have some bad info about ruby. Its not that it doesn’t scale because of mixins, blocks, or duck typing, it is that it doesn’t scale because it is an immature platform with alot of bad code still in it. It went from an obscure language to incredibly popular in about 4 years, and there is still a lot of cruft that needs to be cleaned out. Ruby 1.9, Rubinius, and JRuby are all things that have the potential to fix the scaling issues that are still in ruby, but it is sort of up in the air who will get finished/adopted first.
Also, IoC containers aren’t a ruby thing, because it isn’t really a problem that needs to be solved when you write ruby. Ditto with mocking, it is incredibly simple to redefine a method to return what you want, rather then the song and dance you need to go through in something like c#. Also, code that reads well is a general trend in the software engineering world as a whole right now, not just a ruby thing (although ruby does it really, really well).
March 18th, 2009 at 3:07 pm
http://altdotnet.org/
“We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.”
Why is this insufficient? Why is an ad-hoc community of developers (WHO DISAGREE A LOT) a bad thing? You don’t explain the ‘why’ well.
If you’re trying to lower the bar of ALT.NET in order to get something everyone can agree upon (analogous to the formation of the IServiceLocator interface,) you’ll be pinning ALT.NET to a specific set of technologies, “good-enough” practices and programming language techniques. Call it ALT.NET 2009 edition.
So have that discussion. But please, tell us why settling on more specific goals is better than what we have now.
Again, for emphasis:
–
“We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.”
–
March 18th, 2009 at 3:12 pm
Having been exposed to some zealots from the Alt.Net community (when I disagreed that high levels of fanaticism are required to be a ‘true’ developer) I have little taste for it for the future. I was coding when variable naming conventions brought coders to tears if they did not get their way (still happens!) and I was as disgusted then as I am now at the level of emotional attachment to a non-material entity.
Though I love the challenge of programming to solve problems and improve peoples lives I simply don’t feel so strongly about it that I would create a Second Life “Programmer’s Worship World” as many have done.
Programming is the coolest profession I could have chosen but it has a balanced place in my life.
March 18th, 2009 at 3:35 pm
Matt,
I feel like you half read my post, read in to it what you wanted, and are more interested in giving your own opinions. 90% of what you posted in your comment I never even hinted at saying. For example I don’t think you will find me mentioning IoC and Ruby in the same sentence.
Also ORM didn’t start becoming a buzz word with the release of LINQ2SQL, it has been something .NET has been embracing for a long time through tools like CodeSmith and as recently has 4 years ago with nHibernate. Also I don’t know where you got your apologies about MSTest and MSBuild, and can remember using NUnit and NAnt as far back as 2003/2004.
“I may have gotten the wrong idea from reading this blog post, but what I am hearing from you is that we need to innovate in our own way, rather then just copying ideas and innovations from other places.”
Yes I really think you did. That is not even close to what I said. What I said was that we need to move the zealotry out of ALT.NET and bring it more mainstream so that we can move past the early adopter stage of the movement.
Simone, Bret, Rui, Peter, Tcodex,
Thank you for your insight, I think you really got it and understand what I am getting at with my post for the most part. To reiterate, “ALT.NET started with some really down to earth goals of educating .NET developers about alternatives to developing software, by taking principals from other languages and frameworks and integrating them in to the .NET developers thought process.” This is where I think the movement strayed and this is where we need to get it back to. I hope you guys will join me.
I really want ALT.NET to take off because I find many ideas in the non-.NET world to be interesting and helpful to .NET developers. Some of these ideas are so helpful, but overwhelmingly ignored, because they don’t fit in to the fad market that has been setup around ALT.NET.
For example, I needed a really robust URL Rewriter to run this blog, however 1 year ago I would have either needed to use a poorly implemented ISAPI Rewriter or a severely lacking .NET equivalent defined through XML. All I really wanted was a URL Rewriter that used the robust and mature Apache mod_rewrite syntax, but this ALT.NET idea was largely ignored because it wasn’t sexy. So I ended up creating it myself, the Managed Fusion Rewriter and Reverse Proxy, and I have received a ton of positive feedback from .NET developers and Apache people working on Windows alike. The point is, it shouldn’t have taken 6 years to get a simple solution like this out to the development community, but because it couldn’t be shoved down somebodies through as gospel it was largely ignored as not necessary for .NET developers to understand. That is what we need to stop, the gospel preaching, and start to approach ALT.NET as a viable education tool to better our fellow programmers.
Nick
March 18th, 2009 at 4:19 pm
I read two main thrusts in the post. One was the zealotry bit, which I agree with. The other was that many of these things are fads, and should be viewed with critism, which is what I was responding to.
“For example I don’t think you will find me mentioning IoC and Ruby in the same sentence.”
Auto-mocking is a function of IoC containers, and you said that auto-mocking was an attempt to be more like ruby.
“Also ORM didn’t start becoming a buzz word with the release of LINQ2SQL, it has been something .NET has been embracing for a long time through tools like CodeSmith and as recently has 4 years ago with nHibernate. Also I don’t know where you got your apologies about MSTest and MSBuild, and can remember using NUnit and NAnt as far back as 2003/2004.”
those bits I apologize for, I think I painted you with the wrong brush. I am new to developing in the microsoft space, and that is an attitude I find particularly frustrating. You referred to mocking, fluent interfaces, and declarative programming as “Aluminum Wiring”, and then went on to talk about ruby in a poor light for the wrong reasons. I rolled up a bunch of other opinions I run across when I hear stuff like that, and made some assumptions which were wrong.
“Yes I really think you did. That is not even close to what I said. What I said was that we need to move the zealotry out of ALT.NET and bring it more mainstream so that we can move past the early adopter stage of the movement.”
Again, I agree with that part wholeheartedly. Reading over your post again, it is specific critisms that I got hung up on. I blame it on frustration, and an extremely long day, and I am sorry if I came off a bit harsh.
March 18th, 2009 at 5:30 pm
Hi Nick,
Some really good insights and suggestions here, though you definitely lost me on this part:
“ALT.NET needs a hero, and that hero just needs to set down some commandments that all other ALT.NET conversations are governed by… I am willing to work with anybody who wants to form a working group to explore the creation of these ALT.NET Commandments.”
Rather than clog up your comments with a long reply, I posted one on my own blog.
http://leedumond.com/blog/does-alt-net-need-a-dictator/
I welcome your feedback on it.
March 18th, 2009 at 6:56 pm
[...] and for all what ALT.NET is all about. Is that really such a good idea?I read with great interest this recent blog post by Nick Berardi over at CoderJournal. Nick is a smart guy whom I admire, and in this post he brings [...]
March 18th, 2009 at 7:20 pm
It’s borderline cliche to claim that ALT.NET is zealous and mean, but where’s the real meat to that accusation? I have NEVER heard anyone say that “you must use IoC, ORM’s, and DDD to have a truly ALT.NET architecture” except in blog posts from people on the sidelines like you whining about ALT.NET. Have you ever participated in any ALT.NET events, or are you just basing this all on hearsay? I’ll go so far as to say that most of the anti-ALT.NET complaints are simply from people that just don’t want to have to learn any of that stuff and criticize ALT.NET just to make themselves feel better.
“And as long as the way you choose to code is robust, easy to maintain, and easy for another developer to pick up where you left off — you are doing it right.”
– This has been, and continues to be, a major theme of ALT.NET, and has been from the very beginning. The major reason I think we’ve split off from the mainstream RAD approach in the .Net community is because we put so much more stress on maintainable software. Cultural relativism is cool and all if you’re a 19 year old liberal arts major, but the truth is that there are design techniques that are better than others. Just waving your hand and saying “I should be free to do whatever I want without being looked down on” sounds really kumbayah-ish, but the fact remains that some ways *are* better than other ways.
* I’m sick to death of guys like you screaming “Religious Zealotry” anytime someone has the temerity to hold and voice a strong opinion. Where’s the religious zealotry and dogma? Claiming “religious zealotry” is just a weak way to try to dismiss someone else’s point of view without really considering it.
* Auto mocking isn’t in Ruby, and isn’t even necessary. Auto mocking was invented as a way to achieve a mild mechanical savings in interaction tests in static typed languages. You wouldn’t even need auto mocking in a dynamic language.
* Mock objects have been around in .Net for 5-6 years, not exactly a flash in the pan. The mechanisms and usage of mock objects has improved dramatically in that time.
* The Agile community in .Net, which more or less means ALT.NET now, constitutes the only group of people in the entire .Net ecosystem that seem to care about software engineering practices like Continuous Integration, automated delivery, acceptance testing, and basic feedback mechanisms.
* Scott Allen made a typically witty post, but all those things you’re dismissing as fads are adding value today in real projects. Have you bothered to learn about them? How to use them well? Or just dismissing them with a wave of your hand as more of the ALT.NET dogma stuff?
March 18th, 2009 at 8:31 pm
Jeremy,
Re-read the post, I think you are projecting. I clearly stated that I have been immersing myself in ALT.NET for the past 6 months. So you are making broad unfounded accusations about what I have and haven’t done and there is no possible way you could know if I have attended meetings, chats, read blogs, or participated in user groups. You just want to assume that none of this is true because it helps you sleep better at night, labeling me as an “outsider”. Do you realize that you are proving #2 above with this vitriolic response, this is the same response that I would expect if I questioned the foundation of somebodies religion.
Plus now on to the real meat of your accusations:
see above
Your right, I was writing fast and did check my stuff for typos, I meant duck typing not auto mocking.
See this is where you are so far off base it is not even funny. This is the self important zealotry that I was talking about. Really only the small community of ALT.NETers care about Agile practices? Because you could implement none of the things you offered above and still be following the Agile software development process.
Agile is a project management function. I could create a whole application in Web Forms and DataSets and still follow the Agile principals. In fact most of the companies I have contracted with use the Agile process to develop their software, and most of them only used very basic unit testing with traditional QA teams to build their software.
So saying that ALT.NET == Agile is wrong, what you mean to say is that ALT.NET aligns it self with Agile.
As for this, you are hinting at that I have never tried any of this stuff again. Whatever helps you sleep at night. But, I actually use your StructureMap library on projects where it was necessary and helpful. In fact on 2 out of the 3 projects that I worked on last year I used StructureMap. In one project for my repository/entity layer, and in another for context changes in my application depending on the domain.
However my problem and the reason I wrote this post is for the 1 out of 3, that I am contracted to work on where anything more than a very simple architecture, would be a massive overkill and take me much longer to implement. There are definitely times where ALT.NET practices would be a massive and unneeded overhead, but the ALT.NET community does nothing to educate about these situations, so it seems more like a commiserating social club, then an organization that wants to help developers.
I have been building an ALT.NET project for the past year. Don’t know if it would be considered a traditional ALT.NET project. It is a Apache mod_rewrite based URL Rewriter for .NET. (http://urlrewriter.codeplex.com/) Based on bringing the principals of Apache’s robust rewriter to .NET developers.
I bring this up just as a way of saying, it would be wrong to consider me as an outsider throwing stones, because I really do believe in what ALT.NET originally stood for and what you outlined in this MSDN article. http://msdn.microsoft.com/en-us/magazine/cc337902.aspx
I just think you aren’t coming in to ALT.NET with the same perspective as I am because you were there in the beginning and I am a late joiner. The early adopters usually have blinders on to the very high barrier being set by constant lexicon changes and the harm of the constant change by adopting new fads all the time.
Nick
March 18th, 2009 at 9:07 pm
Jeremy
I think the point is that there should be less of “do this or you suck” and more “check this out…perfect for xyz scenarios.
I think is unfair to say that the alt.net group is the only group of .net developer that care about practices like Continuous Integration, automated delivery, acceptance testing etc. I know of many .net developers/shops pursuing these concepts since .Net 1.0.
Furthermore, to say that most of the ALT.Net critics are just people who don’t want to learn something new, does not help the cause. Yes there are mort’s out there but they don’t care about leaning something new the same way that they don’t care about defending the fact that they don’t care. So your critics are not morts. Morts just don’t care. I would venture to said that most of the critics are people who are interested on what you have to say, but hate the delivery. Is one thing to have thick skin but some of the “communication styles” are just over the top.
That said, I think there are lots of gems coming out of this (ALT.Net) community. I think more .net developers should be looking into things like the SOLID principals, software craftsmanship, continuous improvement etc. Ignore the rants, focus on leaning and improving your skills. For all the passionate ALT.Net er, you don’t need to defend yourselves…instead focus on the whys and hows. You would be surprise how much clearer the message will come across.
BTW, I don’t agree with Nick’s point on craftsmanship. Craftsmanship == “take pride in your work”. Craftsmanship != “do fancy stuff” but I can be wrong.
March 18th, 2009 at 9:36 pm
Hi Al,
All well said, but I wanted to address the fact that I have nothing wrong with Craftsmanship, I take pride in my craftsmanship of my applications. However I never sacrifice good software engineering principals to satisfy my need for a well crafted application. Because clients don’t hire us for well crafted applications they hire us for well engineered applications.
I differentiate the two by the following:
A well crafted application is something another developer feels good about working with.
A well engineered application is something a user feels good about working with.
Sometimes they mean the same thing, but often times in larger applications they don’t, because a user will never see or care about a repository pattern or if you used IoC or not. They only care that it works and it works right every time. I think we can all agree on this.
March 18th, 2009 at 10:24 pm
Nick, from your comments after the post it looks like you’d like to focus on a well-balanced education and you think ALT.NET zealots present an unbalanced front, emphasizing shininess over engineering. E.g., ALT.NET does nothing but talk about the shiny new BDD framework, instead of discussing a balanced testing strategy. That’s what I hear you saying.
But this is already happening right? How many recent blog posts (or entire PDF ebooks) written by “ALT.NET guys” have the words “fundamentals,” “foundations,” “essentials” in them? How many code camps/Saturday events have you attended where these very topics were presented, in introductory fashion? Have you dialed into a Virtual ALT.NET meeting? Checked out the Summer of NHibernate series? Attended your .NET user group where an ALT.NET guy was presenting?
Jeremy might be unhappy with you because you failed to mention all these things, INCLUDING the fact he’s written a bunch of ‘fundamentals’ articles in MSDN magazine. I.e., he’s trying to achieve the very thing you say is missing in ALT.NET.
So while yes, there is SOME merit to your claim that ALT.NET likes shiny new BDD frameworks, NO, you’re wrong in assuming they don’t ALSO provide the kind of introductory training you say is lacking. And a lot of training.
–
Separately, I think you’re saying that developers don’t have to be PERFECT or even write TESTABLE CODE to feel adequate (see http://secretgeek.net/inadequate.asp ). Which is fine. But don’t write ‘you are doing it right’ when you mean ‘You shouldn’t suffer from feelings of inadequacy.’ I personally have no problems feeling adequate while acknowledging that there is a better way, and while remaining knowingly ignorant of that better way. E.g. I’m mostly ignorant of DDD, and am just learning TDD. But ALT.NET isn’t about adequacy; once again:
–
“We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.”
–
I didn’t make it clear in my last comment, but I don’t agree with this post. If you think ALT.NET should step up the education route, BEYOND what is already happening now, fine, but delete your ENTIRE post and start over, reposting something like “ALT.NET needs to step up its education efforts,” with AS LITTLE EXTRA TEXT AS POSSIBLE so as not to be misunderstood. And also acknowledge all the existing education efforts! Wow that last sentence had huge alliteration, awesome.
March 19th, 2009 at 5:54 am
Peter,
If it was just me saying this stuff I would write myself off as a quack, but the truth is what I have mentioned above is nothing new. It is understandable that Jeremy is taking offense to what I said, because he is Mr. ALT.NET, I say that with no disrespect. But he also has to realize by having an ad-hoc community, the image of the community is dictated by everybody and anybody.
If he really wants ALT.NET to be main streamed in the thought process of developers, it needs to be formally organized, because what is happening right now is obviously not working.
Nick
March 19th, 2009 at 6:48 am
[...] The State of ALT.NET (Nick Berardi) [...]
March 19th, 2009 at 8:07 am
(“Take the religious zealotry out of ALT.NET” ==
“This isn’t going to be an easy task, but I am willing to work with anybody who wants to form a working group to explorer the creation of these ALT.NET Commandments.”)
Evaluates to false right?
March 19th, 2009 at 8:44 am
Nick,
I’m trying to focus on positive, actionable goals when I write comments here. But your post and subsequent comments are making it difficult to do so. Let’s review:
* Your original conclusion was that there needs to be an ALT.NET hero to guide ALT.NET…somehow. Pretty much everyone disagreed, and you’ve struck the text from your original post.
* Your updated conclusion is that ALT.NET is doing a bad job of teaching. I think I’ve solidly refuted that claim.
* Your new conclusion (in the comments) sounds a lot like your first conclusion, except this time you’re saying “there’s a lot of people like me” as your new supporting argument. You also claim that ALT.NET “is obviously not working.”
* Also you’ve made a bunch of factual errors in your original post’s supporting arguments, so let’s just ignore their existence. Others have refuted them.
Now let’s be clear. I would like you to rewrite your post, removing all erroneous supporting arguments, and settling on one or more conclusion. Because I think we’ve done a good job of tearing into all of your original arguments, and at this point I’m not sure what you’re driving at.
Also you may be interested to read Jeremy’s post, which covers a lot of the same goals, but with different conclusions: http://codebetter.com/blogs/jeremy.miller/archive/2009/03/01/a-coalition-of-the-willing.aspx
March 19th, 2009 at 9:07 am
I’m glad to hear that someone is bringing this issue out into the open. A few months ago I started work on a new project and began by researching ‘best practices’ within the .Net community and obviously alt.net quickly appeared on my radar. After about three months of trying to identify one clear set of principles I should be following I eventually came to the conclusion that alt.net was whatever any individual said it was and there was no qualified set of ‘best practices’ within it that was organised enough to adopt. I also quickly realised that alt.net was obsolete on pretty much a daily basis, tomorrow there would be dozens of articles on various blogs refuting most of what I had learned the day before. In the interests of not bankrupting my employer I decided to back off and stick with my existing .Net skillset which was a pity because I’m sure my project would have benefitted from some of the principles that were suggested. In the end though I just couldn’t prune a clear enough path through the chaotic, contradictory information about alt.net to find a better way to develop my software and would have been caught up in the ‘research’ phase forever if I had tried.
March 19th, 2009 at 4:03 pm
Jeremy was spot on.
I’m sorry, this article is very little more than a string of false assertions and straw men. I’ll list a few until I get bored:
“There are too many people out there preaching about how their brand of ALT.NET is the only path to salvation from the drudgery of everyday .NET programming. I have heard from a number of people that you don’t have a true ALT.NET application unless you are using an IoC library, nHibernate, and separate your domain model in to a separate project library away from your data access layer.”
I have not heard any Alt.Net people take that position. If any have then it is the minorest of minority positions. In fact, we repeatedly go to great lengths to emphasize that Alt.net has never been about tools.
“K. Scott Allen had a really good analogy of this focus on craftsmanship over solid engineering of your code.”
This is a misquote. K. Scott Allen didn’t say anything about craftsmenship. What makes Mock objects, Fluent APIs etc related to craftsmenship and not engineering? It seems that you are defining craftsmenship and engineering as all of the things you don’t like and do like respectively. Go read the craftsmenship manifesto. It has nothing to do with your invented definition of the craftsmanship movement.
“ALT.NET started with some really down to earth goals of educating .NET developers about alternatives to developing software, by taking principals from other languages and frameworks and integrating them in to the .NET developers thought process.”
Wrong. Where do you get this stuff? Alt.net is about self-improvement. It’s not about education.
You don’t have to like Alt.Net, its not for everyone. But please be aware that people may read what you wrote and not realise that you made it up.
March 19th, 2009 at 5:46 pm
1. Where-ever two or more gather, there will be a difference in opinion. I don’t see a way around that — ever. Either you have a community, with all the disagreement that it involves, or you have a dictatorship. Communities grow, the other just makes enemies. Actually, both make enemies, just one does it far faster than the other.
2. Jeremy called you an outsider, I would classify you as a newcomer. 6 months is not very long of a time. I have actually found most of the community to fairly nuanced in their opinions. Jeremy Miller and Greg Young are two examples. There have been many times I’ve seen Greg tell people to NOT use DDD because their project was too small for it. The hard part for newcomers is drowning a the VERY vocal minority. They tend to not stay long, but are quickly replaced.
3. Engineering without craftsmanship is equally bad.
Also, you didn’t bring this up, but Mordy did: looking for best practices. First bad assumption is that there is one standard set of best practices to follow. There isn’t. You tell me your situation, and I’ll give you best practices for situation. There-in is the difference between data and wisdom.
March 22nd, 2009 at 5:53 pm
[...] The State of ALT.NET The movement is alive, but not exactly well… [...]
March 23rd, 2009 at 7:30 am
Liam: Yes – what I wanted to do was just get people thinking about the current approaches we are taking and dream about something even better in the future. Mocks are a good example. As Jeremy said they provide real value today. But, if we still think mocks are the best solution 5 years from now I’ll be surprised. It probably means we were so heads-down on improving the libraries and factories for mocking that we ignored other potential solutions. I don’t know what the replacement might be, but with static and dynamic languages blending into the same process so easily I think something else will emerge.
March 23rd, 2009 at 7:34 am
I think Jeremy proved Nick’s point.
I also think that Jeremy has a selective memory. Please recall a random conversation on the ALT.NET mailinglist where I mentioned ‘Waterfall’ as a technique used by some projects. Ah, it really was a discussion similar to what you describe, Jeremy. NOT.
I understand that the majority of ALT.NET simply wants to use practices and principles which give them the best guarantee that their software won’t suck. Nothing wrong with that. That’s also not the point of Nick’s article I think. The main point is that search for those practices and principles is driven by group-think and not by open minded individuals. Due to this, any proposal/thought/opinion which doesn’t match with the group-think is not going to be accepted.
What should be noted is that this isn’t intentional. Jeremy, and also others in the comments, I think you focus too much on the thought that outsiders pointing at that group-think phenomenon mean it IS intentional. It’s not. It’s very natural of a tight group of people who think the same to slip into some sort of group-think which automatically makes it very hard for people who have different opinions to even feel comfortable among that group left alone speak up and have a healthy mature discussion between adults.
I read the threads on the alt.net mailinglist from time to time. The discussions are not as heated 1-2 years ago, though they are also not very diverse: most of them are a recurring event and have a predictable outcome. I’ve never missed the participation in the discussions, due to this.
About craftmanship. I don’t really see that being debated or a point of interest here, Nick. I think you chose the wrong word. Craftmanship is something a very high skilled individual will have and the rest will not. In our profession, one can have craftmanship but it’s always based on a solid theoretic foundation. After all, software engineering isn’t about typing sourcecode. It’s about designing the program which is then projected onto the language and platform of choice. How you do that, that’s up to the developer(s), but if software quality depends on the usage of code-level tricks, something is seriously wrong. CODE quality, sure. but software quality is much bigger than that.