Pragmatisk programmering. Cyberrymden 2001-10-03. Marcus Rejås <marcus@rejas.se> Pragmatisk programmering,16 december 2002 1(29)



Relevanta dokument
Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,19 september (26)

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

En bortsprungen katt

Dr. Gustav Taxén MDI-Gruppen, CSC / VIC-Sthlm gustavt@kth.se

Whack-a-Witch. Introduktion. Nivå

Att bygga enkla webbsidor

Öppen/Fri programvara

Broken Windows-teorin och testningsskuld Version 1.0

Projektarbete DAVC20

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

Ljud och video på webbsidor

Fyrverkerier. Introduktion. Nivå. I det här projektet ska vi skapa ett fyrverkeri över en stad. Activity Checklist.

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

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

E- möten Snabbguide till Adobe Connect

Continuous Integration med Jenkins. Linus Tolke Enea Experts

Programdesign. Dokumentera. Dokumentera

Presentationsteknik. Möta investerare. Tips och råd inför din Pitch 10 min

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Att styla webbsidor. Nivå. Uppgiften

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

ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Börja med git och GitHub - Windows

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

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

Startsida. Högskolan Dalarna

Övning: hitta buggarna

Programmera och hitta buggarna. Se video

Projekt Fake för Virtutech

Webbregistrering pa kurs och termin

Verktyg för agil systemutveckling. Vad är ett verktyg? Olika typer av verktyg för mjukvaruutveckling. Vad kan ett bra verktyg tillföra?

12 principer of agile practice (rörlig)

Föreläsning 3. Programmering, C och programmeringsmiljö

Zendesk standard konfiguration Nordisk e handel 1.1

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

Programmering i C++ Kompilering från kommandoraden

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Metodguide och intervjuguide - Västernorrlandsmodellen för barns brukarmedverkan

Design Collaboration Suite

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

KOMMUNIKATION ATT LÄRA AV

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité?

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Kundportal. Kundportal - Användarhandledning

Presentation. Fredrik Runnsjö 1996 Utvecklare 2004 Testare ~2006 Scrum/Canban

Visma Bokslut. Anpassat för mindre bolag enkelt och överskådligt. med årsredovisning. Lättarbetat och överskådligt. Boksluts- och beräkningsbilagor

Allmänt om programvaror och filer i Windows.

Tfn Telephone Kontr Checked. Revisionshistoria Revision history Rev Namn Name Datum Date Ändring Change

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2)

En Lathund. om kyrkans närvaro i Sociala medier. för anställda och förtroendevalda i Svenska kyrkan i Linköping

Svenska kyrkan i Linköpings närvaro i Sociala medier. En lathund

Intrastatregistrering och -rapportering

SCRATCH är ett nytt programmeringsspråk som gör att du kan skapa dina egna interaktiv historier, animationer, spel, musik och konst.

Introduktion Intrastatregistrering och -rapportering

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Innehåll. Dokumentet gäller från och med version

Guide. Webbsidor i Studentportalen. Innehåll. Uppdaterad:

Adobe Connect Pro. Innehåll. Introduktion

Inspektion Användarmanuel

Kort om World Wide Web (webben)

EclipseCrossword GÖR DITT EGET KORSORD. Av: Anders Wihlgaard Sundsvalls kommun

Kanban. Marcus Hammarberg. torsdag den 15 september 2011 (v.)

Programmering och begrepp

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

ServiceFirst Webbhandledning, version Assessio International AB. All rights reserved

Handicom. Symbol for Windows. Encyklopedi. Version 3.4

1 Inledning/översikt Examensarbete... 4

Innehållsförteckning. Registrering 2. Inloggning 3. Startsidan 4. Notiser 7. Nyheter 8. Meddelanden 9. Tröskelvärden 11.

Men banners kan också placeras i composerblock samt på nyhets- och artikelsidor. Du kan skapa en banner i vilken editor som helst i EpiServer CMS 5.

Invest for Excel CD version Start guide

ESET NOD32 ANTIVIRUS 8

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Användarhandledning Version 1.2

Offentligt. Finlands Banks och Finansinspektionens skyddade e-post: anvisning för utomstående användare

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

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Grundkurs i programmering - intro

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

Socialdokumentation och Genomförandeplan i Procapita

Bygg din egen verktygslåda till PC-DMIS. Workshop, PC-DMIS dagar 2015

NetBeans 7. Avsikt. Projektfönster

OFFICIELLA REGLER. 4. Gå in på hemsidan och klicka på länken "Delta".

Handicom. Symbol for Windows. Blisseditor. Version 3.4

Instruktioner för studenter

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

Frågor & svar Smartbank

Hogia Kvalitetssäkrad Redovisning HUR?

Installationsinstruktioner

Att skicka fakturor. Fördjupning till dig som ska använda bankens fakturaskrivare för e-fakturor och pappersfakturor via e-bokföring

Quick Guide till Mahara och din Portfolio

Hogrefe TestSystem Web Edition. Manual HTS

Ökenracet. Introduktion. Nivå. STEG 1: Skapa scenen och lägg till sprites. Checklista. STEG 2: Få lejonet och papegojan att röra på sig.

Testautomatisering. Intro

TUTORIAL: SAMLING & KONSOLL

Användarmanual för ledare - ERC 2.0

PageTurner är en tjänst för att skapa bläddringsbara Flash-dokument - ett inslag i den moderna webbvärlden som blivit alltmer populärt.

Mitt namn är Satu Nordberg, jag kommer från Kyrkogårdsö som hör till Kökar kommun.

Att skicka fakturor. Fördjupning till dig som ska använda bankens Fakturaskrivare för e-fakturor och pappersfakturor

Transkript:

Pragmatisk programmering,16 december 2002 1(29) Pragmatisk programmering Cyberrymden 2001-10-03 Marcus Rejås <marcus@rejas.se> $Id: slides.tex,v 1.14 2002/12/16 14:52:59 rejas Exp $

Metainformation Denna introduktion består av tre delar. Del 1: Pragmatisk programmering Del 2: Pragmatiska verktyg Del 3: Mer pragmatisk programmering och pragmatisk programmering i projekt. Det mesta som det talas om här 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,16 december 2002 2(29)

Del 1: Pragmatisk programmering Pragmatisk kommer från Latinets Pragmaticus som ungefär betyder 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,16 december 2002 3(29)

Pragmatisk programmering,16 december 2002 4(29) Programmeringsprocesser Det finns flera olika processer kring vilka man kan arbeta med mjukvaruutveckling. 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,16 december 2002 5(29) 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,16 december 2002 6(29) 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,16 december 2002 7(29) 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,16 december 2002 8(29) 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

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,16 december 2002 9(29)

Pragmatisk programmering,16 december 2002 10(29) 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,16 december 2002 11(29) 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 Debugga Onda integrerade miljöer

Pragmatisk programmering,16 december 2002 12(29) 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,16 december 2002 13(29) Kraftfull, ren text width=100 vs. 010010011 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. (Från 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,16 december 2002 14(29)

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 makron. 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,16 december 2002 15(29)

Pragmatisk programmering,16 december 2002 16(29) Använd ditt skal Snabbare och enklare än klick-klick-klick $ mv Kalle.txt Kajsa.txt $ for i in *.cpp; do mv $i ${i%.cpp}.cxx; done Lätt att dokumentera mv Kalle.txt Kajsa.txt Starta en filhanterare, klicka på Kalle.txt, välj byt namn, skriv Kajsa.txt. Lätt att skripta

Pragmatisk programmering,16 december 2002 17(29) Använd ett versionshanteringssystem Välj ett och använd det till allt ditt jobb Vi ser allt som programmering, klart det skall versionshanteras

Pragmatisk programmering,16 december 2002 18(29) 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,16 december 2002 19(29) Debugga Buggar kommer, var lugn Don t panic Lär dig en debugger Reproducera (skripta) Laga aldrig en bugg som du inte kan reproducera. Hur skall du veta när du är klar?

Pragmatisk programmering,16 december 2002 20(29) Onda integrerade miljöer Modularitet (kan du byta editor?) Kontrollera automatgenererad kod (slumpprogrammering) Propriertöra byggmetoder Lite hokus-pokus.

Pragmatisk programmering,16 december 2002 21(29) Del 3: Pragmatiska projekt och mer om Pragmatisk programmering De första delarna behandlade hur du som pragmatisk programmerare skall vara och hur din verktygslåda ser ut. Denna del behandlar hur du och dina arbetskamrater jobbar tillsammans i ett pragmatiskt projekt.

Pragmatisk programmering,16 december 2002 22(29) Pragmatiska medlemmar tänker på Skjut inga fel på framtiden Dokumentera automatiskt 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,16 december 2002 23(29)

Pragmatisk programmering,16 december 2002 24(29) Automatisera Automatisera, och gör det direkt Självklara saker att automatisera Byggen Generering av dokumentation Generering av releaser Deployment Inte lika självklara Publicering Statusdokument Rapportering

Pragmatisk programmering,16 december 2002 25(29) 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,16 december 2002 26(29) 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,16 december 2002 27(29) 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,16 december 2002 28(29) 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,16 december 2002 29(29) 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