Loading ...
Sorry, an error occurred while loading the content.

Re: [XP] Place for rarified skills?

Expand Messages
  • Ron Jeffries
    ... I don t think it is bias to call things the way they are. C++ has language features far more arcane than any other language I ve ever used and I ve used a
    Message 1 of 20 , Oct 1, 2001
    • 0 Attachment
      Around Monday, October 01, 2001, 7:22:35 AM, david.abrahams@... wrote:

      > Wow, I never expected to encounter such blatant language bias here.

      I don't think it is bias to call things the way they are. C++ has
      language features far more arcane than any other language I've ever
      used and I've used a lot. I think Cees called it accurately.

      > I
      > thought XP was largely about pragmatism. The problem is not specific
      > to C++ at all, though C++ admits a wider variety of techniques and
      > approaches than many languages.

      C++ prosecution rests. ;->

      > Part of what I'm referring to here has
      > nothing to do with languages: it's simply the application of good old
      > Computer Science. If I have to use the NFA-to-DFA construction, or
      > dijkstra's algorithm, I'm already speaking a language that the average
      > programmer doesn't seem to grasp.

      Well, it's good to be above average, like all the children in Lake
      Wobegon. But perhaps I digress. Further below, you ask:

      > Why do I get the sense that you don't think I value
      > simplicity and readability?

      I'm going to pretend that's actually a question, hoping that it is,
      and I'm going to answer it.

      You started the conversation by remarking that

      > I've been thinking about where I'd fit into an XP environment, or how agile
      > processes could fit into the kind of work I do. The quote above really
      > struck me personally, since
      > a. It rings true
      > b. Any job which really exploits my abilities is likely to result in at
      > least some rarified code.
      >
      > As much as I wish it were otherwise, generic programming and template
      > metaprogramming are hardly "lingua franca" among C++ programmers. Those
      > skills are best applied in environments where flexibility and maximum
      > performance are both required. Also, I enjoy solving difficult problems --
      > often arriving at a solution requires exploiting concepts and techniques
      > outside the knowledge of mainstream programmers.

      In subsequent replies, you've said

      > If I have to use the NFA-to-DFA construction, or
      > dijkstra's algorithm, I'm already speaking a language that the average
      > programmer doesn't seem to grasp.

      and

      > I would never apply a
      > "rarified technique" where something simpler would do. When designing
      > reusable libraries, the rarified technique is often exactly what's needed to
      > make life simpler for the library's users.

      and

      > not just because finding an answer is made harder by having
      > to bring the less knowledgeable up to speed "all at once", but because they
      > become frustrated during these processes because they don't feel they're
      > contributing and they could be doing "real work" (meaning work within their
      > current grasp).

      So what I read here comes across as the words of someone who is highly
      skilled and enjoys exercising his skills to the utmost. I can dig
      that; certainly if I had any skills I imagine I'd enjoy exercising
      them.

      Yet your message comes across as "sometimes we must accept complexity
      so as to solve the problem".

      Certainly in some sense that's true: we've all had to solve a problem
      and had to use or create a complex solution. To me, the question is:

      Looking upon this hard problem solved with something from deep in
      our bag of tricks, is our feeling just one of satisfaction?

      On the one hand, the problem was hard, probably no one else around
      could have solved it at all.

      On the other hand, the solution isn't -- by your own statement --
      simple. When that happens to me, I always feel a little sadness
      in the satisfaction, because I've had to do something that the
      average Joe behind me (no offense, Joe) will have trouble with.

      It's that bit of sadness that I didn't hear in your presentation.
      That's why I kept pushing on the subject. But I think I'm through now,
      unless you want to go on. You can solve hard problems, you care about
      simplicity. One could want no more.

      "Thank you sir, may I have another?" ;->

      Ronald E Jeffries
      www.XProgramming.com
      Wisdom begins when we discover the difference between
      "That makes no sense" and "I don't understand". --Mary Doria Russell
    • Matthew Davis
      ... needed to ... Would you accept that a rarified technique may turn out to be a good way to remove duplication? Here s my example: In a legacy project we
      Message 2 of 20 , Oct 1, 2001
      • 0 Attachment
        --- In extremeprogramming@y..., Ron Jeffries <ronjeffries@a...> wrote:
        > Around Sunday, September 30, 2001, 9:03:10 PM, David Abrahams wrote:
        >
        > > When designing
        > > reusable libraries, the rarified technique is often exactly what's
        needed to
        > > make life simpler for the library's users.
        >
        > For example?

        Would you accept that a rarified technique may turn out to be a good
        way to remove duplication? Here's my example:

        In a legacy project we have (ugh) a struct.h/cpp set of files. The
        header defines a bunch of structures - purely data - and
        prototypes for InitializeXxx() functions for each of them. The .cpp
        has implementations for each of those structures, which used to each
        set all the struct members to zero, but had at some point been
        refactored to memset() the struct to all zeroes.

        Ignoring for a moment the other 8 gazillion things wrong with this
        code, I sought to eliminate the massive duplication of 40 functions
        that all simply call memset, using the parameter type as the size to
        set to 0's.

        The most obvious solution to me was a templatized function, which I
        implemented. It's really pretty simple - but since relatively few C++
        developers are intimate with writing templates (heck, even I had to
        look up the syntax to be able to write this function), it's possible
        that by doing this I've created a barrier to someone else
        understanding the code.

        I reconcile this with the thought that the best solution is the best
        solution, and knowing the language is the responsibility of any future
        developer working on the code. When I consider using a rarified
        technique, I think carefully about whether there is a better, less
        rarified technique. But if less rarified techniques are not as good,
        then the rarified technique has to win.

        Besides, this lets me show by example just what is a good use of a
        rarified technique. :-)

        (Now to do something about the fact that the InitializeXxx() functions
        took references rather than pointers, or that the only thing relating
        the structures to each other is that they are structures, or that the
        data they contain would probably be better maintained by actual
        objects...)

        -Matthew
      • Keith Nicholas
        ... I don t think this is the real issue....I think wrapping complexity up in a way that it can be used simply makes it way more useable for the average Joe.
        Message 3 of 20 , Oct 1, 2001
        • 0 Attachment
          > On the other hand, the solution isn't -- by your own statement --
          > simple. When that happens to me, I always feel a little sadness
          > in the satisfaction, because I've had to do something that the
          > average Joe behind me (no offense, Joe) will have trouble with.
          >
          > It's that bit of sadness that I didn't hear in your
          > presentation. That's why I kept pushing on the subject. But I
          > think I'm through now, unless you want to go on. You can
          > solve hard problems, you care about simplicity. One could
          > want no more.
          >

          I don't think this is the real issue....I think wrapping complexity up
          in a way that it can be used simply makes it way more useable for the
          average Joe.

          Java, smalltalk etc all do the same thing, they wrap complexity up into
          something more simple and accessible to the average Joe. Good example
          is garbage collection, as a developer, you don't even think about this
          too much, but it is a complex piece of software that someone had to
          write.

          This is what is being discussed in terms Davids discussion. The
          creation of elements of software which simplify development when you
          have those elements, but the cost of getting those elements in the first
          place might be quite high and involve quite a bit of complexity.

          Also maintaining those elements requires someone who can understand the
          complexity and advanced techniques that have been used.

          In terms of XP, the decision to make "library software elements" that
          simplify the overall development is a business decision if they are
          going to require a significant amount of effort. However, I think
          possibly that these kinds of things really do need to be open source
          like boost as it is very hard for one business to get the skills
          required to be able to maintain these more advanced software elements
          (hard enough to find people with good basic understanding of C++!).

          We had a little talk here at our company about Mr Alexandrescus
          techniques and decided it would be too hard to get developers who would
          be able to work with the code even though the techniques are very
          powerful and can be much quicker to write software with.

          Keith


          > "Thank you sir, may I have another?" ;->
          >
          > Ronald E Jeffries
          > www.XProgramming.com
          > Wisdom begins when we discover the difference between
          > "That makes no sense" and "I don't understand". --Mary Doria Russell
          >
          >
          > To Post a message, send it to: extremeprogramming@...
          >
          > To Unsubscribe, send a blank message to:
          > extremeprogramming-unsubscribe@...
          >
          > ad-free courtesy of objectmentor.com
          >
          > Your use of Yahoo! Groups is subject to
          > http://docs.yahoo.com/info/terms/
          >
          >
          >
        • David Abrahams
          ... From: Brian C. Robinson ... Even using STL is not neccessarily generic programming. STL is an example of generic programming,
          Message 4 of 20 , Oct 2, 2001
          • 0 Attachment
            ----- Original Message -----
            From: "Brian C. Robinson" <brian.c.robinson@...>

            > At 04:05 PM 9/30/01, you wrote:
            > >As much as I wish it were otherwise, generic programming and template
            > >metaprogramming are hardly "lingua franca" among C++ programmers.
            >
            > That's why you pair with them. And get them to read some books (Meyers'
            > Effective STL and Josuttis' The C++ Standard Library are my
            > favorites). Pretty soon everyone in your group will be at least competent
            > in the area of generic programming. This is exactly what I did.

            Even using STL is not neccessarily generic programming. STL is an example of
            generic programming, but most people are using it directly for concrete
            jobs, rather than writing new generic components. Not to devalue concrete
            jobs (ultimately, they're everything!), but I want to distinguish library
            component design/construction from library use.

            > >Also, I enjoy solving difficult problems --
            > >often arriving at a solution requires exploiting concepts and techniques
            > >outside the knowledge of mainstream programmers.
            >
            > Ah, so "clever" programming.

            Emphatically not! I always prefer the straightforward to the clever. I'm
            talking for example, about exploiting concepts from "the literature", like
            graph theory, parsing technology, linear algebra, pattern matching, etc.,
            etc. These concepts and theories are capable of wrapping up a whole lot of
            complex thought into simpler packages. Often, seeing a problem in these
            terms is what's required in order to make it simple enough to be manageable.

            > Are your solutions simple? If so, you should
            > easily be able to explain them to your pair.

            It depends whether the pair is willing to accept a quick-and-simplified
            explanation of the theory or not.

            -Dave
          • Ron Jeffries
            ... I think most people are willing to learn. Honestly, and with the deepest love and respect, it still sounds to me as if the problem is closer to you than it
            Message 5 of 20 , Oct 2, 2001
            • 0 Attachment
              Around Tuesday, October 02, 2001, 12:55:59 PM, David Abrahams wrote:

              >> Are your solutions simple? If so, you should
              >> easily be able to explain them to your pair.

              > It depends whether the pair is willing to accept a quick-and-simplified
              > explanation of the theory or not.

              I think most people are willing to learn. Honestly, and with the
              deepest love and respect, it still sounds to me as if the problem is
              closer to you than it is to these other guys.

              Ronald E Jeffries
              www.XProgramming.com
              Accroches-toi a ton reve. --ELO
            • David Abrahams
              ... From: Ron Jeffries ... That s my experience, too. They may not have the patience to go through the deep explanation, though.
              Message 6 of 20 , Oct 2, 2001
              • 0 Attachment
                ----- Original Message -----
                From: "Ron Jeffries" <ronjeffries@...>


                > Around Tuesday, October 02, 2001, 12:55:59 PM, David Abrahams wrote:
                >
                > >> Are your solutions simple? If so, you should
                > >> easily be able to explain them to your pair.
                >
                > > It depends whether the pair is willing to accept a quick-and-simplified
                > > explanation of the theory or not.
                >
                > I think most people are willing to learn.

                That's my experience, too. They may not have the patience to go through the
                deep explanation, though. Frankly, we may not have the time. Maybe I need to
                work on my explanation skills.

                > Honestly, and with the
                > deepest love and respect, it still sounds to me as if the problem is
                > closer to you than it is to these other guys.

                I'm not sure there is a problem at all. If there is one, I'd be willing to
                accept that it's me; I certainly never imagined that "these other guys" had
                a problem. What problem do you perceive?

                I'm just interested in finding a place in an XP environment where I can
                contribute, and feel like I'm fully used. Since it might be up to me to
                create that environment, I'm asking about the experiences of others.

                -Dave
              • Ron Jeffries
                ... Good approach. I think my answer is something like this: You re smart. You know a lot. Therefore you re called on to solve hard problems. Solve them in
                Message 7 of 20 , Oct 2, 2001
                • 0 Attachment
                  Around Tuesday, October 02, 2001, 2:09:00 PM, David Abrahams wrote:

                  > I'm not sure there is a problem at all. If there is one, I'd be willing to
                  > accept that it's me; I certainly never imagined that "these other guys" had
                  > a problem. What problem do you perceive?

                  > I'm just interested in finding a place in an XP environment where I can
                  > contribute, and feel like I'm fully used. Since it might be up to me to
                  > create that environment, I'm asking about the experiences of others.

                  Good approach. I think my answer is something like this:

                  You're smart. You know a lot. Therefore you're called on to solve
                  hard problems. Solve them in such a way that you never need to
                  work on that code again. That is, leave behind you not just
                  working code, but working, clear code, and at least one other
                  team member who can do any necessary maintenance.

                  Details, of course, are left to you. I'm sure you're up to it.

                  Is that helpful? Or harmful? ;->

                  Ronald E Jeffries
                  www.XProgramming.com
                  Discontinue reading if rash, irritation, redness, or swelling develops.
                  Especially irritation.
                • Keith Nicholas
                  I don t think this is so much a question about XP but more a more general question of any team based development. It s more a matter of finding a team of
                  Message 8 of 20 , Oct 2, 2001
                  • 0 Attachment
                    I don't think this is so much a question about XP but more a more
                    general question of any team based development. It's more a matter of
                    finding a team of developers who you can fit into. Of course one of
                    your best bets is to create your own XP environment with the types of
                    developers that you want to work with. The cool thing about an XP type
                    environment (though not unique to) is that it actively encourages
                    communication and cooperation with all the team which is a great
                    opportunity to share knowledge and skills.

                    The other thing that may be worth thinking about is a catalog of
                    refactorings specific to generic/template C++ programming. Perhaps
                    things such as "Replace class with template", "Replace Memory Management
                    with smart pointer" etc...but perhaps that's better discussed on the
                    refactoring email list :)

                    Keith

                    > -----Original Message-----
                    > From: David Abrahams [mailto:david.abrahams@...]
                    > Sent: Wednesday, October 03, 2001 6:09 AM
                    > To: extremeprogramming@yahoogroups.com
                    > Subject: Re: [XP] Place for rarified skills?
                    >
                    >
                    >
                    > ----- Original Message -----
                    > From: "Ron Jeffries" <ronjeffries@...>
                    >
                    >
                    > > Around Tuesday, October 02, 2001, 12:55:59 PM, David Abrahams wrote:
                    > >
                    > > >> Are your solutions simple? If so, you should
                    > > >> easily be able to explain them to your pair.
                    > >
                    > > > It depends whether the pair is willing to accept a
                    > > > quick-and-simplified explanation of the theory or not.
                    > >
                    > > I think most people are willing to learn.
                    >
                    > That's my experience, too. They may not have the patience to
                    > go through the deep explanation, though. Frankly, we may not
                    > have the time. Maybe I need to work on my explanation skills.
                    >
                    > > Honestly, and with the
                    > > deepest love and respect, it still sounds to me as if the
                    > problem is
                    > > closer to you than it is to these other guys.
                    >
                    > I'm not sure there is a problem at all. If there is one, I'd
                    > be willing to accept that it's me; I certainly never imagined
                    > that "these other guys" had a problem. What problem do you perceive?
                    >
                    > I'm just interested in finding a place in an XP environment
                    > where I can contribute, and feel like I'm fully used. Since
                    > it might be up to me to create that environment, I'm asking
                    > about the experiences of others.
                    >
                    > -Dave
                    >
                    >
                    >
                    >
                    > To Post a message, send it to: extremeprogramming@...
                    >
                    > To Unsubscribe, send a blank message to:
                    > extremeprogramming-unsubscribe@...
                    >
                    > ad-free courtesy of objectmentor.com
                    >
                    > Your use of Yahoo! Groups is subject to
                    > http://docs.yahoo.com/info/terms/
                    >
                    >
                    >
                  Your message has been successfully submitted and would be delivered to recipients shortly.