In the expansive universe of Microsoft’s .NET Framework, a distinct and dynamic community emerged, known as ALT.NET. The term, ingeniously coined by David Laribee, encapsulates a growing sentiment among .NET developers who perceived a disconnect between mainstream Microsoft tooling, guidance, and the core values they held dear. This collective feeling of seeking something more crystallized at the inaugural ALT.NET Open Spaces event in Austin, Texas, in October 2007. Over a hundred passionate developers gathered, transforming a blogosphere buzzword into a tangible movement and igniting the formation of a vibrant community.
But what exactly is ALT.NET? How does it diverge from the conventional .NET development landscape? What are the fundamental values that ALT.NET proponents felt were underserved? And what alternative tools, techniques, and practices do ALT.NET developers champion? To understand this, let’s delve into the foundational principles that define an ALT.NET developer.
The Core Tenets of an ALT.NET Developer
At its heart, ALT.NET is defined by a set of guiding principles that shape the approach to software development within the .NET ecosystem. These tenets, articulated early in the movement, provide a framework for understanding the ALT.NET philosophy:
1. Pragmatic Technology Adoption and Continuous Improvement
ALT.NET developers are characterized by their pragmatic approach to technology. They are not bound by dogma or vendor lock-in. Instead, they are driven by a desire to utilize the most effective tools and methodologies for the task at hand. This involves a constant evaluation of existing practices and a proactive search for better alternatives. A key focus within the ALT.NET community has been on bridging the gaps between requirements, testing, and code, aiming to streamline the software development process and eliminate inefficiencies.
2. Embracing Cross-Community Learning and Best Practices
The ALT.NET movement recognizes that innovation and valuable practices are not confined to any single community or technology stack. It actively encourages developers to look beyond the mainstream .NET sphere and draw inspiration from diverse sources, including the Open Source, Agile, Java, and Ruby communities. Acknowledging that Microsoft and the .NET community do not possess a monopoly on good software development, ALT.NET advocates for the adoption of proven principles and techniques from other ecosystems. Examples include Agile processes and Design Patterns, which originated in Smalltalk, Inversion of Control from Java, and the Ruby on Rails principles of “Don’t Repeat Yourself” (DRY) and “Convention over Configuration” – all of which can be effectively applied within .NET development.
3. A Rejection of the Status Quo and Pursuit of Excellence
ALT.NET developers are inherently dissatisfied with mediocrity and the status quo. They believe in continuous improvement and strive for elegance, maintainability, and high quality in their work. This drive for excellence fuels experimentation with novel techniques that foster a closer alignment between code, testing, and the business domain. Behavior Driven Development (BDD), for instance, is seen as a valuable refinement of Test Driven Development (TDD), emphasizing readable specifications of intended behavior. Similarly, language-oriented programming is explored for its potential to elevate the abstraction layer to the domain logic level.
4. Principles Over Tools: Emphasizing Fundamentals and Knowledge
While appreciating the utility of development tools, ALT.NET emphasizes that tools are merely enablers. The true essence of effective software development lies in a solid understanding of underlying principles and a deep knowledge base. The most valuable tools are those that embody best practices and reinforce sound principles, such as ReSharper, which encourages good coding practices. ALT.NET prioritizes maintainability and sustainability as paramount qualities of any software solution. This necessitates good design, which in turn stems from the skillful application of design knowledge. A core critique within the ALT.NET movement is that the broader .NET community has historically placed excessive emphasis on API and framework specifics, often at the expense of fundamental design and coding principles.
The Catalyst for ALT.NET: A Quest for Better Development Practices
The emergence of ALT.NET was partly catalyzed by concerns surrounding the direction of certain Microsoft technologies. The initial unveiling of the Entity Framework beta in March 2007 served as a pivotal moment. Many developers, including early ALT.NET proponents, expressed disappointment with aspects of the Entity Framework, particularly its perceived lack of “Persistence Ignorance” and tight coupling to databases. At that time, the Entity Framework, in its initial form, was considered by some to be less conducive to practices like TDD, Domain Driven Design, and Continuous Integration – methodologies deemed crucial for maintainable and adaptable software.
Conversely, the introduction of the ASP.NET Model View Controller (MVC) Framework was met with enthusiasm within the ALT.NET community. The MVC Framework was lauded for its explicit support for principles considered vital for successful software development. Its design inherently promoted maintainability and testability, emphasizing Separation of Concerns and testability throughout its architecture. This contrast highlighted the values that ALT.NET developers were advocating for – a focus on design principles, testability, and maintainability.
Cultivating Strong Developers: The ALT.NET Community’s Mission
Instead of succumbing to cynicism or resignation regarding the challenges in software development, ALT.NET adopted a proactive and constructive approach. Rather than simply lamenting the perceived skills gap or the difficulty in finding proficient developers, the movement acknowledged a fundamental issue: the industry’s shortcomings in nurturing and developing strong developers.
ALT.NET recognized that many developers were eager to adopt practices like Object/Relational Mapping and TDD but lacked clear guidance on where to begin. Similarly, developers already practicing these techniques sought a community for knowledge sharing and continuous improvement. The central aspiration of the ALT.NET movement became the creation of a supportive community to address these needs. This community aimed to assist both newcomers and experienced practitioners in becoming more proficient and well-rounded developers. In line with this mission, the Altnetpedia website (altnetpedia.com) was launched as a repository of resources for learning and applying these techniques within .NET. Furthermore, the altnetconf message board (tech.groups.yahoo.com/group/altdotnet) emerged as a thriving platform for .NET practitioners to engage in discussions about software development topics and share their expertise.
ALT.NET, therefore, represents not just a set of alternative technologies or practices, but a community-driven movement dedicated to fostering better software development principles and cultivating stronger, more versatile .NET developers. It encourages a spirit of inquiry, continuous learning, and collaboration, pushing the boundaries of .NET development and advocating for a more pragmatic and principle-driven approach to software creation.