As some of you folks who frequent Twitter may know already, there was quite a reaction to the MVC Storefront screencasts that I posted yesterday. Good, not so good, and everywhere in-between.
It's always nice to hear positive feedback - but for me the negative is an opportunity to learn why the message landed the way it did.
I took the time today to get on Skype with some fellow geeks and discuss the screencasts (part 1 and part 2), and I'm sure glad I did - that conversation rocked.
I'm Not A TDD Expert
I should have emphasized this more. The hard part is that when you work for Microsoft, people tend to more-readily accept what you say as guidance. In this case I'm sort of documenting the learning process - and I don't think I made that clear in the webcast. So to make it clear - I'm no TDD expert; I want to learn this process from the experts, and document it.
In a sentence - this isn't Microsoft teaching TDD. This is Rob trying to apply a good practice to developing a Commerce App (something I DO know a bit about :) and MVC.
What I'm hoping for as we move forward is for feedback on what can be improved (which I received, by truckload, today :), and to also talk about concretely (using the app as a common example) differing points of view.
Many developers, including myself, haven't used the TDD approach very much. This doesn't mean Unit Testing by the way - I've done my share of that. TDD is a mindset and design philosophy, and frankly takes some time to master and get it right.
Baptism By Fire
I sort of figured I'd stumble here and there in the webcasts - this is the first time I'd done TDD. I was hoping that I spoke to enough folks from the start and had enough reviews to catch the rough spots- but as always there's room for improvement and that's what I focused on today:
It was a very fun call (seriously - I really enjoyed talking to these guys) and we talked about the intricacies of TDD and the TDD design process.
TDD Pillowtalk
I'll be in Redmond next week at the MVP Summit and also at the Alt.NET conference. I'm hoping to hook up with these guys so we can talk in-person and share ideas - as that's what this is all about after all.
The next webcast is due out in the next day or so, and I'll talk about some changes brought about by this call (and some other emails), in addition to going into the next phase of the Repository: filtering using the Pipeline.
The comment about an uncompilable unit test being worthless was a bit of a TDD-mindset tipoff.. ;-)
But I was trying to ignore the TDD aspect of your videos..
Scott's comments are extreme, but nevertheless he makes a good point. When you open up with "My name is Rob Conery and I work for Microsoft", you are declaring yourself to be an expert at whatever you are talking about. Even IF you had made a big disclaimer at the beginning of the screencast saying that you really had no idea what you were doing and no one should follow your example (which you didn't do; in fact you did the opposite, you encouraged people who were curious about TDD to follow along), most people are going to fly right by that and find out "how the Microsoft expert does it". As a Microsoft DevDiv employee, you need to take greater responsibility for the content you put out, especially in the form of screencasts, which are generally looked upon as examples of what to do (as opposed to blog posts which can more readily be explained as "thinking out loud" or soliciting feedback).
As a professional developer who's still trying to wrap his head around TDD, MVC, SubSonic and Linq, I can say that I agree with pretty much all of the feedback I've seen on the posts, both positive and negative.
Now with your "course correction" I'm looking forward even more to the rest of the series. Thanks, and keep it coming!
>>>you are declaring yourself to be an expert at whatever you are talking about<<<
Really? Sorry friend, I reject that completely. This puts me in a corner and doesn't allow for the openness that people would like to see from MS.
>>>As a Microsoft DevDiv employee, you need to take greater responsibility for the content you put out<<<
With all due respect, Dave, my community track record speaks volumes about the "content I put out" and my level of responsibility. I'd like to keep this about the subject matter and not my competence please.
I for one am loving watching the learning process. I am just getting started with tdd and mvc myself and I want to thank you for putting yourself out there. This is allowing me to see the process of learning and to benefit from it while all of the stones are thrown at you =). I am glad you chose to be open in the process even though that is a tough spot to be in sometimes. I can't wait for the next one.
While I understand that not everything was perfect, this post sounds an awful lot like an apology and you certainly don't need one.
You came right out in the intro to the first screencast and wrote you were not a TDD expert and you were actually new to it. You were asking for help from people who are more experienced. What more can people want?
Anyway, thanks for being open, putting yourself out there, and sharing it with the rest of us.
PS. Jeff should expect crazy results with all that beta software. :)
I haven't had a chance to view your screencasts yet, but if you're learning how to do TDD better, I think it would be a tremendous benefit to the community to help explain it to the rest of us.
And I'm glad you've got an asbestos swimsuit.
no matter what you say or do there's always someone who will bitch and complain. As far as what you've demonstrated to me in terms of your contributions to the community as a whole, I don't think you need to be explaining yourself to anyone, and I consider the fact that you are a courtesy to the complainers. It's more than I would do...
Anyhow, keep up the good word.
Gee, when I heard you say "My name is Rob Conery and I work for Microsoft" I thought you were declaring that your name is Rob Conery, you are an employee of Microsoft, and that you like to strangle kittens. But that's just me.
I think people forget that nobody was born a TDD expert. Like any new skill or discipline, it takes trial by fire. It takes trying to use it in a real world project, and making a few mistakes, but also seeing progress. It doesn't have to be perfect the first time to reap huge benefits.
And the learning process itself is often good to see and helpful for others. I appreciate the humility you've brought to the table in exploring the topic. If only others would follow in your example.
Even though you're not a "TDD expert" I'm still excited about your initiative to make a webcast about MVC and TDD! I can't wait untill you publish the next part. Personally I love to see/hear why/how people develop software. I will follow your webcasts as you publish them.
Even the experts can learn something once in a while ;-) Keep up the good work!
Please keep up the god work. I cant wait for the next episode and some code.
Please put a lot of focus on the repository pattern. A question, if everything is returned as IQueryable what about databinding interfaces and all the nice stuff databinding can provide for you?.
Maybe you can look at SyncLINQ
I think whether you believe it or not, within certain circles Microsoft employees are viewed as better than everyone else. There is a perception that if you work for Microsoft, you must know what you're talking about.
This may or may not marry up to the truth, and it probably isn't the way you expect to be perceived; it does happen though, I have to deal with it every day.
Hi Rob,
As Phil states TDD is a learning process and your doing the right thing in engaging Scott and others in helping you fine tune your process. In developing your series you should share out those experiences as well. I am very interesting in learning about your development of the Repository pattern, I had a look in the PoEAA book at the pattern and look forward to looking at your implementation.
Andy
So you aren't the world's foremost expert on TDD ... well the bad news to those critisising is ... nor are they. Some people shout louder than their abilities and skills dictate they should.
A very valuable set of MVC resources - keep up the good work.
Please keep making mistakes, there is no better way to learn than to watch a guy with a record such as yours going through the learning curve himself.
Looking forward to you stumbling even more ;)
I think it should be very obvious to anyone taking the time to really listen to the webcasts that you're not pretending to be an expert, so I wouldn't worry about. I think it's a very interesting process documenting learning something. The world is full enough of so called experts and short on people willing to learn new stuff!
Will you be including SubSonic in MVC Storefront?
Rob,
It is great to see someone with a number of years of experience such as yourself take the time to learn TDD and a number of patterns along with the MVC project.
It helps put aside some of the concerns, fears, etc. that I have as I start to learn these things as well.
You are a brave man for sharing your experience in such a public forum. I urge you to keep at it because it will surely help a lot of people.
Because of your blog posts and posts on codebetter and elsewhere, I am going to DevTeach and signed up for a TDD post conference session.
It takes time and comittment to learn and grow as a developer, and sometimes you have to let it all hang out.
You just need a new introduction; rip off Manuel from Fawlty Towers and say "I am Rob Conery and I know nooooothing".
Pah, sod 'em. If they can't stand to see someone learn they should be holding themselves up as guiding lights (and in one case it's only his ego propping himself up)
Well, the good part about you being you, and part of microsoft, is that when you do something wrong, Belware sees it, tells you that you are wrong, and takes time to talk to you over the phone to explain it.
If I do something wrong it sits in obscurity until I figure out it is wrong. No Belware to smack me up side the head.
Keep up the good work. The journey is just as important as the destination.
So why are we so sure that the critics know what they are talking about?
""My name is Rob Conery and I work for Microsoft", you are declaring yourself to be an expert at whatever you are talking about."
Isn't that basically what the critics, both on Twitter and in the comments of the Storefront post, did. They implied that they were experts and corrected Rob. Some did it nicely, some took a more rectal path. I know that some of the critics have TDD experience, but how do I know they are experts and they know the exact and perfect path for TDD?
I agree with Chris: the journey is as important as the destination. There's plenty of us learning TDD and appreciate the oportunity to have webcasts about it.
I liked the videos and look forward for more
Sorry, but why is there just *one* way to use the MVC pattern (and that is apparently through TDD)? Frameworks are frameworks, as open as they possibly can be.
The number 1 aspect of a framework is: it is never 100% of what you want it to be. So you ALWAYS have to adapt to the framework.
The number 2 aspect of a framework is: it is never for 100% written just for your project: it's a framework for many projects. So you always will have to do things even though it would have been 'nicer' if the framework would have done it for you.
Especially number 2 is something not a lot of people understand. It's ironic actually: if the framework could do what they are payed to do every damn day, they would be out of a job.
This is a formative path to learning and collaboration.Whatever the feedback and in spite of your less-than-incidental association with MS it is about the process seeking guidance through trial and error, the obstacles will be daunting but good faith effort and a touch of well considered humility are sustaining.
On a philosophical level we can always learn something by considering an idea like Senge's Learning Organization over breakfast or any other idle thoughtful moment:
"Leaders and members in a Learning Organization, see primacy of the whole (understand complexities), the generative power of language (generative conversations by recognizing one's frames that get in the way of seeing another's frames) and the community nature of self (seeing oneself and the connectedness to the whole and the world). The true learning organization is redesigning itself constantly or not merely led by the leader (and his frame). A leader in the organization instead supports this redesigning by acting as a steward (stewarding persons' visions), teacher and designer (bringing different views together for all of us to see the extent of the system (or ship)as compared to the merely being the captain of the ship)."
This project shouldn't be about any Business Organization but about the organization of willing participants. From what I know of you, you are a good personality to steward the effort and your volunteer compatriots will undoubtedly add to the richness of the experience... Thanks.
What license will the source code be released under? Do you know yet?
@Frans: Good point that you raise - I'll address it in Part 3, which is on the cutting room floor right now and hopefully due out today.
To answer you here, however, TDD isn't necessarily my pitch in terms of the only way to use it. I haven't done it before and I really like the principles (as do others) so I thought I'd try it.
Sort of like saying "Africa is beautiful so I thought I'd walk through it". Ahem.
Anyway - TDD isn't required and I'll make sure to point that out.
@Marcus: MSLP - wide open for reuse.
@Chris: I don't know what data access tool I'll be using just yet - most likely LinqToSql. I want to see what plays out with testing in a really basic way.
@everyone else - appreciate the good thoughts!
I knew there was a reason I stayed out of the Alt.Net discussion groups. Does Scott not realize that this is yet another example of an ALT.Net'r simply not having a clue about manners and constructive criticism, and being to self-centered to know it.
Keep up the good work, and don't worry, those of us who have met you in person already realize that you are not perfect ;). See you at the summit.
These TDD extremists need to chill and get a girlfriend and read the post !
PLEASE keep them coming. I'm pretty steeped in TDD and I was already getting a ton out of it.
As somebody that develops using .NET, teaches people .NET, and sells .NET to my clients, I am so happy with the way the whole developer group at Microsoft has been shifting to a more open, human face. I think those of us that are the recipients of this openness have some retraining to do. We can't, for example, shut down on them when in a discussion they start to do something we don't exactly like or understand... we need to keep the discussion going. Be adults. All that.
Thanks, Rob, for all you've done and all you are doing.
This MVC thing is huge - and with the introduction of this podcast I have to say I am WAY more comfortable with the though of putting this in my toolbelt.
I never miss a chance to point out that Bellware is a complete jackass - so much so that even if he were right, I'd rather be wrong than learn it from him.
Kudos for putting up with his ego.
I knew there were reasons I've avoided Twitter.. Yet another chance for people to be uncivilized.
(I work for Microsoft -- I do not speak for Microsoft)
This is obviously just about philosophy. Unfortunately, philosophy has a tendency to turn into religion, and religion has a tendency to beget self-righteousness among adherents of any number of one-true-dogmas.
Thank you, Ron, for posting about the storefront. I've actually got need for that right now.
I don't care if you tested first, second, or even third. To be honest, all I care about is that tests exist, and that they're good tests. It's easy to produce a test that passes for the wrong reasons, using the one-true-methodology or no. :)
Rob,
Don't listen to pompus MS elitists - *they* are the exact reason why the .NET community is soo fragmented and aliented from the rest of the web world.
Keep up to good work. It *really* is enlightening to see someone with your record and skillset go through the TDD learning process - I'm going through it everyday at work and can empathize with you.
Frameworks, TDD, agile blah blah ... they are not the law, they are guidance principals and anyone who works in the 'real world' knows the development process is less than ideal and perfect.
I find those that try to achieve absolute code perfection and 100% test coverage end up obsoleting their shit half the time anyways, most of them live in la-la land.
Isn't learning what being a good developer is all about? No one knows it all; so kudos to you for being down to Earth, recognizing your weaknesses, and learning with the rest of us "unenlightened" souls.
Hi Rob,
You just cant make the whole world happy so forget about them. Anyways, im looking forward to a downloadable link for this (another great) video. Also since im an absolute beginner with MVC and TDD, could you tell me what software(s) are you using to work with MVC. I think MVC does not come built in with VS2008? Please correct me if im wrong...
Absolutely love the screencasts. I like how you are dealing with the negative feedback. I've met Scott Bellware and he's actually quite a nice guy. It's shame he comes off quite harsh when on-line.
Rob, I thought the screencasts were great. The TDD comments are just way too harsh...I too work for Microsoft (I share an office with Haacked) and I freely admit I don't entirely grok TDD...I get the theory but I also worked as a dev for ten years without it. I too am learning the whole TDD world and to be honest this has kind of put me off blogging about the experience. Anyway, thanks for the great screencasts!