Getting the negativity out of my system before the end of the year comes with the promise of a new day and a fresh start in a new position. I was going to call this something like a developer’s bill of rights but that’s pompous and we don’t have a “right” to any of this. I’m not thinking of any one particular project or organization here but an amalgamation of all the ugliness I’ve seen the last couple years. All the same, here’s for wishing.
ALT.NET
I want ALT.NET to be something that ultimately leads to a stronger, more capable .Net developer community. I want a greater awareness of solid software engineering thinking in .Net teams. I want things like “Separation of Concerns” and Continuous Integration and TDD/BDD to stop being fancy ivory tower things we don’t have time for and start being just things that we do. That’s it. I don’t want to change the world or convert MS to our new (stolen from every other developer community) philosophy. I do want us to be exchanging ideas with other develoment communities instead of having a closed loop conversation with Microsoft only. I’m sick of the tortured “what is it all about” and “who made you boss” crap on the mailing lists and the not entirely undeserved negative backlash to ALT.NET.
The masked man behind ALT.NET Pursefight put it best:
We see the person best helped by Alt.Net as that young, enterprising developer living in a cave somewhere with a bunch of old geezers, basically left to his/her own devices to find the best tools/practices to help them implement their solution. Ie that one-in-ten developer who is using NHibernate and CI Factory while the rest of the team is stumbling along blindly, still trying to wrap their brains around all these new-fangled, advanced concepts like DataSets and Generics.
Perfect. Let’s help that guy out and be a support group for folks like that. Circa 2002 *I* was that guy.
Customers that care
You’re spending oodles of money to develop this software. How about a little time and concentration during the project to make sure that what’s getting built is valuable? My wife and I are buying a new house in Austin that’s breaking ground this month. You better believe we’re going to be over to the construction site on a regular basis — even though there’s already a blueprint.
To Write Software that Matters
That’s right, I’d like to build stuff that somebody else cares about. I built a new architecture for a Trade Capture application this past spring that I’m still fairly proud of. The codebase has a very high level of test coverage, little DSLish fluent interfaces for gluing together common behavior, and has so far been very successful in efforts to extend the system. It’s feature rich, but nobody is using it because nobody was asking for it. I spent over a year and a half in a satellite office where the mothership didn’t give a damn that we existed period. I want to be the main show and feel like the work has some purpose.
Good Requirements
Requirements that lead to software that matters and given in a form that’s easy for both the developers and testers to use. I’m shooting for Executable Requirements next year for everything possible. I refuse to let the dream die. A vague statement of “just make it work like some other system” does not fit the bill. Neither does a requirement pulled from a PM’s fevered imagination without customer involvement.
Testers embedded and collocated on the team
I counted it up, since the end of a project in about July of 2001 I have had roughly 12 months where I worked with actual testers. I think it’s close to insanely stupid that so few organizations seem to pay attention to the testing. Testing seems to go so much easier when it happens closer to coding and problems get fixed easier when the testers are collocated.
A Project Manager that I trust
Actually, next year PM is one of my hats, so I hope I can trust the PM. I think too many project managers handle the stress of expectations from above poorly and pass that stress on to the rest of the team. Other PM’s try to create a cult of personality around themselves on the project. The project manager needs to be someone I can trust to take care of roadblocks from outside and manage priorities — but never someone I need to be afraid of in retrospectives.
A culture of sharpening the saw
If I hear any variation on the words “we don’t have time for [something that would make us faster], we’ve got stuff to do!” or “we’ve just got to Git ‘R Done!” one more time from anybody I work with, I will be charged with physical assault. I’m putting the words “Sharpen the Saw!” on a poster somewhere in our new office space. I like Jim Shore’s Fill in the Gopher Holes analogy here.
A Collaborative Workspace
I just wrapped up 15 months straight of cubesville living and being monitored. Cubicles might as well be sold as an “Anti-Collaboration and Isolation” device for your employees. I can’t wait to get back into a team room again. I’m an introvert by nature, but I’ve gotten used to XP style teams and I miss the interaction with other people.
An enjoyable environment
Minimal tension, a dash of fun, and a sense of shared purpose. I want to be anal retentive about anything related to the code and the final product, but loose about everything else.
No More Legacy Code!
I’m tired of taking over .Net code that’s less than 2 years old that’s unmistakably legacy code — i.e. code that you don’t want to work with. Granted, I’m very particular about how I want things, but test coverage, consistent code formatting and naming, and cyclomatic complexity numbers measured in the tens shouldn’t be too much to ask for. I’ll accept bad code in 5 year old systems, but not from freshly minted code.