I feel an obligation to follow up on this issue since I am the group owner on record with Yahoo.
Here is a message I sent to the group just in case you no longer track the list formerly known as “altnetconf”:
Guys, I am the yahoo owner of this list. I originally grabbed it so that we’d have a place for discussion after the October AltNetConf. I deferred to David Laribee and Scott Bellware when it came to leading and fostering the Alt.Net community. It appears now that there are other lists where the Alt.Net dialog is occurring. I have created a poll: http://tech.groups.yahoo.com/group/cli_dev/surveys?id=2005679 Please let me know opinions. It seems that spammers are auto-creating accounts, and the relevant discussion here is very sparse. If the poll results in a “yes” answer, I’ll take down this list.
Black Belt Software Configuration Management: Source Control, Builds, Database Migration, Testing, and Deployment (Development Practices track): As part of the new “development practices” track, this session will focus on all the ways to make the development process speed up. So many of these practices are emphasizes in extreme programming, and I’ll be sharing the combination I and my company use to make software projects manage themselves. All tools demonstrated with only require the VS 2008 Pro sku. You can have an awesome SCM process without purchasing VSTS.
Data Access Layer: Architectural Concerns for Object/Relational Mappers (O/R-M) (Architecture track): All examples will use NHibernate, but that’s not the focus of this session. This session will speak to the architecture of a system that uses and O/R mapper. One of the common, early mistakes of folks starting to use O/R mappers is mixing data access and domain logic. Having used NHibernate for over 2.5 years, I’ve worked out how to build an application that uses an ORM without the whole application knowing about it. Lessons in this session can be applied to LINQ to SQL and EF as well.
Model View Controller (MVC) Architecture Pattern: Considerations for the New ASP.NET MVC Framework (Architecture track): There will be plenty of talk at Tech Ed about the new ASP.NET MVC Framework, but this is the only talk scheduled that purely addresses architectural concerns. I think it’s fairly easy to pick up Monorail or ASP.NET MVC and start using it, but it’s not easy to immediately understand how to set up the presentation layer when leveraging the MVC pattern, regardless of framework used. This session will cover project references, early and late binding, testing architecture, and builds.
All of the techniques I demonstrated in my sessions will use VS2008Pro (not VSTS). My goal is to maximize the audience that can benefit from the session, not just those whose companies have purchases team system. With that, I’ll be showing lots of other tools, some free, some commercial.
I’ll also be planning a Party with Palermo for Tech Ed that will be held on June 2nd at 7pm, so stay tuned for those details.
This will be my first time speaking at Tech Ed, and I’m a bit surprised that they accepted all my session proposals given that I’m not one to openly evangelize the latest and greatest from Microsoft. Each of my sessions will be focused on how to get work done, not tell you how great products are. The ASP.NET MVC Framework is new, and lots of people are in love with it. I’m an early adopter, but I also am compelled to address challenges of the framework and how to get around them. It’s not all gravy, so prepare to get your hands dirty if you come to my sessions.
I have an Agile/XP focus in software development as well, so that will come through regardless of the topic on which I’m speaking. If you are planning on going to DevTeach, Toronto, I’ll be giving the Blackbelt SCM and ASP.NET MVC talk at that conference as well.
11:58 pm on February 23, 2008 Tags: aspnetmvc mvc asp.net palermo
ASP.NET MVC in Action is a book from Manning that covers the newly-released ASP.NET MVC Framework. Jeffrey Palermo, Ben Scheirman, and Jimmy Bogard teamed up to write this advanced volume. It is not a beginner book. It is not a professional book. It is an advanced book for ASP.NET professionals. These three Alt.Net authors share best practices, patterns, and lots of opinions on how to use the new framework.
UPDATE: 9/21/2009 – The book is published now. You can find more information here.
Kevin Hurwitz and I talk at length about pain-driven development. For those who don’t know, Kevin is my lead architect and .Net Practice Manager at Headspring Systems, and we’ve worked together since mid-2006. We both have the same mindset about PDD. If we are motivated to put time into changing some aspect of the software, it has to be related to one or more areas of pain. For instance, if the build is taking too long, we might look for ways to speed up the build. If a particular interface has too many responsibilities, it may annoy us enough to break it up.
Now, we do have a low threshold for pain. We expect our software configuration management to be frictionless and go completely smoothly, including automatic database migrations; therefore, pain points that pop up are obvious, and we tend to kill the pain by fixing the source very quickly.
The point of this post is to think of pain reduction as ROI. In business, we might spend money on software for some expected return on investment. While working with the software, we also have returns on investment, but in the form of productivity. Pain kills productivity. Over time, we might learn to live with pain through parts of the process by taking a constant does of <insert painkiller here/>, but that only hides the pain. It doesn’t cure it.
Pain-driven development is a mindset where developers react intensely to pain and solve it so that it goes away once and for all. PDD practitioners don’t just cover up the pain. We eradicate it. PDD leads to a completely frictionless software process that is a joy to experience.
Note: I’m not advocating another XDD acronym, but I wanted to share our mindset.
I spent the first part of my career on the side of the fence where I want to make it fast first. In fact, I wanted to keep it fast all the way through.
I’m talking about software. Performance optimization. Speed.
There was a time when every time I concatenated a string I weighed the theoretical pros and cons of using the plus operator vs StringBuilder vs. string.Format(). I even measured differences. I’ve now come to the point where I realize that PDD (pain-driven development) is the real decision-maker. It’s no longer worth my time to think about what concatenation method might be faster. Compared to a single database call, the speed different is irrelevant.
Point: A well-designed application can be tuned at any conceivable place after it’s working correctly. An application that has “performance optimizations” coded into it from the start has less flexibility for the inevitable bottleneck that surfaces unexpectedly.
Point: I will not guess at what part of my code will be a bottleneck unless I have past experience in the exact same scenario. Rather, I will lead the team to create correct software that _appears_ to be fast enough throughout the project. At an agreed-upon time we’ll profile (with the appropriate tools – yes, I mean _measure_) the application and find any bottlenecks that are not acceptable for production. Then, with real data in hand, we’ll tune exactly the right parts of the application. We will not guess before measuring. After measuring, guessing is not necessary.
Point: First make it right. Then make it fast.
In general, out of process calls are performance bottlenecks, not in-process logic. Either way, measuring tells the truth, not guessing.
With the original 0.86 beta 1 release, there was a small problem with folks who only had VS 2008 installed because there was a dependency on a registry key that was installed with the .Net 2.0 SDK (or VS 2005).
I have to say that over the past 2.5 years, I have been very pleased with NAnt. It is a great open-source build tool, and it integrates with every other command-line tool I could want. I normally <exec/> out to msbuild.exe for the compile. I have a NAnt build template available in my public source code repository here.
I think Microsoft is making a huge mistake by leaning so heavily on anonymous types as API parameters, particularly in the ASP.NET MVC Framework. Not only does this make the APIs in the system ugly and error-prone, but it’s not intuitive, and there is no intellisense for it because the API is untyped (typed as object) in the case where an anonymous type is expected. I think we should stick with named types and named methods wherever possible. I currently don’t see a problem with lamda’s if they give an advantage over regular arguments. I’m very cautious about automatically using new, unproven language features before we fully understand how they will affect the usability and maintainability of code. Note: we have NO track record for the maintainability of these new language features, and they were developed specifically for LINQ, so using them outside of that context is suspect, in my opinion.
I do have a conservative disposition on this, but this is through learning from the past. I still remeber OpenXML is SQL Server 2000: how so many developers automatically converted stored procedure interfaces to be a single XML string rather than individual arguments. We need to fully understand the long-term strengths and weaknesses of features in order to maximize the value of usage or non-usage.