Very recently, within the past 5 months, I've been following the
ALT.NET movement and part of me wonders why this isn't Mainstream.NET. To me it only makes sense to pick the best tool for the job no matter who made it, adopt the best practices from the software industry no matter the language, and always look for a better way to develop software in an Agile/XP fashion
For those unfamiliar,
David Laribee coined the term and came up with the four basic points of who is ALT.NET:
- You’re the type of developer who uses what works while keeping an eye out for a better way.
- You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
- You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
- You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. Resharper.)
Jeffrey Palermo went even further in his post to describe the basic principles:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
If you haven't read that post, I highly encourage you to do so.
Many think this is a negative movement. I couldn't disagree more. Sure, there may be harsh words every so often, but the idea is for betterment of the community, education, outreach and picking the right tools for the job.
What this is trying to address is the lack of willingness to go beyond what is out-of-the-box functionality provided by Microsoft. To questions whether it is a good implementation, and analyze similar tools and best practices in the industry. It's an ongoing effort on many people's part to get people involved in the industry. This a very needed extension of the Agile Methodology.
In short, my principles to live by in this scenario are:
- Continuing education is key. Not only read the MSDN articles, but read more outside that have a lot more to offer than just a new wizard control or RAD feature that shouldn't ever be used in production.
- Use the right tool for the right job. Investigate all alternative tools. The community tools of NUnit, NHibernate, Spring.NET, TestDriven.NET are great tools and offer a great contrast to those out-of-the-box by Microsoft.
- Get involved with the community by blogging, OSS
- Be a mentor and spread the knowledge.
- Focus on quality. Have solid engineering discipline and skills. Customer involvement is key. Follow Agile/XP principles
What it comes down to at the end of the day is passion for the community, education, and a willingness to find a better way for software development. Get involved!