• « Let It Snow, Let It Snow, Let It Snow...
    • |
    • Main
    • |
    • OPML, Let Me Count The Ways I Love Thee... »
            • November 28, 2005

              Follow-up to 'OOP Ain't Agile' Post : OK, So Maybe I Stretched Things Just A Tad

            • As I made apparent in my follow-up comments to this post, I kinda, sorta pushed the "OOP isn't agile" a bit further than is actually the case. I did this for two reasons.

              1 - To drive home the point that functional and dynamic languages are by their very nature agile and test driven.
              2 - To try and fish for comments from folks who normally wouldn't comment except to contend against something that was blatantly absurd.

              Sorry. Won't EVER happen again ;-) [fingers we're most definitely crossed when I typed this... made for some interesting typing I should add :D]

              I have copied over comments from Jez, Scott Bellware, [insert: and Joe], both all of which added some fantastic insite and understanding to the conversation. Beyond thanking them both all for taking the time to comment I plan to leave things as is and let both all of their follow-ups speak for themselves.

              Comments below:

              Update: I forgot about Joe's comments(sorry Joe!). I have added them below as well.

              Scott Bellware:

              I think you’ll find that more advanced TDD practice achieves the atomic values that you expressed an appreciation for. To wit, TDD in an OO language is all about using OO in a more atomic fashion and driving more atomic and recomposable designs.

              Most of TDD design work drives at the heart of the reduction of cyclomatic complexity and the reduction of execution path depth as well as the introduction of a greater degree of loose coupling as supported by interaction testing through mocks and dependency injection.

              To refute Agile’s importance to OO, you’d have to refute TDD’s place in Agile, and quite possibly Martin Fowler’s book on refactoring as well as Joshua Kerievsky’s Refactoring to Patterns book as key Agile texts.

              I would personally agree with you that Agile isn’t only applicable to OO, but because OO is prevalent right now in the Agile community, much of the tactical Agile implementation practices have been built to support OO.

              It will be interesting to see what comes of the forays into functional programming at Microsoft. And yes, LINQ and C# 3.0 subsumes C-Omega.

              Jez:

              OK, I was trying to needle you a bit. I was also about to go to bed.

              In your follow up, you’ve largely made my point for me.

              Your opening statement was that agility and OOP were polar opposites - north and south, up and down, hot and cold.

              You’ve moderated not to OOP can be agile, which is fine with me. I take your point that some languages are more friendly, can I put it like that, to agile development. However, programming in Scheme, say, doesn’t automatically mean that someone is “doing” agile development. Do I because agile when I put down my C++ compiler and pick up Saxon8? When you move from XQuery to Java does the way you work suddenly change?

              Agile development is about process, in the widest sense. It’s about your mindset. As a programmer, every decision you take is a design decision and affects, in some way, the finished piece of work. You’re an agile programmer, not a programmer who uses an agile language. Tools and languages can help you, but they can’t make you.

              If the trend you detect toward functional languages in C# plays out as you suspect, then perhaps we will have a big pile of better tools. And that’ll be great, and hopefully we’ll be able to more, more quickly. It won’t automatically makes every programmer an agile programmer, though.

              As an aside, I’m not really qualified to comment on traditional OOP languages are not dynamic languages, but I suspect there’s an army of Smalltalkers who’d disagree :)


              Joe:

              If OOP isn’t agile, what is — procedural programming? Seat-of-the-pants hacking? Punch cards? Don’t mix speed with agility. Building up something fast and changing it fast doesn’t necessarily mean it’s agile.
              Heck, just about any codebase is agile at first based solely on it’s size. But as the codebase grows, OOP and a good IDE will help keep you agile. Have you ever used a good OOP IDE with refactoring tools?

            • Posted by m.david : November 28, 2005 08:50 AM GMT

            Trackback Pings

            TrackBack URL for this entry:
            http://www.xsltblog.com/xslt-blog-mt/mt-tb.cgi/1156

            Comments

              • I made a couple of typos, grrr -

                You’ve moderated now to OOP can be agile

                and

                Do I become agile

              • Posted by: Jez at November 28, 2005 01:20 PM
              • It’s a bit naughty to post this but

                http://thedailywtf.com/forums/51935/ShowPost.aspx

                Functional languages don’t naturally lead to agility :)

              • Posted by: Jez at November 28, 2005 10:35 PM
              • Hey there,

                The problem I see with agile development is that people (and I am ne of them wit no doubts) define it as so many different things that it’s hard to have an objective POV on the matter.

                As I see it, agile is more about the people rather than the language or the design you can use. Although both are also very important to the direction you will take, the bottom line is the people in place.

                I remember during one interview a few years back, the interviewer was interested in my knowledge and skills but at one point he asked me whether or not I had experiences in eXtreme Programming by asking the following questions:

                • are you an active members of mailing-lists
                • have you ever worked within a small team and having to discuss permanently avout your code and choices

                Since I was just getting out of Uni, I didn’t have so much of those experiences.

                But see, his point was not only my technical skills per se, but the way I was dealing with human interaction.

                Of course there is no doubt, some paradigms and languages are better suited for agile development but it will only work if you also have the right people.

                Now, OOP can totally be used in agile development, but what I think can be a limitation is then the framework you are based on because frameworks are not flexible enough to allow agile development IMO.

                Anyway you’ll never pleased everyone in that field.

                • Sylvain
              • Posted by: Sylvain Hellegouarch at November 30, 2005 09:56 AM
              • Anyway you’ll never pleased everyone in that field.

                Oh so true. Actually, this is true about every development platform, paradigm, language, etc…

                Theres usually good reasons for all areas of software discipline so it seems that once people have found their niche’ the most important thing they can possibly to is to utilize strong language specific practices that encourage flexibility, extensibility, and testibility. If these agile bases are covered then who gives a damn what language, paradigm, platform, or foobarhwhatever they work in… if the above goals are met and the developer is happy, content, and generally productive then how can one possibly find fault in that.

                Well, if there code ends up looking like the XSLT from HELL post from yesterday, fault can definitely be found. Fortunately, while I have run across some AWFUL XSLT in my day, that one pretty much nailed it and as such the apex has now been defined…

                It’s all downhill from here (is that a good thing or a bad thing, I wonder ;)

              • Posted by: M. David Peterson at November 30, 2005 10:06 AM

            Post a comment




            Remember Me?

            (you may use HTML tags for style)

          • © 2005 :: <XSLT:Blog/> (xsltblog.com) is a product of M. David Peterson and FunctionalX Consulting. See Licensing Info Below.
          • Except where otherwise noted, this sites content and source code is licensed under the Attribution License from Creative Commons.