Partager via


SDR Time

Development has currently come to a complete halt for me.  This is partly due to the fact that i'm a lazy bum, and i'd rather loaf around than earn my keep.  However, beyond that we're currently meeting with our C# Customer Council conducting an Strategic Design Review (SDR) and it's pretty much infinitely more useful for me to be partaking in this process rather than just coding.  Why?  Well it would help to start out by talking about what an SDR is really about?  As you've seen from many posts of mine the C# team is desperate for feedback of all sorts from our users.  The SDR process is about the most intimate way we go about getting that feedback.  Rather than using things like blogs which use electronic communication to target tons of users, we spend several days with a small number of developers in very cozy rooms where everything is done face to face.  For me, this time is completely about shutting up and just listening.  We meet with this group periodically and we feel that they’re a good representation of our users.  i will rarely talk during the SDR (unless there is something brought up that i am absolutely the best person to take care of it), and instead i want to get maximum value by getting a chance to learn about what these developers are looking for and what they are finding unsatisfactory about our current tools and language.  Any and all feedback is welcome (and encouraged), and provides a level of closeness that we’ve found tough to replicate through any other forum.

We’re always rolling around many different ideas and trying to determine what we think is the most important stuff to work on, and with the aid of these people we can reevaluate our positions. This is a time for us to hear: “omg!!  Why on earth are you working on that?  That is the most useless thing i’ve ever seen.  Why aren’t you working on this other thing instead since this is causing pain for tons of businesses and developers and any help here would be far more beneficial than anything else you could do!”.  Or they might say: “yes!  That’s a great start!  But in my business it would be useless in its current form.  However, if you just tweaked this slightly then it would fit the bill”.

And, as one member even commented, (paraphrased) “dogfooding only gets you so far.  It lets you build software that works for companies exactly like MS.  But we’re not like MS and you need to understand how our needs differ”

One of the big eye openers is how little these people care about the things that i am passionate about.  Instead they are passionate about areas that i am either unexcited about or, worse yet, areas that i know almost nothing about.  This is a necessary thing for me to be reminded of and it tells me that i need to do a whole lot of learning about an enormous amount of technologies in order to really be able to produce software that these people find useful.  i’m a language guy who loves building tools to help out developers.  i like working mainly on what we describe as “code-focused” tools.  i.e. the features that interact with the user as they’re editing and are really about allowing you to create great, maintainable code.  However, for many of the participants here, it’s the domain specific business logic that they’re always thinking about and working with the code is just a means to and end.  Instead, they get the most benefit from the high level APIs that that implementing that domain specific logic far easier.  It’s also about easing the pain of connecting the different domains that they’re going to run into when creating the software their client needs.  For example, easing the pain of connecting databases to web front ends, to installing rich apps, to providing thin clients for support teams to use, etc. etc. etc.

So the interesting question we ask ourselves is: “Is it possible to further the language in ways that ends up making that job much easier?”   “What about the tools?”  “What about the APIs?”

This SDR then gives a good gut feeling about what we should be working on and it gives us focus for further designs in the coming future.  Then, as time passes we will gradually expand out this information to larger and large circles, eventually leading up to our first public disclosure.  At that point we’ll have done a fair bit of working with all sorts of customers to see the different needs that people have and we’ll have prioritized in a way that we feel provides the maximum benefit to the most consumers.  Then we get let the full community weigh in and let us know how they feel this.  Usually, things seem to be pretty much in agreement.  The choices we’ve made are generally in sync with most users.  There are usually slight differences into how important people think things are, but in general it’s a good match and is pretty easy to fix up.   Now, one of the times that where the community definitely felt that our decision was incorrect was in our decision to not do Edit-&-Continue.  But once we expanded out to the community we realized our error in not supplying this tool.  With the enormous feedback we received we realized that our st of priorities was decidedly un-optimal and needed to be drastically corrected if we really wanted to provide tool our customers would find useful.

i’m still completely committed to making VS2005 great and getting it out of our hands and into yours in a timely fashion.  i think you’re going to love Beta2, and the final release will be even better.  But once it’s in your hands, then i can’t wait to start working on all the stuff that’s going to come next.  i think you’re going to be blown away and are going to find the future of C# to be a very bright and promising one.

---

Oh, and just so you know, i love all forms of communication and i’m going to using as many as i can handle to get to know what the community wants.  So please continue to send me the feedback that you’ve been so generously providing up to now.  Trust me when i say that *every* single messages is listened to, and we will consider all of them when making our future plans.  If you have ways that you think the platform should develop, or if you’re unhappy about the choices we’ve made so far, please continue to let us know.  Together we can end up making the best C# possible! :)

---

Edit: I was wrong to imply that the customer council told us to not do E&C. Rather, when we asked for prioritization they wanted Refactorings over E&C, and *we* felt that we couldn't pull off both in one product cycle.  However, given the huge response from the community (as well as the customer council telling us it was important), we reprioritzed our feature set later on in the game so we could do both of them.

Comments

  • Anonymous
    April 19, 2005
    Come say hi when you have a chance...

  • Anonymous
    April 19, 2005
    We didn't say, 'Don't do edit-&-continue.' We said, 'Don't prioritize it above refactoring support like rename.' The team did them both.... Excellent! :)

  • Anonymous
    April 19, 2005
    Mark: You're absolutely correct, and i should have been more clear. i'll edit the above to state that.

  • Anonymous
    April 19, 2005
    The comment has been removed

  • Anonymous
    April 19, 2005
    Stuart: I absolutely understand where you are coming from, and i've forwarded your comments in full to the rest of the language design team.

    I really hope we can make things better here.

  • Anonymous
    April 19, 2005
    You are right , you should focus on developing tools that will make developer’s life easier. Directory services developers lack tools that deal with group policy objects of active directory. I I really appreciate it if you point to exiting tool that does that function.

    Adel

    email:adel.husain@aramco.com

    Saudi araibia.

  • Anonymous
    April 19, 2005
    The comment has been removed

  • Anonymous
    April 20, 2005
    DrPizza: "Using C# is immensely painful because the runtime doesn't have a decent set of container classes. "

    Well, you already know what my answer is going to be on this :)

    The fact that you mentioned the word "set" in your sentence is especially humorous to me.

  • Anonymous
    April 20, 2005
    FWIW, I blogged a longer writeup of my issues with nullable types here:

    http://sab39.dev.netreach.com/Blog/12?vobId=172&pm=18

  • Anonymous
    April 20, 2005
    Stuart: Thanks very much for that writeup. It has been forwarded as well, and will be discussed.

    I really appreciate you going through this time to express your frustration. It's far easier to make certain arguments when you can point to customers and clearly understand the problem they're having.

  • Anonymous
    April 20, 2005
    Cyrus, I can't thank you enough for taking the time to forward my concerns and taking them seriously enough to get them considered.

    I imagine that since it's so late in the game, the chances of getting any really big changes made are slim (I'd LOVE to be wrong of course!). With that in mind, at least one of the problems can be fixed with virtually no downside: "test() ? 1 : null" is currently illegal code so there's no chance of breaking working code by fixing it.

  • Anonymous
    April 20, 2005
    Stuart: I can't promise anything. However, i can tell you that this is beign taken very seriously.

  • Anonymous
    April 20, 2005
    "The fact that you mentioned the word "set" in your sentence is especially humorous to me. "
    :D

    But seriously, if that single attribute were changed to be made more general it would make my life SO much easier.

    I mean, it might actually make it practical to call many of the more interesting Win32 APIs from C#!

  • Anonymous
    April 20, 2005
    The comment has been removed

  • Anonymous
    April 21, 2005
    DrPizza: I agree with you that it would be really cool to have a construct for NON-nullable values of reference types as well as for nullable values of value types. I feel that that's much less urgent at this point because there's no construct being introduced in 2.0 that would prevent adding that behavior in the future.

    On the other hand, if the current design of C# 2.0 stands, there's no way to get sane nullable value types at any point in the future ever.

    (Just because, here's a suggested syntax for non-nullable reference types:

    string s1 = null;
    string! s2 = "hello";
    string! s3 = null; // compiler error

    I like the idea of the parallel between "int?" as a nullable integer and "string!" as a non-nullable string. However, I'm not 100% sure that this wouldn't result in any syntax ambiguities...)

  • Anonymous
    April 21, 2005
    The comment has been removed

  • Anonymous
    April 21, 2005
    The comment has been removed

  • Anonymous
    April 21, 2005
    The comment has been removed

  • Anonymous
    April 21, 2005
    The comment has been removed

  • Anonymous
    April 23, 2005
    The comment has been removed

  • Anonymous
    April 23, 2005
    The comment has been removed

  • Anonymous
    April 23, 2005
    The comment has been removed

  • Anonymous
    April 24, 2005
    For those of you who don't read the comments made on other posts of
    mine, you might be unaware about...

  • Anonymous
    May 29, 2009
    PingBack from http://paidsurveyshub.info/story.php?title=cyrus-blather-sdr-time

  • Anonymous
    May 31, 2009
    PingBack from http://woodtvstand.info/story.php?id=11536