Pragmatisk programmering. Cyberrymden 2001-10-03. Marcus Rejås <marcus@rejas.se> Pragmatisk programmering,19 september 2002 1(26)



Relevanta dokument
Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,16 december (29)

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 18

Öppen/Fri programvara

12 principer of agile practice (rörlig)

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Bedömningmatris Moderna språk år 7-9 Grundskola 7 9 LGR11 Mspr2

Manual Jourläkarschema Närhälsan V7 - Version 1.0

Personlig assistans som den ska vara

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

INDIVIDUELLT VAL - Lokalt val VID RUDBECKSSKOLAN

Stödet kan vara både praktiskt och socialt och utgår från ditt hem, men kan också omfatta situationer utanför hemmet.

Skapa din E-post lista med. Lotta Carlberg. Lotta Carlberg

Slutrapport för Pacman

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Pedagogisk planering Åk 2 Skriva brev

ÖKA ENTUSIASMEN. Copyright 2013 Dale Carnagie & Associates, Inc. All rights reserved. be_enthusiastic_060214_gb

ISP-verktyget i WebOodi

Business Model You Din personliga affärsplan framtagen på åtta timmar.

MOBBNINGSENKÄT. XXX-skolan

Quick Guide till Mahara och din Portfolio

Att överbrygga den digitala klyftan

Inspektion Användarmanuel

Om include-filer i PHP

Användarmanual för ledare - ERC 2.0

Kundportal. Kundportal - Användarhandledning

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Startsida. Högskolan Dalarna

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Om du vill hitta tillbaka till din sektion klicka på fliken i huvudmenyn som heter organisation.

Handledning för uppsatsadministratörer

Avser Utgåva: Datum Sida: Primula Extern del PA (17) Dokumentbeskrivning : HANDBOK. Handbok PRIMULA. Primula Handbok för Vårdgivare

UTBILDNING. hösten 2016

Redovisa i e-möten via Adobe Connect

Välkommen till kommunens Lärportal. - Användarhanledning till dig som vårdnadshavare

LäsFlyt Metodhandledning

Matriks Automate 1.4 E-postmallar. Navision / Microsoft Dynamics NAV. Hur du gör e-postmallar för Matriks Automate. Joakim Hansson

ACT / Att hantera stress och främja hälsa Stöd till digital Livskompass

Predator Digital 3D. Predator Digital 3D. Bruksanvisning. Version 1.0

Frågebanker, frågeuppsättningar och slumpvisa block

Hogia Kvalitetssäkrad Redovisning HUR?

Sök-Utskottspub Sök till:

Användningsområde för digitalt verktyg

HANDLEDNING. Rekryteringsapp

UTBILDNINGSGUIDE FÖR FRAMGÅNGSRIK INLÄRNING

MsProject - grund. Dokumentversion Studieguide Förändring Kursstart förhandsutgåva

Mobilapplikation htp:/aktjon.argentum.se/activitymobile

Webbregistrering pa kurs och termin

Ett Barnhem Selfhelp- fund Stipendieverksamhet En gåvoverksamhet för fattiga En IT- skola

Manual för motionscykel Extreme XT 3,3

GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

Bb October 2014 Studentmanual

Svenska 8B v Syfte:

Editering, Kompilering och Exekvering av Javaprogram

Lathund, till Photo Story, för skräckslagna lärare

Sammanställning kursutvärdering

Guide till RefWorks Skapa ett RefWorks-konto Under Citera och referera > RefWorks Hjälp funktioner i RefWorks Help Tutorial Help

handboll VÄRDE! Drygt 60 teknikmoment och övningar! målvaktsträning Innehåller din egen kod för registrering på webben

Hogia Redovisning & Revision AB. Anståndshantering Hogia Kund- och Uppdragshanterare

Storlek och typsnitt: Titel

Västerås Idrottsgymnasium

Etikpolicy för Svenska Vårds medlemmar

HANDBOK. för dig som medverkar i Ifous FoU-program

HANDLEDNING ZENIT BILBOKNING

Bengts seminariemeny 2016

Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare

Guide för pdf-formulär

VIMENTIS VIP. FÖR STARTUPS & SMÅFÖRETAGARE Med hjälp utav Vimentis VIP kommer en helt ny värld att öppnas upp för dig som företagare.

Svensk version. Inledning. Installation av maskinvara. Installation av Windows XP. LW057V2 Sweex trådlösa LAN PCI-kort 54 Mbps

FÖRETAGSAMHET LÖNAR SIG ALLTID

Elektronisk publicering. Registrering och inskickande av pdf-filer på Luleå tekniska universitets webbsida.

Gymnasial vuxenutbildning

Pharmaxim. Till berörd personal. Inledning

Individuellt val. Läsår 2016/2017. Information inför ditt individuella val

EndNote online. T5 ht 2015 Therese Nilsson/Camilla Persson

Kursen syftar till att sprida kunskap och fördjupad förståelse om förskoleklassens, fritidshemmets och skolans uppdrag gällande stödinsatser.

Plan mot kränkande behandling likabehandlingsplan LÄSÅRET Skolenhet 1 VÅRD- OCH OMSORGSPROGRAMMET

ÄR DET ERT INITATIV VI SÖKER?

Företagande mot sporten

Introduktion. Vinnande medarbetarskap

Google Apps For Education

NATURVETENSKAP FÖR LIVET?

Lathund Webbanmälan. till vidareutbildningar

LÄRVUX. VARFÖR? Du vill lära dig nya saker som du har nytta av på ditt jobb på din fritid

HJÄLPFIL: LÄRARAPPLIKATIONEN

DRAFT Mottagningswebben Kravspecifikation

Alla får ligga. strategier i förförelsekonst för den moderna gentlemannen och kvinnan

Forskarstuderande. 1. Inloggning

Kurser på GrundVuxNivå

NATURVETENSKAP FÖR LIVET?

Logga in. Elevöversikt. Kolumner. Godkänna. Urval. Hantera inflytt och byte. Sök. Familjebild. Utskriftsrutin Om pengen

Kursutvärdering Ämne: SO Lärare: Esa Seppälä/Cecilia Enoksson Läsåret Klass: SPR2

Trampolinen Steg för steg En guide för dig som ska handleda morgondagens arbetskraft in i din yrkesroll, ditt företag eller din bransch.

CSN-rapportering, gymnasiet

Hämta hem 2005 års installationspaket från Skatteverkets hemsida:

Regeringens skrivelse 2005/06:120

SAFE WORK. Instruktioner till personal - för dig som arbetar på ett entreprenadföretag

Chapter 3: Using Classes and Objects

Handicom. Symbol for Windows. Blisseditor. Version 3.4

Steg 1: Logga in. Klicka på Logga in-knappen

Transkript:

Pragmatisk programmering,19 september 2002 1(26) Pragmatisk programmering Cyberrymden 2001-10-03 Marcus Rejås <marcus@rejas.se> $Id: slides.tex,v 1.8 2002/09/16 19:43:40 rejas Exp $

Metainformation Denna introduktion består av två delar. Del 1: Pragmatisk programmering Del 2: Pragmatiska verktyg Del 3: Mer pragmatisk programmering och pragmatisk programmering i projekt. Det mesta i denna kurs behandlas i boken The Pragmatic Programmer av Andrew Hunt och David Thomas Verkar detta intressant så rekommenderas denna bok varmt. Det som inte står i boken är egna värderingar. Se även http://www.pragmaticprogrammer.com Pragmatisk programmering,19 september 2002 2(26)

Del 1: Pragmatisk programmering Pragmatisk kommer från Latinets Pragmaticus som betyder ungefär professionell. Det ordet i sin tur kommer från grekiskans πραττɛιν som betyder att göra. En pragmatisk programmerare får saker och ting gjorda på ett professionellt sätt. En pragmatisk programmerare angriper ofta programmeringsproblem med entusiasm. Detta behöver men inte lära dem. Däremot behöver många lära sig att nyttja denna entusiasm till att verkligen uträtta något och även att applicera det på andra saker. Pragmatisk programmering,19 september 2002 3(26)

Pragmatisk programmering,19 september 2002 4(26) Programmeringsprocesser Det finns flera olika processer kring vilka man kan arbeta med mjuvaruutveckling. Denna presentation handlar inte om dessa utan mer om hur man jobbar. Man kan jobba som de beskrivs här inom till exempel ett XP a -team. a extreme Programming

Pragmatisk programmering,19 september 2002 5(26) Vi skall tala om Den pragmatiska filosofin Hur en pragmatisk programmerare är Ett pragmatisk arbetssätt Den pragmatiska programmerarens verktyg Pragmatisk paranoia Pragmatiskt arbetsliv Exempel ur vardagen

Pragmatisk programmering,19 september 2002 6(26) En pragmatisk filosofi Alternativ, inte ursäkter! Laga, lappa inte (och gör det nu) Motverka entropin i mjukvaran Select isn t broken!

Pragmatisk programmering,19 september 2002 7(26) En pragmatisk programmerare är: En early adopter Söker ny kunskap aktivt Tänker kritiskt Är realistisk Sköter om sin kunskapsportfölj Kommunicerar

Pragmatisk programmering,19 september 2002 8(26) Kunskapsportföljen Se den som ett projekt eller program Investera i den regelbundet Ett nytt språk varje år Lär dig helt andra saker Sprid risker Läs en teknisk bok varje kvartal Analysera allt du hör och ser mycket kritiskt Analysera allt du hör och ser mycket kritiskt

Kommunicera Om du inte gillar möten, lär dig utnyttja dem Om du är en bra programmerare kan du bli en bra mötesdeltagare. Bestäm dig för vad du vill ha ut av mötet Bestäm vad du vill ha sagt och få det sagt Säg rätt sak till rätt person i rätt tid och på rätt sätt Skall du leverera dokumentation gör det snyggt Lyssna Har du sagt att du hör av dig Gör det! Pragmatisk programmering,19 september 2002 9(26)

Pragmatisk programmering,19 september 2002 10(26) Pragmatisk programmering DRY (Don t Repear Yourself), ever! Koda ortogonalt (Inga beroenden, blyg kod) Det finns inga slutgiltiga beslut! Provskott (Tracer code) Se upp för slumpprogrammering Prototypa Tidsuppskatta (allt)

Pragmatisk programmering,19 september 2002 11(26) Del 2: Pragmatiska verktyg Allmänt om verktyg Ren text är kraftfull Välj en editor och lär dig den väl Ordbehandlingsprogram Använd ditt skal Versionshantera Lär dig ett texmanipuleringsspråk Automatisera!!! Lär dig en debugger Onda integrerade miljöer

Pragmatisk programmering,19 september 2002 12(26) Allmänt om verktyg En snickare har en väl vald hammare. Den använder han till allt han skall slå på. Oavsett vad han bygger. Editorn är din hammare. Alla verktyg skall göra sin sak och göra den bra Alla verktyg skall vara utbytbara (en pragmatisk programmerare är kritisk)

Pragmatisk programmering,19 september 2002 13(26) Kraftfull, ren text Betydelsefull för alla Även i fragment Lätt att versionshantera Lätt att bearbeta

Välj en editor och lär dig den väl First, open as root your favourite text editor. It is vim. Yes, it is. If it is not, it has to become. (From Network Boot and Exotic Root HOWTO) Välj en som passar dig. Den skall... vara anpassningsbar vara programmerbar vara bra för programmering Om din editor inte fyller ditt behov se det som en anledning att testa nya (din miljö kan väl byta editor??) Lätt att versionshantera Lätt att bearbeta Pragmatisk programmering,19 september 2002 14(26)

Ordbehandlingsprogram Ordbehandlingsprogram har många funktioner. Tyvärr inte många som passar en pragmatisk programmerare. Om du använder ett ordbehandlingsprogram kan följande hjälpa dig att inte bryta mot DRY Skriv macron. T.ex. för att exportera taggade sektioner till ren text (eller i värsta fall hela dokumentet). Generera hela dokumentet från kod och importera det i ditt ordbehandlingsprogram. Obs! Farligt nära DRY. Fundera varför du använder ditt ordbehandlingsprogram. Är det det bästa för ditt jobb? Pragmatisk programmering,19 september 2002 15(26)

Pragmatisk programmering,19 september 2002 16(26) Använd ditt skal Kraftfullare än klick-klick-klick $ for i in *.cpp; do mv $i ${i%.cpp}.cxx; done Lättare att dokumentera Lättare att skripta Lätt att bearbeta

Pragmatisk programmering,19 september 2002 17(26) Använd ett verisonshanteringssystem Välj ett och använd det till allt ditt jobb Vi ser allt som programmering, klart det skall versionshanteras

Pragmatisk programmering,19 september 2002 18(26) Textmanipuleringsspråk Till exempel perl, eller sed och awk Till exempel för att bryta ut dokumentationen ur koden Skriv program som genererar kod (DRY)

Pragmatisk programmering,19 september 2002 19(26) Del 3: Pragmatiska projekt och mer om Pragmatisk programmering Del 1 behandlade hur du som pragmatisk programmerare skall vara. Denna del behandlar hur du och dina arbetskamrater jobbar tillsammans i ett pragmatiskt projekt.

Pragmatisk programmering,19 september 2002 20(26) Pragmatiska medlemmar tänker på Skjut inga fel på framtiden DRY Inget handpillande, automatisera första gången. Använd unit-testing (jfr. extreme Programming) Hitta fel en gång, gör sedan ett test för det som körs automatiserat.

Dokumentera Svenska eller engelska är också språk Dokumentera i koden (Javadoc, Doc++ eller rena kommentarer) Inga papegoj-kommentarer (DRY) Exekverbara dokument, om ett dokument beskriver något kan det lika gärna göra det (DRY) Publicera elektroniskt, utskrifter blir gamla och felaktiga. Publicera automatiskt (DRY) Pragmatisk programmering,19 september 2002 21(26)

Pragmatisk programmering,19 september 2002 22(26) Testning Modultesta (Unit testing) Testa innan du skriver kod (se upp för slumpprogrammering) Automatisera (make test) Hitta ett fel bara en gång Visa liten demo här...

Pragmatisk programmering,19 september 2002 23(26) Exempel ur vardagen, Projekt x företag y Verktyg, C, Doc++, L A TEX, CVS, mm Allt lagras i CVS Dokumentationen byggs automatiskt Projekthemsida med status och dokumentation Utvecklare i Windowsmiljö utan L A TEX

Pragmatisk programmering,19 september 2002 24(26) Exempel ur vardagen, Rejas.Se Hobbyprojekt Allt lagras i CVS Vid varje incheckning byggs en devel-site Vid varje taggning uppdateras den skarpa siten

Pragmatisk programmering,19 september 2002 25(26) Exempel ur vardagen, Denna presentation Allt är automatiserat LATEX-kod skriven i vim. Make + bourne shell. make pdf, make html, make dist, make pub ((make unpub)) Vid make pub byggs en release, med md5-summor och alla filer, taggas i CVS och publiceras på sajten.

Pragmatisk programmering,19 september 2002 26(26) Signera Var stolt över det du gjort Signera med namn och e-postadress Du vet aldrig var din kod hamnar, eller när. Cyberrymden 2002