What is ALT.NET?


When we were discussing the Indy ALT.NET group’s goals with others, we were asked, “How are you going to distinguish Indy ALT.NET from the Indy .NET User Group?” This was a GREAT question!

In coming up with that answer, I’ve mulled around and tried to come up with a definition for ALT.NET. There are plenty of posts out there that have attempted to do this but the reality of the situation is that there is not yet a single, concrete, agreed-upon answer to this. So as such, I’ll add my thoughts to that cloud of what some people think ALT.NET is.

In trying to define this, I am going to outline the process I went through in coming up with this definition. I think going through the process helps you understand what it is just a little bit better. Here was my first attempt:

The concept of ALT.NET means that you try to use all tools and techniques available in an appropriate way to do your job in the best and most efficient way possible.

The problem with this definition is that it leaves you just as confused as you were before. From this definition you would believe that ALT.NET is the same as being a good software engineer. I believe this definition is a 100% accurate definition but unfortunately, it is 90% useless. So let’s try it again and fill in not just what ALT.NET means but also what it stresses.

The concept of ALT.NET means that you try to use all tools (whether mainstream in your specific industry or not) and techniques available (whether mainstream in your industry or not) in an appropriate way (without overkill) to do your job in the best (as defined in almost any possible way) and most efficient way possible.

With these stresses, this definition starts to make a little more sense, but it’s still not all that useful. Let’s try it again and this time add a lot more to it.

The concept of ALT.NET means that you try to use all tools and techniques available in an appropriate way to do your job in the best and most efficient way possible.

The tools may come from any source whether it’s your industry or not. For example, there may be some tools that Java developers take for granted that are just completely unknown about in the .NET industry. Or perhaps there is a tool used by accountants to ensure calculations are done correctly and that tool would be an awesome yet non-obvious solution for implementing a suite of unit tests for your code.

Like the tools, the techniques may also come from any source whether it’s your industry or not. Perhaps you’re running into some architectural problems of how to lay things out and a VLSI engineer has a technique for laying out blocks of functionally-related items on their boards that an architect could use in laying out their classes.

In addition to these examples, the concept of ALT.NET even takes it one step further. Not only should one look to other industries for a tool or technique, one should also consider developing new tools or techniques to as part of the greater evolution of things. While they’re not ALT.NET-created concepts, “alternative” methodologies such as Domain Driven Design (DDD), Behavior Driven Design (BDD), and Agile Development have not always been around but had to have been dreamed up at some point. I believe ALT.NET encourages the evolution of our industry by encouraging such new “outside the box” concepts to be considered.

Now, one thing to be careful about is overusing these tools and techniques. Just as an architect needs to ensure he/she does not over-architect the system, you must also ensure you do not go overboard with these tools and techniques. They need to be used appropriately and not just for the sake of using them. In fact, often times the KISS methodology applies! When determining what tool or technique to use, you need to ensure you make such a decision to ensure you create the “best” thing you can. Best is a very vague word here that can be defined MANY different ways and that’s for you to decide. Perhaps it means the quickest solution to code. Maybe it means the fastest solution to execute (from a performance perspective). Perhaps it means the cheapest third-party tool that fits the bill. Or maybe it means the easiest for a user to interact with. The “maybes it means” list can go on forever.

Whew! I think that just might be it! I think that just might be a pretty good explanation of what ALT.NET is!


Now, while I believe that is a good definition for it, I think it’s important to discuss one more thing that has been a popular topic of debate. Is ALT.NET divisive? I am going to change the question a little bit and not answer whether it is or not but rather it should be (to me the difference in the questions are due to the rude and perhaps elitist behavior of some individuals and not the fundamental concept of the ALT.NET movement).

So, should ALT.NET be divisive? My answer is a simple “no.”

Let’s go back to my very first definition of what ALT.NET is:

The concept of ALT.NET means that you try to use all tools and techniques available in an appropriate way to do your job in the best and most efficient way possible.

As I stated before, this definition essentially means that you are simply trying to be the best software engineer that you can be! Again, I believe this is a 100% accurate definition. And by this definition, there should be absolutely no division created within our industry because of ALT.NET. This is what all of our peers should be doing. ALT.NET focuses on some non-mainstream things and in some scenarios such things are the “best” way of doing things but there are certainly times when they’re not the “best” way of doing things. The only question that remains is what exacly that “best” word means to you. Let’s use some examples.

Consider that you’re a consultant working on a small application for a non-profit company where the code will later be maintained by college students on a somewhat casual basis. In this case would it make sense to invest in a potentially complex way of architecting the system so that it follows a generic, standard philosophy? Perhaps but probably not if it is going to be too complex for the college students to easily (and safely) maintain.

Now consider that you’re a software development shop that regularly works on custom projects for clients. In this scenario, your business model could be built around efficiently pumping out successful projects in a repeatable fashion. In this case would it make sense to invest in a potentially complex way of architecting the system so that it follows a generic, standard philosophy? Probably so once you have nailed such a thing down you can repeat it regularly to increase productivity in the future.

One more example. Consider that you’re the said software development shop above and you are working on a very critical project with a tight deadline and you have not yet mastered this new architecture. In this case would it make sense to invest in a potentially complex way of architecting the system so that it follows a generic, standard philosophy? I would say probably not. Any significant fundamental change to your current process can introduce some very significant risks. With that being said, many of the topics that ALT.NET covers can introduce significant risks if they’re used in inappropriate situations or are not done well (which can very well happen since they’re not very widely understood in the industry and not many people have much experience with a lot of these things). So you must consider that doing such a thing can be a big risk.

In the last example, I hit on one very big thing and that is that many of the ALT.NET-focused topics bring a lot of risk with them because they are not yet really all that proven to be successful. There are many companies and situations where this is unacceptable and in those cases, the mainstream tools and techniques should probably be considered. This is not to say that the ALT.NET-focused topics are “too difficult” for certain people. It has nothing to do with that at all! It has everything to do with that “best” word. But I think people who determine that the ALT.NET topics aren’t currently “best” for them may still want to consider following the ALT.NET topics for their personal professional development. Increasing your awareness of various things is a good thing, afterall!

Now I want to end this post with a last closing thought. Personally to me, my interest in this ALT.NET movement has two motivations to it:

  1. I want to learn about some of these neat new things that I’ve never heard about before!
  2. I want our Indianapolis development community as a whole to learn about some of these neat new things too!

-Shane


EDIT: 4/30/2008 4:13pm EST
I have been asked for some links on various community sites by some people who are just now being introduced to the ALT.NET movement. Here are a few links to get you started. Over the next day or two I’ll see if I can get a “History of ALT.NET” post up. :)

David Laribee’s coining the term ALT.NET
AltNetPedia.com
MSDN Magazine article on ALT.NET
ASP.NET Podcast Show #103 - ALT.NET with David Laribee

1 Comment(s)

  1. Comment by Shane Milton on April 27, 2008 9:02 pm

    I apologize for this being such a lengthy post but I didn’t want to break out the divisive issue into a separate post since comments about the definition of ALT.NET could very well pertain to the divisive issue as well.

Comments RSS TrackBack Identifier URI

Leave a comment


Jaxidian Update is proudly powered by WordPress and themed by Mukkamu