SlideShare a Scribd company logo
1 of 27
Det STORA
missförståndet
    Joakim Holm
   Adaptiv STHLM
?
© 2001-2003, New Line Cinema
Det STORA missförståndet:
Programmering = Tillverkning
Inom tillverkning...

talar kunderna med arkitekterna, mest i designfasen

är målet att få designen rätt från början

konverteras ritningar till material som fogas samman till hus

arbetar manuell arbetskraft (lägre utbildad, prispressad,
utbytbar, opålitlig)

utförs ett smutsigt detaljarbete som kunderna bör slippa
Inom systemutveckling...

 talar kunderna med arkitekterna, mest i designfasen

 är målet att få designen rätt från början

 konverteras ritningar till text som körs av en dator

 arbetar manuell arbetskraft (lägre utbildad, prispressad,
 utbytbar, opålitlig)

 utförs ett smutsigt detaljarbete som kunderna bör slippa
Mitt Budskap

För att förändra synen på systemutvecklare
   från att vara orcher till något bättre
  måste vi själva förstå mjukvarans natur
   och i alla sammanhang utstråla detta.
Ritningar?
Ritningar?
"Det är svinkallt och
 allt vi ser är snö"
"Det är svinkallt och   "Ooh, vi har ett varmt
 allt vi ser är snö"     hu... ehh... ett hus!"
Design


"Det är svinkallt och            "Ooh, vi har ett varmt
 allt vi ser är snö"              hu... ehh... ett hus!"
Recept för tillverkning
tid


Den här delen   Den här delen
  är design     är tillverkning
recept för att tillverka program
Slutsatser
Slutsatser

Systemutveckling är främst att designa program.
Slutsatser

Systemutveckling är främst att designa program.



     Slutresultatet av designen är källkod.
Slutsatser

Systemutveckling är främst att designa program.



     Slutresultatet av designen är källkod.



   En programmerare är främst en designer.
"... a source code listing (in any programming
language) is really a software design."


"... everything is part of the design process.
Coding is design, testing and debugging are part
of design, and what we typically call software
design is still part of design. Software may be
cheap to build, but it is incredibly expensive to
design."

                        (Jack Reeves, C++ Journal, 1992)
Om alla förstod detta...
  Kontinuerlig dialog med kunder och användare.

  Design hela vägen. Skisser är ett verktyg.

  Trial-and-error är en del av processen.

  Utbildning främst genom att gå bredvid.

  Proffs med yrkesstolthet och ansvarskänsla.
Språk är makt




  Spansk skogssnigel?
Ta makten över språket

 Säg aldrig...         Säg i stället...

   "bygga [system]"      "utveckla", "designa"
   "producera [kod]"     "skriva", "författa"
   "design"              "modellering"
   "arkitektur"          "högnivådesign"
   "kodfabrik"           "teamrum"
Hur länge ska vi tolerera
 att nyttan med våra liv
       reduceras?
joakim holm
   AGILE SOFTWARE DEVELOPER & COACH


              +46 70 773 76 29
        joakim.holm@adaptiv.se
blog: jockeholm.wordpress.com
              twitter: jockeholm

More Related Content

Viewers also liked

Viewers also liked (9)

"Din historia, framtidens content." Om history marketing
"Din historia, framtidens content." Om history marketing"Din historia, framtidens content." Om history marketing
"Din historia, framtidens content." Om history marketing
 
den-smarta-industrin
den-smarta-industrinden-smarta-industrin
den-smarta-industrin
 
Resurser och näringar år 8
Resurser och näringar år 8Resurser och näringar år 8
Resurser och näringar år 8
 
Kunskap, skolwebb och plattform för nyanlända
Kunskap, skolwebb och plattform för nyanländaKunskap, skolwebb och plattform för nyanlända
Kunskap, skolwebb och plattform för nyanlända
 
Dag Johansson
Dag JohanssonDag Johansson
Dag Johansson
 
Städer
StäderStäder
Städer
 
Facits uppgång och fall
Facits uppgång och fallFacits uppgång och fall
Facits uppgång och fall
 
Ekonomirep
Ekonomirep Ekonomirep
Ekonomirep
 
SH1b - Samhällsekonomi
SH1b - SamhällsekonomiSH1b - Samhällsekonomi
SH1b - Samhällsekonomi
 

Similar to Det STORA missförståndet

Queens Lab Företagspresentation 2019-03-20
Queens Lab Företagspresentation 2019-03-20Queens Lab Företagspresentation 2019-03-20
Queens Lab Företagspresentation 2019-03-20Jens östgaard
 
Cad bim anywhere_arbeta_där_du_befinner_dig
Cad bim anywhere_arbeta_där_du_befinner_digCad bim anywhere_arbeta_där_du_befinner_dig
Cad bim anywhere_arbeta_där_du_befinner_digVianova Systems Sweden AB
 
HT22 - DA354A - Introduktion till Programmering
HT22 - DA354A - Introduktion till ProgrammeringHT22 - DA354A - Introduktion till Programmering
HT22 - DA354A - Introduktion till ProgrammeringAnton Tibblin
 
HT19 - DA354A - Introduktion till Python
HT19 - DA354A - Introduktion till PythonHT19 - DA354A - Introduktion till Python
HT19 - DA354A - Introduktion till PythonAnton Tibblin
 
HT18 - DA354A - Introduction to programming
HT18 - DA354A - Introduction to programmingHT18 - DA354A - Introduction to programming
HT18 - DA354A - Introduction to programmingAnton Tibblin
 
UX i agila projekt
UX i agila projektUX i agila projekt
UX i agila projektPer Axbom
 
HT16 - DA354A - Introduktion till programmering (Python)
HT16 - DA354A - Introduktion till programmering (Python)HT16 - DA354A - Introduktion till programmering (Python)
HT16 - DA354A - Introduktion till programmering (Python)Anton Tibblin
 
HT15, DA354A - Introduktion till Python
HT15, DA354A - Introduktion till PythonHT15, DA354A - Introduktion till Python
HT15, DA354A - Introduktion till PythonAnton Tibblin
 
Adobe MAX Creative Keynote Presentation
Adobe MAX Creative Keynote PresentationAdobe MAX Creative Keynote Presentation
Adobe MAX Creative Keynote PresentationPatric Lanhed
 
The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28
The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28
The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28Daniel Norée
 
Projektstyrning på DICE - Battlefield Bad Company som exempel
Projektstyrning på DICE - Battlefield Bad Company som exempel Projektstyrning på DICE - Battlefield Bad Company som exempel
Projektstyrning på DICE - Battlefield Bad Company som exempel Electronic Arts / DICE
 
Programmering en fråga om demokrati
Programmering en fråga om demokratiProgrammering en fråga om demokrati
Programmering en fråga om demokratimittlarande
 
Nu är det hög tid att införa en systemavvecklingsavdelning
Nu är det hög tid att införa en systemavvecklingsavdelningNu är det hög tid att införa en systemavvecklingsavdelning
Nu är det hög tid att införa en systemavvecklingsavdelningJoakim Lindbom
 
Curriculum vitae sv
Curriculum vitae svCurriculum vitae sv
Curriculum vitae svBo Ericsson
 
Continuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och DockerContinuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och DockerKristoffer Vidmo
 
Hybrid it apple
Hybrid it appleHybrid it apple
Hybrid it appleExcantoAB
 
Grundläggande programmering och datorkunskap 2022
Grundläggande programmering och datorkunskap 2022Grundläggande programmering och datorkunskap 2022
Grundläggande programmering och datorkunskap 2022MagnusLindh6
 

Similar to Det STORA missförståndet (20)

Queens Lab Företagspresentation 2019-03-20
Queens Lab Företagspresentation 2019-03-20Queens Lab Företagspresentation 2019-03-20
Queens Lab Företagspresentation 2019-03-20
 
Cad bim anywhere_arbeta_där_du_befinner_dig
Cad bim anywhere_arbeta_där_du_befinner_digCad bim anywhere_arbeta_där_du_befinner_dig
Cad bim anywhere_arbeta_där_du_befinner_dig
 
Kreativa processer dag 2 2013
Kreativa processer dag 2 2013Kreativa processer dag 2 2013
Kreativa processer dag 2 2013
 
HT22 - DA354A - Introduktion till Programmering
HT22 - DA354A - Introduktion till ProgrammeringHT22 - DA354A - Introduktion till Programmering
HT22 - DA354A - Introduktion till Programmering
 
HT19 - DA354A - Introduktion till Python
HT19 - DA354A - Introduktion till PythonHT19 - DA354A - Introduktion till Python
HT19 - DA354A - Introduktion till Python
 
HT18 - DA354A - Introduction to programming
HT18 - DA354A - Introduction to programmingHT18 - DA354A - Introduction to programming
HT18 - DA354A - Introduction to programming
 
UX i agila projekt
UX i agila projektUX i agila projekt
UX i agila projekt
 
HT16 - DA354A - Introduktion till programmering (Python)
HT16 - DA354A - Introduktion till programmering (Python)HT16 - DA354A - Introduktion till programmering (Python)
HT16 - DA354A - Introduktion till programmering (Python)
 
HT15, DA354A - Introduktion till Python
HT15, DA354A - Introduktion till PythonHT15, DA354A - Introduktion till Python
HT15, DA354A - Introduktion till Python
 
Adobe MAX Creative Keynote Presentation
Adobe MAX Creative Keynote PresentationAdobe MAX Creative Keynote Presentation
Adobe MAX Creative Keynote Presentation
 
The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28
The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28
The OpenRC Project - Stockholm 3D Printing Meetup 2017-02-28
 
Kreativa processer dag 2 2012
Kreativa processer dag 2 2012Kreativa processer dag 2 2012
Kreativa processer dag 2 2012
 
Datorer och programmering
Datorer och programmeringDatorer och programmering
Datorer och programmering
 
Projektstyrning på DICE - Battlefield Bad Company som exempel
Projektstyrning på DICE - Battlefield Bad Company som exempel Projektstyrning på DICE - Battlefield Bad Company som exempel
Projektstyrning på DICE - Battlefield Bad Company som exempel
 
Programmering en fråga om demokrati
Programmering en fråga om demokratiProgrammering en fråga om demokrati
Programmering en fråga om demokrati
 
Nu är det hög tid att införa en systemavvecklingsavdelning
Nu är det hög tid att införa en systemavvecklingsavdelningNu är det hög tid att införa en systemavvecklingsavdelning
Nu är det hög tid att införa en systemavvecklingsavdelning
 
Curriculum vitae sv
Curriculum vitae svCurriculum vitae sv
Curriculum vitae sv
 
Continuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och DockerContinuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och Docker
 
Hybrid it apple
Hybrid it appleHybrid it apple
Hybrid it apple
 
Grundläggande programmering och datorkunskap 2022
Grundläggande programmering och datorkunskap 2022Grundläggande programmering och datorkunskap 2022
Grundläggande programmering och datorkunskap 2022
 

More from Agila Sverige

Kasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helhetenKasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helhetenAgila Sverige
 
Vart tog tekniken vägen?
Vart tog tekniken vägen?Vart tog tekniken vägen?
Vart tog tekniken vägen?Agila Sverige
 
Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.Agila Sverige
 
Hantera felhantering
Hantera felhanteringHantera felhantering
Hantera felhanteringAgila Sverige
 
Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?Agila Sverige
 
Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?Agila Sverige
 
When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?Agila Sverige
 
Empiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodellEmpiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodellAgila Sverige
 
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementerasOlika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementerasAgila Sverige
 
Praktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötetPraktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötetAgila Sverige
 
Konsten att skriva dåliga lappar
Konsten att skriva dåliga lapparKonsten att skriva dåliga lappar
Konsten att skriva dåliga lapparAgila Sverige
 
En agilare Säljgrupp
En agilare SäljgruppEn agilare Säljgrupp
En agilare SäljgruppAgila Sverige
 
Agil utan förändringar
Agil utan förändringarAgil utan förändringar
Agil utan förändringarAgila Sverige
 
Testdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheterTestdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheterAgila Sverige
 

More from Agila Sverige (20)

Kasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helhetenKasta ut experterna och fokusera på helheten
Kasta ut experterna och fokusera på helheten
 
Vart tog tekniken vägen?
Vart tog tekniken vägen?Vart tog tekniken vägen?
Vart tog tekniken vägen?
 
Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.Visst kan vi självorganisera... vi ska bara fråga chefen först.
Visst kan vi självorganisera... vi ska bara fråga chefen först.
 
Hantera felhantering
Hantera felhanteringHantera felhantering
Hantera felhantering
 
Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?Är det Agilt som gäller, eller?
Är det Agilt som gäller, eller?
 
Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?Vad kan vi arkitekter lära oss av Agile?
Vad kan vi arkitekter lära oss av Agile?
 
When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?When Worlds Collide II – Den kubistiska organisationens intåg?
When Worlds Collide II – Den kubistiska organisationens intåg?
 
Empiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodellEmpiri på riktigt - en tilluxad agil utvecklingsmodell
Empiri på riktigt - en tilluxad agil utvecklingsmodell
 
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementerasOlika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras
 
Praktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötetPraktiskt ledarskap i tavelmötet
Praktiskt ledarskap i tavelmötet
 
Konsten att skriva dåliga lappar
Konsten att skriva dåliga lapparKonsten att skriva dåliga lappar
Konsten att skriva dåliga lappar
 
Code Reviews
Code ReviewsCode Reviews
Code Reviews
 
Tajmboxat tänkande
Tajmboxat tänkandeTajmboxat tänkande
Tajmboxat tänkande
 
Agile Manager
Agile ManagerAgile Manager
Agile Manager
 
En agilare Säljgrupp
En agilare SäljgruppEn agilare Säljgrupp
En agilare Säljgrupp
 
Budgeten är död
Budgeten är dödBudgeten är död
Budgeten är död
 
Agil utan förändringar
Agil utan förändringarAgil utan förändringar
Agil utan förändringar
 
Älska det du gör
Älska det du görÄlska det du gör
Älska det du gör
 
Testdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheterTestdrivning med automatiska acceptanstester – praktiska erfarenheter
Testdrivning med automatiska acceptanstester – praktiska erfarenheter
 
Management by Scrum
Management by ScrumManagement by Scrum
Management by Scrum
 

Det STORA missförståndet

  • 1. Det STORA missförståndet Joakim Holm Adaptiv STHLM
  • 2. ?
  • 3. © 2001-2003, New Line Cinema
  • 5. Inom tillverkning... talar kunderna med arkitekterna, mest i designfasen är målet att få designen rätt från början konverteras ritningar till material som fogas samman till hus arbetar manuell arbetskraft (lägre utbildad, prispressad, utbytbar, opålitlig) utförs ett smutsigt detaljarbete som kunderna bör slippa
  • 6. Inom systemutveckling... talar kunderna med arkitekterna, mest i designfasen är målet att få designen rätt från början konverteras ritningar till text som körs av en dator arbetar manuell arbetskraft (lägre utbildad, prispressad, utbytbar, opålitlig) utförs ett smutsigt detaljarbete som kunderna bör slippa
  • 7. Mitt Budskap För att förändra synen på systemutvecklare från att vara orcher till något bättre måste vi själva förstå mjukvarans natur och i alla sammanhang utstråla detta.
  • 10.
  • 11. "Det är svinkallt och allt vi ser är snö"
  • 12. "Det är svinkallt och "Ooh, vi har ett varmt allt vi ser är snö" hu... ehh... ett hus!"
  • 13. Design "Det är svinkallt och "Ooh, vi har ett varmt allt vi ser är snö" hu... ehh... ett hus!"
  • 15. tid Den här delen Den här delen är design är tillverkning
  • 16. recept för att tillverka program
  • 19. Slutsatser Systemutveckling är främst att designa program. Slutresultatet av designen är källkod.
  • 20. Slutsatser Systemutveckling är främst att designa program. Slutresultatet av designen är källkod. En programmerare är främst en designer.
  • 21. "... a source code listing (in any programming language) is really a software design." "... everything is part of the design process. Coding is design, testing and debugging are part of design, and what we typically call software design is still part of design. Software may be cheap to build, but it is incredibly expensive to design." (Jack Reeves, C++ Journal, 1992)
  • 22. Om alla förstod detta... Kontinuerlig dialog med kunder och användare. Design hela vägen. Skisser är ett verktyg. Trial-and-error är en del av processen. Utbildning främst genom att gå bredvid. Proffs med yrkesstolthet och ansvarskänsla.
  • 23. Språk är makt Spansk skogssnigel?
  • 24. Ta makten över språket Säg aldrig... Säg i stället... "bygga [system]" "utveckla", "designa" "producera [kod]" "skriva", "författa" "design" "modellering" "arkitektur" "högnivådesign" "kodfabrik" "teamrum"
  • 25.
  • 26. Hur länge ska vi tolerera att nyttan med våra liv reduceras?
  • 27. joakim holm AGILE SOFTWARE DEVELOPER & COACH +46 70 773 76 29 joakim.holm@adaptiv.se blog: jockeholm.wordpress.com twitter: jockeholm

Editor's Notes

  1. God morgon! För att få höra det här blixttalet måste ni lösa en gåta.
  2. "Jag utför ett manuellt arbete. Jag är inte betrodd med att förstå helheten. Jag anses nödvändig idag men bör på sikt ersättas av maskiner. Jag är helt utbytbar. Jag anses oansvarig och måste kontrolleras. Jag har en kund som inte gärna smutsar ner händerna. - Vem är jag?" Hörde jag någon som sa "en utvecklare"? Helt rätt, det är alltså... [växla]
  3. ..."en orch"! Det kanske känns lite skruvat att jämföra programmerare med orcher, men samtidigt är likheterna i hur vi behandlas rätt slående. Och jag vill mena att det knappast är en slump. Faktum är att det är fullt logiskt... förutsatt att du skriver under på följande enkla och på ytan oskyldiga antagande...
  4. ...programmering innebär att bygga saker. Och det vill jag kalla för det STORA missförståndet. Här är varför...
  5. Om vi tänker på hur ett bygge fungerar känns säkert punkterna på bilden helt normala. [tala om bild] Så hur skulle det här tänkande fungera om vi trodde att systemutveckling var ungefär likadant?
  6. ... Märkte ni att jag faktiskt växlade faktiskt bild där. Låt mig göra det igen. [växla fram/tillbaka]. För att få det här att kännas som vår bransch behöver vi i stort sätt bara ändra mediet som vi arbetar med. Men är det verkligen så här illa? Tänk efter själv: - Ärligt talat, har vi inte chefer/kunder som egentligen tycker att de är lite bättre än vi? - Ogillar inte dina kunder att behöva involveras i tid och otid i projekten? - Har vi inte arkitekter och "kravare" som ska tänka åt programmerarna och testare för att kontrollera arbetet? - Utkontrakterar de inte jobbet till någon som tar mycket mindre betalt så fort de får chansen? Konsekvenserna av denna villfarelse är alltså fruktansvärda för oss, orcherna. Men även för kunderna, eftersom verkligheten slår undan benen för dem hela tiden. Men de ser inte att det ligger i systemet självt. De tror att det helt enkelt beror på att de jobbar med folk som inte är riktigt kompetenta - vilket bara stärker deras uppfattningar om manuell arbetskraft!
  7. Jag har tröttnat på detta. Jag vill inte ha det så här längre. Därför är budskapet med detta tal det här: För att förändra synen på systemutvecklare från orcher till något bättre måste vi börja med att själva förstå mjukvarans natur och i alla sammanhang utstråla och uttrycka detta. Om systemutveckling inte är tillverkning, vad är det då? Vad är dess "sanna natur"?
  8. Låt oss återgå till tillverkning för ett ögonblick. Resultatet av en byggnadsarkitekts design är inte huset utan ritningar. Dessa ritningar är relativt kompletta och entydiga. De kan ges till godtycklig byggfirma och de utför jobbet. Visst, det finns utrymme för diskussioner men i stort sätt är byggfirmans jobb att följa ritningarna så snabbt, billigt och korrekt som möjligt. Vad skulle vara motsvarigheten till ritningarna inom systemutveckling? Det intuitiva svaret är förstås våra UML-diagram. De känns ju lite ingenjörsmässiga sådär. Men ge samma diagram till tio programmerare och du får tio olika program. UML-diagram är alltså allt annat än kompletta och entydiga. Låt oss fundera lite mer... Vad är egentligen design?
  9. Det är en stor fråga. Men kortfattat kan man säga att det är en komplicerat process av att förstå problem och hitta lösningar till dem. För varje behov finns en oändlig mängd möjliga lösningar. Design är den mörka avgrunden mellan ett behov och en tillfredsställande lösning.
  10. Det är en stor fråga. Men kortfattat kan man säga att det är en komplicerat process av att förstå problem och hitta lösningar till dem. För varje behov finns en oändlig mängd möjliga lösningar. Design är den mörka avgrunden mellan ett behov och en tillfredsställande lösning.
  11. Det är en stor fråga. Men kortfattat kan man säga att det är en komplicerat process av att förstå problem och hitta lösningar till dem. För varje behov finns en oändlig mängd möjliga lösningar. Design är den mörka avgrunden mellan ett behov och en tillfredsställande lösning.
  12. En form av design handlar om att skapa enstaka, unika föremål, som igloon i förra bilden. Men de flesta designarbeten i modern tid syftar i stället till att skapa en entydig form lämplig för någon slags efterföljande produktionsprocess, som här, ett originalmanus och en litografi.
  13. Så... allt som vi gör från att vi tror att vi förstått behovet/problemet fram tills att vi har en entydig och komplett ritning av lösningen är design. Allt arbete efter den tidpunkten är tillverkning, att följa receptet för att producera något så korrekt, billigt och snabbt som möjligt. Men om nu UML-diagrammen inte är entydiga så betyder det.. att det finns en massa design kvar att göra när vi programmerar! Och det här stämmer med vår erfarenhet, eller hur? Programmering handlar inte om att textsätta diagram. Oavsett hur mycket vi tänker efter före, när vi kommer till koden blir det alltid ändringar, ofta stora förändringar. Diagrammen duger inte, men vi har dock en sak som faktiskt uppfyller kraven: Vi kallar det för...
  14. ...källkod. Faktum är att den är så superentydig att vi kan ge den till ett antal maskiner och de kommer alltid att producera samma resultat, givet samma recept. Det måste alltså vara det som är att bygga program. För tusan, det heter ju t o m "byggservrar". Vår entydiga förlaga, vårt recept, vår ritning är alltså... källkod.
  15. Det här resonemanget har lett oss till följande slutsatser: 1. Systemutveckling är främst att designa program. 2. Slutresultatet av designen, vårt recept, är källkod. 3. Följaktligen, vad en programmerare mest sysslar med är design. Men hur kan det vara design, kanske ni tänker? Det finns ju inget visuellt, det är ju bara text? - Självklart! Fråga vilken ung och arg poet som helst.
  16. Det här resonemanget har lett oss till följande slutsatser: 1. Systemutveckling är främst att designa program. 2. Slutresultatet av designen, vårt recept, är källkod. 3. Följaktligen, vad en programmerare mest sysslar med är design. Men hur kan det vara design, kanske ni tänker? Det finns ju inget visuellt, det är ju bara text? - Självklart! Fråga vilken ung och arg poet som helst.
  17. Det här resonemanget har lett oss till följande slutsatser: 1. Systemutveckling är främst att designa program. 2. Slutresultatet av designen, vårt recept, är källkod. 3. Följaktligen, vad en programmerare mest sysslar med är design. Men hur kan det vara design, kanske ni tänker? Det finns ju inget visuellt, det är ju bara text? - Självklart! Fråga vilken ung och arg poet som helst.
  18. Jag var absolut inte först om dessa tankar. Jack Reeves, som redan hösten 1992 i C++ Journal skrev att källkoden är det enda som uppfyller kraven på en ingenjörsmässig ritning. Han insåg att nästan allt vi gör är design: testning, debugging, kodning t o m det som vi brukar kalla för design är design. Enda skälet till att vi missar det är att själva tillverkningen går så fort och är i stort sett gratis. Hur skulle världen se ut om människor visste att programmering var design?
  19. Då skulle vi veta att... [tala om bild] Jag tror att de flesta av er här håller med om dessa saker. Det är här vi egentligen skulle vilja befinna oss, men det är så tragiskt sällan vår verklighet.
  20. Vad kan vi göra? Wittgenstein sa: "The limits of my language means the limits of my world." Han insåg att vi människor inte kan tänka något som vi inte har ett språk för. Språk är alltså essentiellt. Vill vi förändra något är språk ett utmärkt redskap. Exempel: Låt oss kalla den helt oskyldiga spanska skogssnigeln för "mördarsnigel". Det blir liksom lite lättare att utrota den då...
  21. Alltså: Språk är makt... men vi behöver ta makten över språket. Nästan varje dag hör jag utvecklare säga att de ska "bygga en funktion" eller "producera kod". Ni märker att tillverkningsmetaforen mår finfint även hos oss. Om inte ens vi sjäva kan säga rätt, hur kan vi då förvänta oss att någon annan göra det? Här är några exempel: - Säg aldrig att du ska bygga en funktion/program/system - säg att du ska utveckla/designa den. - Uttryck aldrig att du ska "producera kod" - säg "skriva" eller "författa" - Prata inte som skisser på tavlan som "design", säg i stället att du "modellerar problemet" osv
  22. Jag har pratat mycket om synen på programmerare, men egentligen är det mycket viktigare än så. Det handlar ju om att så länge det här STORA missförståndet regerar så kommer vi att vara fast i en tillverkningsliknande utvecklingsprocess som är allt annat än optimal - för någon. Det betyder tyvärr i förlängningen att vår egen förmåga att skapa nytta och mening med våra liv kraftigt har reducerats. Vill vi ha det så? Vill ni inte i stället känna att ni skapar nytta med era liv? Hur länge kan vi då tolerera detta tillstånd? Låt oss förändra det här. Men vi måste börja med att förändra oss själva, hur vi tänker på det här och hur vi pratar om det. Låt oss!