Pragmatikere, purister og cowboys

I softwarebranchens konstruktionslag (det er der, hvor jeg sidder til daglig) har der altid været en spænding mellem positionerne i dette spektrum:

  • Puristen: lad os lave software af allerhøjeste kvalitet
  • Pragmatikeren: lad os levere software af tilpas kvalitet
  • Cowboy’en: lad os bare få noget ud af døren i en helvedes fart. Kvaliteten har de ikke betalt for.

Puristens udfordring er at han har en tendens til at være lidt for forelsket i processen, konstruktionen som kunstform. Elsker abstraktioner. Tid er af ringe betydning.

Pragmatikerens tilgang er naturligvis at man her har fokus på både leverance OG kvaliteten inden for den kontekst man leverer i. Han stræber efter en perfekt afbalanceret tilstand mellem kvalitet og leverance. Har fjender i begge omkringliggende lejre.

Cowboy’en udfordring er at for ham er tiden så knap at den ikke skal sløses væk på at læse bøger, men på at levere noget til kunden. Elsker konkret problemløsning. Tiden er knap.

I øjeblikket kører der en ret ophedet diskussion i .Net softwaredesignkredse, startet af Joel Spolsky da han i Stack Overflow podcasten sagde:

Last week I was listening to a podcast on Hanselminutes, with Robert Martin talking about the SOLID principles. (That’s a real easy-to-Google term!) It’s object-oriented design, and they’re calling it agile design, which it really, really isn’t. It’s principles for how to design your classes, and how they should work. And, when I was listening to them, they all sounded to me like extremely bureaucratic programming that came from the mind of somebody that has not written a lot of code, frankly.

Det har naturligvis affødt en del debat på blogs og twitter, som handler om de indbyggede spændinger der er indenfor softwarekonstruktion og -leverance.

Bob Martin: ‘”Quality Doesn’t Matter That Much” — Jeff and Joel’

Jeff Atwood : The Ferengi Programmer (Spolskys side kick på StackOverflow)

Rob Conery : Patterns, Purists, and Sinkholes

Justin Etherridge: Today I’ve Realized How Far We Have To Go

Hør først podcasten, læs så bloglindlæggene og deres kommentarer.

15 kommentarer til “Pragmatikere, purister og cowboys”

  1. Rasmus Kromann-Larsen siger:

    Puristens synspunkt er vel normalt ikke at lave den højeste kvalitet – hans interesse er ofte mere at det bliver lavet på en bestemt måde – fx TDD – fordi han anser denne metode for at producere den højeste kvalitet.

    Nu findes der ikke så mange “silver bullets” dog, så i praksis vil jeg sige at pragmatikkeren ofte benytter sine alsidige værktøjer bedre til at levere en bedre kvalitet.

    PS. Har lige måtte skrive hele min comment igen fordi jeg failede dit sikkerhedsspørgsmål – skrev ‘2+2′ – så ryger hele ens comment – er vist ikke helt vågen endnu – tjener, kaffe!

  2. dalager siger:

    Jep, du kan have ret med din purist, din purist ;)

    Det skal dog ikke ses så meget som konkrete personmanifestationer, men som et flydende spektrum af forskellige vinkler. Jeg tror f.eks. selv jeg ligger i midten med en en tilbøjelighed til at lave lousy hacks fra tid til anden og andre gange fortabe mig i uproduktiv søgen efter perfektion.

    Og mht dit tabte blogindlæg, så beklager jeg. det er ikke ok :( Og der skal også noget mere bredde på layoutet, når jeg tager fat næste gang. hm.

  3. emme siger:

    Måske skal der også lidt design til generelt, på din blog? Bare lidt?

  4. dalager siger:

    Emme, du er ganske enkelt en overfladisk puristisk æstet.

    Designwise har WP 2.7.1 desuden lige givet mig ydereligere et los i røven. Så overhalingen nærmer sig.

  5. Christian siger:

    En detalje i diskussionen jeg synes er lidt sjov er at en del af de folk jeg har stødt på der kalder sig selv pragmatikere IMO bare er cowboys i forklædning. Jeg har ihvertfald til tider korset mig over det slam der sælges med ordene “pragmatisk tilgang”.

    Min pointe er nok dybest set bare at kvalitet ikke skal være udtryk for hvordan man med mindst muligt arbejde kan liste noget forbi kunden – det skal også være rart for den næste udvikler at arbejde med.

    Men hvis vi er enige om fortolkningen af begreberne er jeg helt enig i det du skriver :-)

  6. dalager siger:

    ah, misbruget af “Pragmatisk” er klassisk. Hvilket er et misbrug der tit går hånd i hånd med Agile som undskyldning for kaos. Og Extreme Programming som undskyldning for “ingen dokumentation”.

    Enig i begreberne er vi vist. Op er op og ned er ned!

  7. Troels Arvin siger:

    Jeg tror på, at man på et hold skal sætte pris på, at der både findes folk som tænker langt, og er folk som er gode til at få leveret varen her og nu. For her-og-nu løsningerne kan give nogle gode fingerpeg om, hvilke rammer man skal placere sin langsigtede tænkning i.

    Anyways: Hvad er en purist? Jeg går ud fra, at vi skal opfatte det som et plus-ord.

    Jeg har med varierende grad af foragt fulgt de skiftende moder i OO-verdenen; særligt Java-kredse synes at have været hjemsøgt af purister(?), som i mine øjne prædiker overdesign og “månedens rene paradigme”. I starten var nedarvning fantastisk. Men så opdagedes det, at Java har nogle begrænsninger (bl.a. manglende mulighed for multipel nedarvning, hvilket altså nogen gange _er_ det mest naturlige, efter min mening), og lige pludselig var nedarvning yt, og komposition det hotte. Og beans var hotte, siden notte. Og myriader af interfaces og lag på lag. Abstraktioner som – med Spolskys udtryk – viste sig at være “leaky”. Paranoia mht. kobling mellem lag, som rent faktisk _er_ koblede.

    Kendetegnende for disse “purister” er, at de ofte fremfører paradigm of the month på en facon, der umiddelbart forekommer akademisk, og dermed velunderbygget. Men hvis man går dybere, vil man se, at de tunge drenge i computer science overhovedet ikke gider beskæftige sig med disse skiftende paradigme-moder.

    Et citat fra Costin Cozianu på http://c2.com/cgi/wiki?ObjectOrientationIsDead som jeg tit har tænkt på:
    ======================================================
    OO is definitely not dead; it rambles all over the place failing projects and intoxicating the hoards of developers with the naive approach “everything is an object, see how simple it is?”. And if anybody dares to create a function in C++, a bunch of static methods in Java, a damn stored procedure in PL/SQL, it is immediately labelled with the stupid remark “this is not OO”. Does anybody need examples of very bad OO designs? There are plenty lying around all over the place, ’cause we suddenly had lots of “object architects” who have no clue about ComputerScience, but they know UML. Their bookshelves are full of the ThreeAmigos, and the latest OO hype, but they can’t spell Cardelli if their life depended on it. Dijkstra, who cares, the recruiters never heard of such a strange keyword.
    ======================================================

    Med andre ord: “Purist” er ikke en beskyttet titel. Man skal passe på, hvem man udnævner til hhv. purist og cowboy. Og vær _meget_ skeptisk, hvis nogen tager ordene “best practice” i deres mund.

  8. dalager siger:

    Troels, jeg er enig med dig i at der er brug for at der er en spredning professionelle tilgangsmåder på et softwareprojekt, ligesom det er også er vigtigt at der er en spredning af personlige egenskaber (hvem sagde myers-briggs-baseret holdsammensætning).

    Alt for homogene miljøer bliver let echo chambers.

    Ang purist: så synes jeg ikke det er et plus-ord. Puristen er i denne sammenhæng en yderposition i et spektrum, og jeg foretrækker blandingsproduktet.

    Ked af hvis jeg har udtrykt mig lidt rodet.. :(

    - nice link btw!

  9. Daniel siger:

    I’m a practical gun slinger with a pure heart!

    Hvem bliver stemt hjem ?

  10. dalager siger:

    Åh vi bliver vel allesammen stemt hjem fra tid til anden.

    Men hvis du virkeligt har et rent hjerte, well, så kan man næsten ikke nænne at stemme dig hjem…

  11. Pål siger:

    Jeg synes kategorier er gode – men også åbner for at folk hurtigt bliver …kategoriske… – det lyder måske som en cirkelslutning, men mon ikke der er blandingsformer derude. Puristiske cowboys og pragmatiske purister?

  12. dalager siger:

    Pål: jeg har fejlet i at kommunikere. For jo, jeg mener det er et flydende spektrum. Men lige blandingen “puristisk cowboy” tror jeg nu ikke så meget på, det er på nippet til at være en oxymoron.

  13. Pål siger:

    jaja – det var nu også mest ‘for the sake of the argument’ og fordi det lødt lidt sjovt (nok en sideeffekt af oxymoriniseringen)

  14. Kristjan Wager siger:

    Jeg tror (håber?) jeg hører til katagorien pragmatiker med tendens i retning af purisme, men på den anden side er jeg opmærksom på at jeg nogle gange i mine tidlige programmeringsår kodede cowboy-kode i den tro jeg var pragmatisk.

    En ting som er værd at tænke på er folks indgang kombineret med deres roller. Jeg vil håbe at folk som bygger frameworks er purister, men en snært af pragmatisme. På den anden side, folk som overtager kode fra andre, som jeg ofte gør, er nok bedst tjent med ikke at være for puritisk anlagt. Det kan blodtrykket nemlig ikke tage.

  15. dalager siger:

    pål: det er jo det SOA står for! Sake Of the Argument! ;)

    kristjan: jep, med din tendens til at overtage mammutkodebaser så forstår jeg godt at du bliver nødt til at lægge lidt låg på purismen. Ellers risikerer man hurtigt at bruge hele budgettet på “vigtige refactoring tiltag”..;) Afvejning, altid.

Skriv en kommentar

Hvad er 2 plus 2? (antispam spørgsmål...)