I keep talking about my client and people keep asking me "dude who's your client - you're just making this up!" - and that's not true. I do indeed have a client - in fact I have 3 of them. You, me, and my masters back at The Ranch.
Progress Checkin
I've had more than a few comments on my blog about my "fictional client". Dietrich let me have it with this:
...But so far you seem to be making the classic developer’s mistake: you’re writing code without figuring out what the client wants. Or if we’re to assume you do know what the client wants I’m hearing this:
“You never know what I might do, so create a lot of data abstraction with cutting edge technology that’s unproven and really slick.” Unless your client is MS I guarantee they didn’t say that.
I took exception to the "classic" element of my mistakes, but his point was nonetheless made - I'm not saying enough about what's driving this whole thing, nor who.
It All Started At MIX 08
I had the extremely good fortune to hang out with Shawn Burke (my boss), Brad Abrams, and Shanku Niyogi (the big guys on the ASP.NET team) while at MIX, and we talked about creating a nice demo app that was not only a great sample, but also extremely usable.
I told them of my experience with the Commerce Starter Kit and what I'd learned from the community RE eCommerce, and how I thought I could leverage that into something really groovy for MVC. We talked about that, and also about some of the technologies we needed to use - including having a nice dose of TDD to go along with MVC's testability.
It was a great conversation, and with each idea the enthusiasm for the project grew. At one point I remember saying "we should document each step of the process with a webcast" and all eyes slowly turned towards me...
That was in March, it's now May and it's time for another checkin. We've had several internally so far, but I haven't pulled all the clients into one "room" to go over just where we're at here.
Who This Is For
There are three parties involved in this... party. They are:
- Them What's Know As The ASP.NET Team. I need to make sure that what I do is reasonable, and what I talk about isn't pure fiction. In addition my responsibility is to make sure I demonstrate the things that ASP.NET MVC is doing currently as we drive it to release.
- You, the community. Hopefully you've seen this already as I shift and tweak according to emails and comments. This can be very difficult as I get a lot of quotes thrown at me:
"You're doing it all wrong. Pattern X clearly states that you must do thing 1 in this way, and thing 2 in that way. See AuthorY for more information"
These pointers are great, but usually textbook quotes don't go too far in addressing an actual concern with a proposed solution. I don't necessarily see lack of compliance with a given theory as a bug or flaw - but I do appreciate that these theories are borne from others facing the same problems I'm facing.
All of this is to say that you, the community, are my client as well. But you're my client in a United Nations sort of way :). - Me. I've mentioned this before as well - I built the CSK and have more than 2 years of solid experience in the basics of online stores. It doesn't mean I know everything... just close to everything :p.
You might be wondering which one is the most important, and that's a difficult one to answer. I'll say this much - no one is the most important, but there are days where I must make sure that each client is taken care of. The way to think of it is:
- Client 1 holds the purse strings. Some might say the discussion stops here - but that's not totally true :).
- Client 2 holds the final approval. Nothing matters if you guys think this thing is garbage :).
- Client 3 is the daily driver - the one who is constantly looking over the shoulder to make sure things keep moving.
Meeting With Client 1
I had a checkin today RE scheduling, and I have another on Friday with respect to architecture and approach. Most of the team know what I'm up to since I bug them a lot, but there's no replacing a stakeholder checkin.
One of the things we discussed today was timing. I'm supposed to be at a certain point in a few days and ... well... I found myself a little bit behind. I've spent a little too long on some aspects here - including the last week of architectural weirdness of late. So if you think I'm being casual about my schedule - think again :).
Doubling Of Efforts
The meeting was pretty smooth and Shawn and I had a great conversation. It was a lot better than the one I had rolling in my head:
Me: Shawn! This is an unexpected pleasure. I am honored by your presence...
Shawn: You may dispense with the pleasantries, Rob. I'm here to put you back on schedule.
Me: I assure you, Shawn... I'm working as fast as I can.
Shawn: Perhaps I can find new ways to motivate you... this application needs to be ready for ScottGu's review
Me: ScottGu's coming here?
Shawn: That is correct, Rob. And, he is most displeased with your apparent lack of progress.
Me: I shall double my efforts!
Shawn: I hope so, Rob, for your sake. ScottGu is not as forgiving as I am....
Darth Vader jokes aside - it was a great meeting and while you might think Shawn sharpened his claws and made nice red stripes down my back - nothing could be farther from the truth. We talked about the schedule we laid out in the beginning, and brainstormed on ways we could get back on track.
I have lots of ideas, but I want to assure you that I won't compromise the quality of the webcasts - but one of the ideas I had was to make them less detailed, and perhaps skip over some of the more-involved TDD aspects. I have lots of ideas on how to do this - but for now know that I'm picking up the pace :).
And no, I won't make a Gantt Chart :). I refuse! I need to stop writing and get back to work - and no that doesn't mean go surfing!
