A note to Microsoft: Agile or open source doesn’t excuse it being crap
I explicitly don’t want to go over the exact scenario that this is relating to. I want to talk about a general sentiment that I got from several people from Microsoft a few times, which I find annoying.
It can be summed up pretty easily by this quote:
You all know that we work on the Agile process here, right? We get something out (perhaps a little early) and then improve it. Codeplex is for open source and continuous improvement with community feedback.
The context is a response to a critique about unacceptable level of quality in something Microsoft put out. Again, I do not want to discuss the specifics. I want to discuss the sentiment, I got answers in a similar spirit from several Microsoft people recently, and I find it annoying in the extreme.
Agile doesn’t mean that you start with crap, call it organic fertilizer and try to tell me that it will improve in the future. Quality is supposed to be built in, it is the scope that you grow incrementally, not the product quality.
I actually find the open source comment to be even more annoying. Open source does not mean that you get someone else to do your dirty work. And if you take something and call it open source, it doesn’t mean that you are not going to get called on the carpet for the quality of whatever you released.
Calling it open source does not mean that the community is accountable for its quality.
Indeed. I've been wondering if MS is using an "embrace and destroy" tactic with regards to open source.
I mean, why create your own site for OS project hosting (CodePlex) when a nexus of OS activity exists already (SF)? Moreover, Codeplex mandated the use of proprietary closed-source tools from Microsoft to access code when it was launched. And let's face it - CodePlex could not have been a high priority given its performance (which has only recently improved).
MS is touting OS initiatives, but everything they do is still all about them.
No, CodePlex is fully accessible from OSS tools. You can use SVN to work with CodePlex.
I know, because my first independent contract was with CodePlex, completing just that task
I know this post isn't so much a pop at microsoft so sorry if this a little off context.. but personally I've just become put off with trying to help microsoft improve some of their tools.. I put effort into reporting and get told "it's by design".. you may be thinking.. ah well you just don't understand the api.. but I understand the requirements of the api.. and the design of their api is wrong.. that's what I try and help.. why should I bother commiting time to feedback if they can fob me off with 'ah yea we designed it to be assy on purpose - WILL NOT FIX'..
I'm not sure I agree. One of the tenets of TDD is to just get it working, then refactor. After all the user cares not what brilliant design you have used, they just care how the product works. The fact that a behemoth such as MS is participating at all in these encounters is a good thing. That they allow their employees to get out and interact the way they do without locking them down in a company of that size is pretty good.
If you look at how the .NET framework actually works through reflector it is somewhat horrifying, much as looking at some of the code they produce is not great. But given the number of developers they have that is bound to occur. It's easier to find a few geniuses than 10K of them. But they are still able to pull it off.
I really, really like C# compared to the alternatives and MS is to thank for that.
Yeah, but the "refactor" part of TDD is a key element. Without the refactor step, I don't believe you are actually doing TDD.
I agree with Oren that Agile is not an excuse for writing crappy code. One of the major keys for TDD is that at every "ship" cycle (like an end of an iteration), the code should be in great shape ready to ship. In one way, the code should do only what is necessary, but do it well. Get rid of all that gold plating that can sneak in, and focus on the essence of the software.
Doing TDD and leaving out the "refactor" part is just asking for trouble. And I'm not talking about "refactor at the end before you ship", I'm talking about "refactor as soon as the test is green and before you move on to the next test (if necessary)".
TDD feedback cycle is minutes, not full iterations
Oren, I fully agree. This sentiment and attitude is plain crap and just shows how much some teams "don't get it" (still). I know I'm perfectly capable of writing crap code, but I wouldn't want to release it as "open source" until I'm comfortable with the design and could use honest feedback (and you would hope that the design is in good shape almost every step of the way).
LOL, much more succinctly put than me Oren. And exactly what I was thinking.
If the deliverable that has been released is marked alpha, beta, preview or anything similar then the sentiment of the MS chaps is entirely appropriate in terms of releasing early and improving.
We can't speak to this however as you don't provide the context.
For my own part, as long as a team is actually responding to feedback I'm all in favour of them releasing early. I like for instance the way that the .NET MVC development has been handled. It's relatively transparent, and open to feedback.
I think "corporate entity" and "open source" in the same context is a contradiction. It is "open source with corporate goggles". That is where the accountability issue appears - making money and avoiding getting sued is still the primary concern with software quality second.
What's up with all the people who think being a corporation = bad OS? There are a lot of high quality OS projects, but there are also a lot of them working well, but being pure horror mess inside. And these horror ones were not developed by MS.
Now what is actually happening is that MS as a big corporation produces a lot of projects/samples/documents and it is hard to for them to estimate the skills of people involved with each single project. Probably because OS is still quite new for them and their code review was not as strict as what the community is now doing. I think they will understand it and improve it , in the same way they understood OS.
Also, the sentiment you do not like seems to me to have an additional meaning: "We will use community code review since it seems to work better than our own for now, but we do not really want to say this out loud, because that would mean we admit flaws of our company and our coworkers."
Per a comment I made to Oren a few messages ago when he was having issues with a 3rd party product and not getting any response.
At these big public companies where people thing they are buying producting from Gods - think again, their programmers SUCK too.
"I want to discuss the sentiment, not the specifics" is not far from saying "I'd like to discredit them without supplying evidence". Please do discuss the specifics, including the people involved. This can be done in a constructive and diplomatic fashion and would allow them to respond. What you are doing now approaches a broad ad hominem argument. And to challenge your statement, calling it open source doesn't mean that Microsoft is accountable, at least as a corporate entity. Hold the actual committer, and if there isn't one (identifiable) then that's part of the problem. Work the system to improve it; don't whine off to the side.
You know what they say: "At Microsoft, Quality is Job 1.1"
What is or is not TDD is open to debate, arriving at a single definition that must encompass all situations seems unlikely.
You've never, ever left something how it is because it worked and decided to come back and refactor it later?
@pb: There may be some debate about what TDD is and is not, and who gets to define this. But you try to extend the definition of TDD to cover its opposite. But the quote from MS never mentioned TDD, only you did. Most OSS projects, Agile or not, do not use TDD. Most have Unit Tests, I believe, but it's a long way from just writing Unit Tests to TDD.
Keeping the quality low and fixing it later has nothing to do with Agile either. This is prototyping. And in my personal opinion, OSS is even less likely to work in a code-and-fix fashion than traditional co-located teams of paid developers are. If this works for Codeplex projects, then it is probably only because these are still Microsoft projects with little community involvement (OSS license, but no OSS process).
@Ayende: But still, you're not providing enough information for us to understand whether this is a code-and-fix attitude in Agile disguise. There are quality problems that can happen in TDD too, like bad specifications that lead to high quality code that still sucks from a user's perspective. In this case, the answer you quoted might be perfectly acceptable.
Personally, I don't see why anyone bothers with M$FT anymore. Mono is the way. Let them stew in their own pot. :)
Indeed, if Open Source were synonymous with Crap then all of Microsoft's code would be open source.
For a company who has considered it's (closed) source codes one of the biggest asset, stepping into the "brand new" open source world is probably paved with childish misconceptions, mistakes and horror. Especially considering the fact that developers there have been shielded and polstered by N-tier management (one truely n-tier technology they have:)) from the outside world. And the outside world is dangerous. I mean, corporate Coder Of the Year can be exposed as horribly unprofessional spagetthi cowboy just by exposing fraction of this work to the outside... And even for decent coders, corporate mindset and open source projects just doesn't compute. Roles, responsibilities and initiatives are way too different. I think people at MS still learn what open source means but I'm sadly sure, that many of them never get it.
At least they're trying (very well with MVC) to take a step in the right direction.
I think a very extraordinary diversion for a company so steeped in a closed culture.
I applaud they're efforts, Microsoft embracing TDD and Agile has probably done more to mainstream these methodologies than any other single organization.
I know what you mean. I recently downloaded the latest version of Oxite and although it is an improvement, there are still some bad conventions in the code. ViewData was completely abused, somebody get that object into witness protection (if you want to see what I mean, download the project and look at any view). It's a little disappointing, but good to see the community answering back with things like FubuMVC and AltOxite.