<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Altran CIS bloggen</title>
	<atom:link href="http://blogg.altran.se/cis/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogg.altran.se/cis</link>
	<description>Altran CIS bloggen</description>
	<lastBuildDate>Wed, 16 May 2012 13:34:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Första månaderna på Altran</title>
		<link>http://blogg.altran.se/cis/2012/05/16/forsta-manaderna-pa-altran/</link>
		<comments>http://blogg.altran.se/cis/2012/05/16/forsta-manaderna-pa-altran/#comments</comments>
		<pubDate>Wed, 16 May 2012 13:34:59 +0000</pubDate>
		<dc:creator>Altran Young Professional Program</dc:creator>
				<category><![CDATA[Young Professional Program]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1334</guid>
		<description><![CDATA[Jag heter Karl-Johan Dahl och  jag inleder årets YPP-bloggande. Young Professional Program är ett  traineeprogram som Altran anordnar där nyanställda, nyutexaminerade får chansen  att utvecklas inom konsultrollen. I april kickade årets konsultskola igång med  en första träff i Stockholm. Fokus där låg på så kallade soft skills vilket var  ett [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Jag heter Karl-Johan Dahl och  jag inleder årets YPP-bloggande. Young Professional Program är ett  traineeprogram som Altran anordnar där nyanställda, nyutexaminerade får chansen  att utvecklas inom konsultrollen. I april kickade årets konsultskola igång med  en första träff i Stockholm. Fokus där låg på så kallade soft skills vilket var  ett break från den annars teknikorienterade vardag jag är van vid. Träffen bjöd  på intressanta erfarenheter kring konsultrollen från våra kollegor men även våra  kunder. Att få höra båda parter var  lärorikt och bidrog med ett nyanserat perspektiv på konsultrollen, förväntningar  och arbetssätt.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Jag har arbetat på Altran sedan  februari och relativt snabbt befann jag mig på mitt första uppdrag ute hos kund. Uppdraget innebär vidareutveckling av Sharepoint-applikation. Som ny i branschen  är det för mig det perfekta uppdraget då det inte bara kräver kunskaper inom  Sharepoint utan även inom tekniker som C#, ASP.NET, Silverlight,  JavaScript/HTML/CSS och designmönster. Ständig kompetensutveckling är viktigt  och något jag uppskattar med IT-branschen, det dyker alltid upp nya problem som  kräver lite tankeverksamhet.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">I måndags höll  Kompetensfabriken kvällskurs på kontoret som behandlade ämnet  sökmotorsoptimering. Målet är toppen på Google men vägen dit är inte självklar.  Det jag tar med mig är att med en genomtänkt länk- och innehållsstruktur jobba  mot Googles riktlinjer med målet om att bygga en framtidssäkrad webbplats. När  webbplatsen väl är sökbar gäller det att behålla besökarna. Bra innehåll, SEO  och användbarhet – alla bitarna krävs på plats för att skapa en  konkurrenskraftig site. Det hela gav en bra inblick i ämnet och jag ser fram  emot fler lärorika träffar.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Slutligen önskar jag alla en  trevlig ledighet!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/05/16/forsta-manaderna-pa-altran/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intryck ifrån SDC 2012</title>
		<link>http://blogg.altran.se/cis/2012/05/01/intryck-ifran-sdc-2012/</link>
		<comments>http://blogg.altran.se/cis/2012/05/01/intryck-ifran-sdc-2012/#comments</comments>
		<pubDate>Tue, 01 May 2012 09:18:30 +0000</pubDate>
		<dc:creator>Kompetensfabriken</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Konferenser]]></category>
		<category><![CDATA[Systemutveckling]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1330</guid>
		<description><![CDATA[Det är snart 2 veckor sedan SDC gick av stapeln i Göteborg. Jag har hunnit smälta intrycken, fördjupat mig lite i några av ämnena och förträngt en del som saker som kanske inte var så intressant. Så vad var det jag hörde på konferensen som fortfarande sitter kvar?
Vikten av att fatta beslut baserat på data [...]]]></description>
			<content:encoded><![CDATA[<p>Det är snart 2 veckor sedan SDC gick av stapeln i Göteborg. Jag har hunnit smälta intrycken, fördjupat mig lite i några av ämnena och förträngt en del som saker som kanske inte var så intressant. Så vad var det jag hörde på konferensen som fortfarande sitter kvar?</p>
<p>Vikten av att fatta beslut baserat på data och inte på åsikter. Att faktiskt ta reda på vad det är som behöver göras, istället för att utgå ifrån antagande eller gamla meriter. Visst ska man inte underskatta tidigare erfarenheter när man står inför beslutsfattande, men utan att faktiskt ta reda på vad det är som gäller nu så är risken stor att man hamnar på långa omvägar eller inte kommer fram alls. Det här är ett område där det finns mycket att jobba med och förbättra.</p>
<p>Värdet och sidoeffekterna av att jobba i korta iterationer och att kunna leverera snabbt och ofta. Förutom en kort och kraftigt förenklad föreläsning av de vida ekonomiska fördelarna med att leverera snabbt och ofta, så handlade detta huvudsakligen om continuous integration. Vad jag fann mest intressant angående detta var det omvända upplägget som lades fram. Idén var att det snabba arbetssättet framtvingar andra viktiga egenskaper i de system som vi bygger. Typisk så handlar detta om testbarhet och kodkvalitet mm. Utan sådana egenskaper så blir det i längden omöjligt att kontinuerligt leverera snabbt och ofta, så de uppstår som en sidoeffekt. Jag skulle nog säga att det inte riktigt skulle fungera så bra att bara bestämma sig för att börja leverera snabbt och ofta och hoppas på att en massa bra sidoeffekter bara ska trilla in av sig självt. Man får nog lägga en hel del resurser på att nå en grundnivå av dessa egenskaper innan det blir självbärande genom snabba och frekventa leveranser.</p>
<p>På den tekniska sidan så handlade det som fångade mitt intresse mest om byggverktyg för Java. Det börjar finnas rätt gott om sådana nu. Jag hamnade på en föreläsning som huvudsakligen handlade om Maven och Gradle. Innehållet var väldigt objektivt framställt och beskrev ganska vanligt förekommande byggproblematik och lite om möjliga lösningar för dessa. Vad som var roligt var att även Tesla smögs in på ett litet hörn i föreläsningen. Jag skulle inte säga att Tesla är ett eget byggverktyg utan snarast en utökning av Maven, där man försöker komma tillrätta med mycket av den problematik som man kan stöta på i Maven. Efter att ha provat på Tesla lite på egen hand så kan jag säga att det känns ganska lovande. Det ska bli spännande att se om det blir något av det till slut.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/05/01/intryck-ifran-sdc-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Död åt primitiverna!</title>
		<link>http://blogg.altran.se/cis/2012/04/19/dod-at-primitiverna/</link>
		<comments>http://blogg.altran.se/cis/2012/04/19/dod-at-primitiverna/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 21:29:55 +0000</pubDate>
		<dc:creator>Tobias Modig</dc:creator>
				<category><![CDATA[Systemutveckling]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Primitiver]]></category>
		<category><![CDATA[Unified type system]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1316</guid>
		<description><![CDATA[Java har som många säkert vet aldrig varit ett &#8221;äkta&#8221; objektorienterat språk. Anledningen till detta är de åtta primitiverna, byte, short, int, long, float, double, boolean och char som inte är objekt utan just primitiver. Därmed går det exempelvis inte heller att anropa metoder på dessa primitiver. Nedanstående kodsnuttar ger alla kompileringsfel men borde vara [...]]]></description>
			<content:encoded><![CDATA[<p>Java har som många säkert vet aldrig varit ett &#8221;äkta&#8221; objektorienterat språk. Anledningen till detta är de åtta <a href="http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html" target="_blank">primitiverna</a>, byte, short, int, long, float, double, boolean och char som inte är objekt utan just primitiver. Därmed går det exempelvis inte heller att anropa metoder på dessa primitiver. Nedanstående kodsnuttar ger alla kompileringsfel men borde vara tillåtna om Java var ett äkta objektorienterat språk:</p>
<p><code>int i = 5;<br />
i.toString();</code></p>
<p><code>5.getClass();</code></p>
<p>Om fem år är det dock dags för Java att ta steget in i den rena objektorienterade världen. Detta enligt Oracles egen preliminära roadmap för Java som uttrycker att Java 10 ska släppas år 2017 och att primitiverna då skrotas.</p>
<p>Vad betyder detta rent praktiskt för språket Java? Vilka är för- och nackdelarna med primitiver och varför skapades de från början?<br />
För att svara på dessa frågor måste vi gå tillbaka till 90-talet när <a href="http://en.wikipedia.org/wiki/James_Gosling" target="_blank">Gosling</a> och hans team började utveckla språket <a href="http://en.wikipedia.org/wiki/Oak_(programming_language)" target="_blank">Oak</a> som senare blev Java. En av de stora utmaningarna för Oak-teamet var att sprida Java till så många utvecklare som möjligt. Då utvecklarvärlden vid denna tid först och främst bestod av C/C++-utvecklare så var det dessa som man försökte attrahera. Java har därför en rad &#8221;flörtar&#8221; med C-världen och primitiverna är just en sådan flört.</p>
<p>Den uppenbara fördelen med primitiver är annars att de är snabbare än objekt. Värdet på en primitiv lagras direkt i <a href="http://sv.wikipedia.org/wiki/Stack_(mikroprocessor)" target="_blank">stacken</a> i datorns minne vilket ger snabb åtkomst. Ett objekt lagras å andra sidan bara som en referens till objektet i stacken, själva objektet lagras på <a href="http://sv.wikipedia.org/wiki/Heap_(mikroprocessor)" target="_blank">heapen</a>. För att komma åt objektet läses alltså först objektreferensen från stacken och denna referens används sedan för att hitta objektet på heapen.<br />
För att tydliggöra prestandaskillnaden kan du prova att köra nedanstående kod.</p>
<p><code>Long sum = 0L;<br />
for (long i = 0; i &lt;= Integer.MAX_VALUE; i++) {<br />
sum += i;<br />
}<br />
System.out.println(sum);</code></p>
<p>På min hyfsat pigga dator tar detta åtta sekunder.<br />
Byter jag däremot ut klassen &#8221;Long&#8221; mot primitiven &#8221;long&#8221; på första raden så tar det bara en dryg sekund. En minst sagt markant skillnad.<br />
Ytterligare en fördel är att primitiverna av naturliga skäl inte kräver någon <a href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)" target="_blank">garbage collection</a>.</p>
<p>Över till nackdelarna, den kanske största nackdelen med primitiver är att de, till skillnad från objekt, inte kapslar in implementationen. Ett exempel på detta är char som lagrar ett tecken i 16 bit. Med den ständigt växande Unicode-standarden räcker detta numera inte till för alla tecken men eftersom char avslöjar sin implementation för omvärlden kan inte Java anpassa sig utan att bryta bakåtkompabiliteten. Det går därför inte att lagra alla Unicode-tecken i en char utan det blir ett kompileringsfel istället.</p>
<p>Den mest uppenbara nackdelen är annars att primitiverna inte kan användas någonstans där det krävs ett objekt, du kan exempelvis inte använda primitiver i <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/language/generics.html" target="_blank">generics</a>:<br />
<code><br />
List&lt;int&gt; integerList; // Kompileringsfel</code></p>
<p>För att underlätta, eller komplicera beroende på vem man frågar, så finns det i Java även objekt-varianter av alla primitiver. Exempelvis int finns även som Integer och boolean som Boolean. När Java i samband med Java 5 införde generics så infördes även <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html" target="_blank">autoboxing</a> och unboxing, alltså att en primitiv automatiskt omvandlas till objektvarianten och vice versa. För att göra om en primitiv till objekt med Java 1.4 så tvingades man till följande:</p>
<p><code>int i = 5;<br />
Integer intObject = new Integer(i);</code></p>
<p>I och med boxing i Java 5 går det istället att skriva:</p>
<p><code>Integer intObject = 5;</code></p>
<p>Mycket smidigare och med detta så kan man tycka att allt borde vara frid och fröjd. Använd primitiver om du bryr dig om prestanda och objektvarianterna om du är OO-purist.</p>
<p>Dessvärre har även detta mynt en baksida och det är att Java i många fall beter sig minst sagt besynnerligt i hanteringen av primitiver och objekt. Jag kan garantera att alla Javautvecklare (utom möjligen nämnde Gosling samt hans gamle kompis <a href="http://en.wikipedia.org/wiki/Joshua_Bloch" target="_blank">Joshua Bloch</a>) fallit i någon av följande fällor:</p>
<p><code><br />
int a = 1000;<br />
int b = 1000;<br />
System.out.println(a == b); //true, inget konstigt med det.</code></p>
<p><code> </code></p>
<p><code>Integer a = 1000;<br />
Integer b = 1000;<br />
System.out.println(a == b); //false, just det, Java jämför själva objekten.</code></p>
<p><code>Integer a = 100;<br />
Integer b = 100;<br />
System.out.println(a == b); //true, wtf!! För Integer upp till 127 så fungerar detta?</code></p>
<p><code> </code></p>
<p><code>Integer a = 1000;<br />
Integer b = 1000;<br />
System.out.println(a.equals(b)); //true, equals-metoden fungerar som önskat.</code></p>
<p>Så, sammanfattningsvis tror jag att språket Java har mycket att vinna på att överge primitiverna, inte minst i att det blir konsekvent och därmed lättare att ta till sig för nya utvecklare. Dessutom tror jag att Oracle har en enorm utmaning i att genomföra denna ändring utan att bryta bakåtkompabiliteten eller införa ordentliga prestandaproblem.<br />
Jag är tveksam att det ens är möjligt men det får framtiden för utvisa.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/04/19/dod-at-primitiverna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Att åka Flumeride i scrumprojektet</title>
		<link>http://blogg.altran.se/cis/2012/03/16/vattenfallsscrum/</link>
		<comments>http://blogg.altran.se/cis/2012/03/16/vattenfallsscrum/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 22:58:16 +0000</pubDate>
		<dc:creator>Tobias Modig</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Systemutveckling]]></category>
		<category><![CDATA[agila arbetssätt]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1310</guid>
		<description><![CDATA[Jag har under de senaste åren blivit inkastad i åtminstone tre olika projekt som på ytan sett ut som fräscha, fina Scrumprojekt. Efter någon vecka i projektet har det dock visat sig vara ännu ett traditionellt gammalt vattenfallsprojekt som kamouflerats med iterationer, dagliga möten och lappar som flyttas på en tavla. Det kanske inte är [...]]]></description>
			<content:encoded><![CDATA[<p>Jag har under de senaste åren blivit inkastad i åtminstone tre olika projekt som på ytan sett ut som fräscha, fina <a href="http://www.scrumalliance.org/pages/what_is_scrum" target="_blank">Scrumprojekt</a>. Efter någon vecka i projektet har det dock visat sig vara ännu ett traditionellt gammalt <a href="http://sv.wikipedia.org/wiki/Vattenfallsmodellen" target="_blank">vattenfallsprojekt </a>som kamouflerats med iterationer, dagliga möten och lappar som flyttas på en tavla. Det kanske inte är lika tydligt som <a href="http://sv.wikipedia.org/wiki/Niagarafallen" target="_blank">Niagarafallen</a> utan mer som <a href="http://liseberg.se/sv/hem/Nojesparken/Attraktioner/FlumeRide/" target="_blank">Flumeride</a>. Vid den första anblicken ser det inte ut som ett vattenfall men vid resan slut sitter man ändå där, sjöblöt vid foten av ett vattenfall och undrar hur det kunde gå så här.</p>
<p>Blickar jag tillbaka på dessa tre projekt så kan dessvärre inget av dem bedömas som lyckade om man använder traditionella kriterier som &#8221;levererades önskad funktionalitet&#8221;, &#8221;överskreds budgeten&#8221; och &#8221;överskreds tidplanen&#8221;. Det stora misstaget som gjordes var att det endast fokuserades på metodikens roller, möten och artefakter. Den bakomliggande agila grundtanken missades helt.<br />
Jag ska försöka beskriva några av de kardinalfel som jag upplevde i dessa projekt och dela med mig av de erfarenheter som projekten gav mig.</p>
<h2>Det dolda vattenfallet</h2>
<p><strong>Arbetssätt</strong><br />
Projektet inleddes med en lång period av kravarbete. Kraven portionerades därefter ut på X antal iterationer för att säkerställa att allt hanns med inom utsatt tidsram och budget. Redan från dag ett fanns det alltså exempelvis en uppfattning om vad som skulle utvecklas i sprint nummer elva.</p>
<p><strong>Problem</strong><br />
Reflektera lite över detta, vad är egentligen skillnaden mellan ovanstående och ett traditionellt vattensfallsprojekt med kontinuerliga statusavstämningar. Egentligen ingenting och med detta arbetssätt gick mycket riktigt projektet i många av de fällor som lurar i traditionella vattenfallsprojekt. En stor del av det inledande kravarbetet var bortkastat då det i praktiken var omöjligt kravställa och designa systemen på papper i förväg. Funktionalitet fick därför skrivas om gång på gång och många av de utvecklade funktionerna användes aldrig. Projekten lade dessutom stora resurser på planering och omplanering. Varje iteration som inte levererade full funktionalitet spillde över i nästa iteration, knuffade den ursprungliga planeringen framåt och krävde ideliga möten för nya estimat och tidplaner.</p>
<p><strong>En mer agil lösning</strong><br />
Vad vi borde ha gjort var att dra lärdom av tidigare iterationer och användarnas input efter varje iteration. Det som innan förra iterationen verkade som en nödvändig funktionalitet visade sig många gånger vara helt onödig när användarna började &#8221;känna&#8221; på systemet. Genom att succesivt planera arbetet hade vi kunnat fokusera på den funktionalitet som användarna verkligen önskade och dessutom sluppit många av de oändliga diskussioner som uppstod vad det gällde tidplaner och krav.</p>
<h2>Megastorys</h2>
<p><strong>Arbetssätt</strong><br />
Varje iteration populerades med väldigt stora uppgifter. Det var inte ovanligt att två, tre utvecklare jobbade tillsammans, med samma uppgift, under hela iterationen.</p>
<p><strong>Problem</strong><br />
Varje uppgift tog mer eller mindre hela iterationen, i vissa fall ändå mer. Därmed blev det omöjligt för testarna att hinna testa inom iterationen. Eventuella buggrättningar drabbade därför nästkommande iterationer. Stora uppgifter visade sig dessutom vara betydligt svårare att estimera och många gånger underskattade vi arbetsbördan och tog på oss alltför mycket inom en iteration. De gånger som dessa kolosser till uppgifter inte hanns med inom iterationen så levereras inget affärsvärde alls. Ett annat bekymmer var att det i det närmaste var omöjligt att fånga hur vi låg till inom iterationerna eftersom inga uppgifter blev klara förrän under iterationens sista dag.</p>
<p><strong>En mer agil lösning</strong><br />
Istället för att &#8221;fuska&#8221; under kravarbete och sprintplanering borde vi ha lagt mer tid på att populera varje iteration med många, små, fristående uppgifter. På så vis hade testarna kunnat börja testa tidigt och de allra flesta uppgifter hade då varit testade och buggrättade inom iterationen. I de fall då vi tagit på oss för många uppgifter inom en iteration så hade vi dessutom ändå levererat affärsvärde i och med att övriga uppgifter var klara. Dessutom är det betydligt lättare att se hur arbetet ligger till tidsmässigt inom iterationen om uppgifter färdigställs kontinuerligt. Därmed hade vi tidigt kunnat vidta åtgärder om det pekade på att tiden inte skulle räcka till.</p>
<h2>Överfyllda iterationer</h2>
<p><strong>Arbetssätt</strong><br />
Varje iteration fylldes med maximalt med arbete för att hinna med så mycket som möjligt.</p>
<p><strong>Problem</strong><br />
En gammal sanning är att stressade utvecklare ofta genererar &#8221;quick and dirty&#8221;-fixar vilket sett över tiden blir mer kostsamt än att lägga lite extra tid initialt. Vi straffades också av kontinuerligt sjunkande kodkvalitet vilket gjorde att produktiviteten sakta avtog. När alla utvecklare dessutom hela tiden var fullt upptagna med sina egna problem till 100 procent så gavs det mindre tid till att dels hjälpa varandra men också till att ta ett steg tillbaka och fundera på alternativa tekniska lösningar som kunde vara betydligt effektivare. Tiden till att kontinuerligt genomföra förbättringar som kostar lite extra tid kortsiktigt men som ger positiva effekter på lång sikt gavs inte heller.</p>
<p><strong>En mer agil lösning</strong><br />
Jag har suttit i andra projekt där vi medvetet planerat in &#8221;slack&#8221;, både inom iterationerna men också mellan iterationerna. På så vis har det hela tiden funnits tid för reflektion, kontinuerliga förbättringar och kommunikation mellan team-medlemmar. Dessutom omkullkastar inte en eller ett par sjukdagar i teamet hela iterationen.</p>
<h2>Utdelade uppgifter</h2>
<p><strong>Arbetssätt</strong><br />
Uppgifter delades ut av projektledare/<a href="http://scrummethodology.com/the-scrummaster-role/" target="_self">scrummaster </a>vid början av varje iteration, därefter satt varje utvecklare var för sig och utvecklade sina delar.</p>
<p><strong>Problem</strong><br />
Arbetssättet byggde inte en grupp utan en mängd enskilda individer som i första hand såg till sin egen uppgift. Detta trots att det många gånger fanns andra viktigare uppgifter som egentligen borde prioriteras. Utan att kunna påvisa några direkta fakta så fick jag även känslan av att detta beteende i vissa fall gav missnöjda utvecklare då uppgifter upplevdes som &#8221;påtvingade&#8221;. Varje sprintplanering avslutades med något som uppfattades som ett &#8221;uppgiftslotteri&#8221; där vissa drog nitlotter och andra drömvinster.</p>
<p><strong>En mer agil lösning</strong><br />
Min erfarenhet är att optimal prestation fås i &#8221;självorganiserande utvecklargrupper&#8221; där varje medlem i gruppen själv, eller genom diskussioner inom gruppen, avgör vilken uppgift som är lämpligast för närvarande. Det kan verka banalt men &#8221;frihet under ansvar&#8221; fungerar. Jag kan garantera att det ger mer engagerade utvecklare, utvecklare som strävar efter att teamet tillsammans ska leverera och utvecklare som tar ett kollektivt ansvar över kod och arbetsuppgifter. Lite som <a href="http://sv.wikipedia.org/wiki/Alexandre_Dumas_d.%C3%A4." target="_blank">Dumas</a> musketörer, &#8221;en för alla, alla för en&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/03/16/vattenfallsscrum/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kravanalytiker 31: Möt dem där de är</title>
		<link>http://blogg.altran.se/cis/2012/02/19/kravanalytiker-31-mot-dem-dar-de-ar/</link>
		<comments>http://blogg.altran.se/cis/2012/02/19/kravanalytiker-31-mot-dem-dar-de-ar/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 18:00:54 +0000</pubDate>
		<dc:creator>Glenn Jonasson</dc:creator>
				<category><![CDATA[Soft skills]]></category>
		<category><![CDATA[användarkrav]]></category>
		<category><![CDATA[kravanalytiker]]></category>
		<category><![CDATA[kultur]]></category>
		<category><![CDATA[ledarskap]]></category>
		<category><![CDATA[makt]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1308</guid>
		<description><![CDATA[Tredje och sista inlägget om kultur och makt för kravanalytiker. Det handlar om hur man motiverar och legitimerar kravarbete internt i en organisation. Kravlegitimering handlar om att göra kravarbete giltigt och betydelsefullt, att motivera kundinvolvering, brukarorientering och voice of the customer.
Jag skrev i första inlägget om makt och kultur som styrning av innebörder. Det handlar [...]]]></description>
			<content:encoded><![CDATA[<p>Tredje och sista inlägget om kultur och makt för kravanalytiker. Det handlar om hur man motiverar och legitimerar kravarbete internt i en organisation. Kravlegitimering handlar om att göra kravarbete giltigt och betydelsefullt, att motivera kundinvolvering, brukarorientering och voice of the customer.</p>
<p>Jag skrev i första inlägget om makt och kultur som styrning av innebörder. Det handlar till exempel om hur frågor och problem ramas in och styrs mot särskilda föreställningar som stämmer med maktens idéer. Verkligheten presenteras och skapas på ett sånt sätt att antalet möjliga tolkningar av den blir färre – världsbilden snävas in för människorna.</p>
<p>I andra inlägget rörde jag mig mot makt och introducerade Michel Focaults maktteorier. Makt fungerar genom diskurser enligt Focault. En diskurs är ett kollektivt sätt människor har att se världen, förstå den och prata om den.</p>
<p>Diskurser styr människornas tankar och tal vilket har en begränsande, inskränkande effekt anser Focault. Han har en skeptisk, misstänksam attityd till hur diskurser disciplinerar människors tänkande och binder dem till en viss självuppfattning.</p>
<p>Jag tycker att poängen för oss är att han vågar gå hela vägen med sin tanke om hur diskurserna är större än människorna, bärs av dem, talar genom dem och kontrollerar deras idéer om vad som är normalt, naturligt, bra. Tack vare att han drar det till sin ytterlighet och pratar om förtryck blir hans teori praktiskt användbar.</p>
<p>Andra inlägget slutade med ett tips för att träna maktblicken på exemplet jag gav. Hur verkar makten här? På med Focault-glasögonen:</p>
<ul>
<li>Leta efter de restriktioner människor sätter på sina tankar, världsbilder, handlingar och självbilder</li>
<li>Hitta de diskurser och makttekniker som styr hur folk jobbar och definierar sig själva</li>
</ul>
<p>Vi fortsätter och analyserar makten i exemplet: Jag ser en restriktion i hur lösningen byggdes: Verksamheten förväntade sig en lösning som uppfyllde kraven de hade skapat. Kollegerna på IS/IT, å andra sidan, lät på ett självklart sätt en teknisk norm bestämma något annat och agerade som om det var naturligt att lösningens utformning skulle styras så. Det verkar som om it-sidan såg det som logiskt att de själva skulle definiera lösningen – de kan ju tekniken.</p>
<p>Om det för IS/IT är naturligt att tekniken går före, blir en uppfattning att det var oproblematiskt att skippa verifieringen mot verksamhetskraven mer begriplig. Enligt it-diskursen var det en självklar och korrekt restriktion på lösningen. Ett exempel på makt som bärs av en grupp genom deras bild av hur man skapar it-lösningar.</p>
<p>Men hur kunde projektledaren bara vifta undan verksamhetskraven så där, gällde de inte längre? Nej, jag tror inte det (hemska tanke). Här kommer en annan maktteknik in, it-projektmetoden. Jag tror att innebörden av krav med den metoden snarare blir att krav är ett av många dokument som ska produceras och bockas av, än ett uttryck för kundens behov av att förbättra sin verksamhet.</p>
<p>Så här tänker jag: It-projektmetoden som är till för it-projekt och används av it-människor, den fokuserar på it. Dessutom handlar projektmetoder om att producera och bocka av dokument (slå mig projektadministratörer men så ser jag att metoderna tillämpas på fältet). Så jag tror att det enligt it-diskursen var normalt och naturligt att se på kraven som bara ett dokument utan koppling till hur it-lösningen skulle se ut. Okay, jag drar det kanske lite långt men jag gör det i Focaults anda.</p>
<p>Dessutom var projektpengarna förbrukade och då kommer ytterligare en diskurs in, budgeten. Vad budgeten säger är alltid det rätta, även om det den säger är fel. Snacka om maktinstrument.</p>
<p>Identiteter, till slut. Makten styr även människors självuppfattning. Den här aspekten av makt är väldigt viktig att använda när man ska påverka en organisation. Jag anser att it-diskursen dominerar i det här fallet. I it-diskursen är IS/IT i centrum och it-människorna underordnas vissa identiteter.</p>
<p>Vilka är dessa identiteter? Jag tror att till exempel it-arkitektens självbild var den självklare beslutsfattaren och främste påverkaren på den lösning projektet skulle skapa (för verksamhetens pengar). It-arkitekten förknippade troligen sig själv helt naturligt med den tekniska designen, den som styrde allt annat.</p>
<p>It-utvecklarnas identiteter? De ser sig som problemlösare som arbetar med ny och spännande teknik. Ge dem problem att lösa och tillgång till ny teknik så är de lyckliga, allt annat är mindre viktigt. Ja, jag provocerar, men jag jag jobbar med makt i Focaults anda idag och därför går jag längre än vanligt. Lite får ni tåla.</p>
<p>It-diskursen är inte att leka med. Vi har kvar att analysera projektledarens självuppfattning. Titta på beteendet, på vad som verkar rätt, logiskt, förnuftigt för projektledaren i den här situationen. Jag tror att självbilden är att vara den som garanterar att projektet går i mål administrativt, det vill säga i tid och inom budget.</p>
<p>Om den självbilden stämmer är det förklarligt att projektledaren avstod från att verifiera lösningen mot verksamhetens krav. Lösningen var ju klar, i tid, och pengarna var slut. För en som ser sig som projektets garant var det otänkbart att riva upp lösningen i det läget.</p>
<p>Jag ska sammanfatta: it-människornas beteende i projektet, deras självbilder, påståenden, ordval, projektmodellen – allt tyder på en sammanhängande världsbild som tillåts dominera även utanför IS/IT. Denna världsbild, jag har kallat den it-diskursen, verkar gå ut på att IS/IT sysslar med införande av it-system.</p>
<p>Och? säger någon. Ja, ursäkta en verksamhetskonsult men i min värld ska IS/IT definiera sitt uppdrag som att de förbättrar verksamheter, inte att de inför it-system. Det är stor skillnad mellan vad föreställningarna ’införande av it-system’ och ’förbättring av verksamheter’ gör med folks tankar och beteenden.</p>
<p>Till exempel blir det olika svar på frågan ”För vem gör du det här?” beroende på vilken världsbild den svarande har. För it-personen som anser sig jobba med införande av it-system blir (det ärliga) svaret notoriskt att det är för IS/IT:s skull. För de få it-personer som ändå har idén att de jobbar med att förbättra verksamheter blir i stället svaret att de gör det för sina kunders skull.</p>
<p>I det här fallet verkar alltså den dominerande diskursen inom IS/IT styra personalen till uppfattningen att det är logiskt att de definierar lösningen själva, de kan ju tekniken. Och eftersom de delar föreställningen att projekten handlar om att införa it-lösningar, inte om att förbättra en verksamhet, är det oproblematiskt att skippa verifiering mot kraven.</p>
<p>Okay, tack för den långa samhällsvetenskapliga essän. Men hur gör man praktiskt för att motivera kravarbete internt? Hur kan perspektivet kultur-och-makt komma till nytta för den som konkret vill förändra organisationens inställning till kundinvolvering?</p>
<p>Makten omger alla, även verksamheten som köper it-lösningarna. Så vad göra när det är så här? För det första: Möt dem där de är. För det andra: Var relevant. För det tredje: Var uthållig; se påverkan som en process och inte en händelse.</p>
<p>Jag ska avsluta de här inläggen om kultur och makt med att ge en metod för det första steget, att möta dem där de är. De två andra stegen handlar om inflytande och förändringsledning, de kommer i inlägg längre fram inom ramen för mitt bloggande om ledarskap för konsulter.</p>
<p>Skickliga påverkare knyter an till sin publik, det är vad jag menar med att möta dem där de är. Du har nytta av din kunskap inom makt och kultur när du tar reda på var publiken är. Skickliga påverkare vet att det är omöjligt att kommunicera effektivt med andra utan att veta något om dem. De fokuserar på människorna de ska kommunicera med, inte på sig själva.</p>
<p>Ta reda på var publiken är. När budskapet är genomtänkt rikta tanken mot dem och ställ sex typer av frågor:</p>
<ol>
<li>Vilka är de? Vilken världsbild har de? Vilken självbild har de?</li>
<li>Vad är syftet, varför är jag här?</li>
<li>Hur redo är de för mitt budskap? Vilka frågor eller invändningar har de?</li>
<li>Vad behöver de veta (kunskapsmål)?</li>
<li>Vad behöver de göra (handlingsmål)?</li>
<li>Hur får jag mitt budskap att fastna?</li>
</ol>
<p>Notera att fem av frågorna rör människorna och endast en budskapet – påverkan handlar om dem, inte om dig. Vi ska fokusera på steg 1 och 3 som handlar om att ta reda på var de är så att du kan möta dem där.</p>
<p>Fråga 1: Vilka är de? Vilken världsbild har de? Vilken självbild har de? Här lägger du ut den information du har från din analys av kultur och makt. Dela in publiken i kategorier, kanske yrkesdiscipliner eller uppfattningar eller självbilder. Låt inte det här ta för lång tid för du vill till steg 3 som är kärnan i förberedelsen.</p>
<p>Fråga 3: Hur redo är de för mitt budskap? Vilka frågor eller invändningar har de? Nu går du över i deras perspektiv, ser världen med deras ögon, tänker som de. Detta är möjligt med den kunskap du har skaffat i kultur-och-maktanalysen. Notera att här krävs fantasi, inlevelseförmåga och oräddhet så det är inget för medelmåttor.</p>
<p>Det är här du skapar det underlag som ger dig handlingsutrymme och unika fördelar i din strävan att förändra organisationens inställning till kundinvolvering och kravarbete. Här får du ut nyttan av att ha lärt dig analysera kutur och makt. Få gör detta så du har ett potent redskap i din hand. Som du ska använda med omdöme; folk gillar inte alltid att bli avslöjade men de gillar uppmärksamhet och bekräftelse.</p>
<p>Slutklämmen blir: Lär dig perspektivet kultur och makt, ha det som ett verktyg för påverkan, använd det med respekt och ödmjukhet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/02/19/kravanalytiker-31-mot-dem-dar-de-ar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kravanalytiker 30: Makt och kravhantering</title>
		<link>http://blogg.altran.se/cis/2012/02/15/kravanalytiker-30-makt-och-kravhantering/</link>
		<comments>http://blogg.altran.se/cis/2012/02/15/kravanalytiker-30-makt-och-kravhantering/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 12:57:26 +0000</pubDate>
		<dc:creator>Glenn Jonasson</dc:creator>
				<category><![CDATA[Soft skills]]></category>
		<category><![CDATA[kravanalytiker]]></category>
		<category><![CDATA[kultur]]></category>
		<category><![CDATA[ledarskap]]></category>
		<category><![CDATA[makt]]></category>
		<category><![CDATA[verksamhetskrav]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1306</guid>
		<description><![CDATA[Fortsättning från förra inlägget om hur man motiverar och legitimerar kravarbete internt i en organisation. Kravlegitimering handlar om att göra kravarbete giltigt och betydelsefullt; det handlar om att motivera kundinvolvering, brukarorientering och voice of the customer.
Jag skrev i förra inlägget om makt och kultur som styrning av innebörder. Det handlar till exempel om hur frågor [...]]]></description>
			<content:encoded><![CDATA[<p>Fortsättning från förra inlägget om hur man motiverar och legitimerar kravarbete internt i en organisation. Kravlegitimering handlar om att göra kravarbete giltigt och betydelsefullt; det handlar om att motivera kundinvolvering, brukarorientering och voice of the customer.</p>
<p>Jag skrev i förra inlägget om makt och kultur som styrning av innebörder. Det handlar till exempel om hur frågor och problem ramas in och styrs mot särskilda föreställningar som stämmer med maktens idéer. Verkligheten presenteras och skapas på ett sånt sätt att antalet möjliga tolkningar av den blir färre – världsbilden snävas in för människorna.</p>
<p>Makt är ett negativt laddat ord för de flesta. Dess vanliga innebörd, som är att en part avsiktligt bekämpar och motverkar motstånd hos en annan, kallas instrumentell makt.</p>
<p>Men det finns intressantare definitioner av makt, mindre synliga men mer effektiva. Som kravanalytiker kan du ha nytta av att se på en organisation i perspektivet kultur och makt. Jag erbjuder här ett tankesätt som ger dig ett annat fokus och mer skärpa i tolkningen av ditt företags attityd till kravarbete.</p>
<p>När samhällsvetare talar om makt refererar de oftast till <a href="http://en.wikipedia.org/wiki/Michel_Foucault">Michel Focault</a>, fransk efterkrigsfilosof. Focault är svår att läsa, försök inte, och kritikerna är många, men hans inflytande på hur vi numera ser på makt är enormt. Jag ska kortfattat beskriva ett par delar i hans tänkande om makt som är brukbart för en kravanalytiker.</p>
<p>Focault säger att det viktiga är inte att fastställa vem som har makt utan det är att förstå hur makten verkar. Makten ska studeras i hur den utövas mellan människor, säger han. Men med det menar han inte ett tvång utövat av den som har makt på den som inte har det, utan en makt som omger alla, påverkar alla och sprids av alla – en nätverksteori om makt.</p>
<p>Hur kan makt omge alla, påverka alla och spridas av alla? Genom diskurser, ett av de centrala begreppen i Focaults maktteori. En diskurs är ett kollektivt sätt människor har att se världen, förstå den och prata om den. Diskurser styr människornas tankar och tal vilket har en begränsande, inskränkande effekt anser Focault. Han har en skeptisk, misstänksam attityd till hur diskurser disciplinerar människors tänkande och binder dem till en viss självuppfattning.</p>
<p>Makt fungerar alltså genom diskurser enligt Focault. Jag tycker att poängen är att han vågar gå hela vägen med sin tanke om hur diskurserna är större än människorna, bärs av dem, talar genom dem och kontrollerar deras idéer om vad som är normalt, naturligt, bra. Tack vare att han drar det till sin ytterlighet och pratar om förtryck blir hans teori praktiskt användbar för oss.</p>
<p>Resultatet av den här sortens förtryckande begränsande makt, säger Focault, är att människorna utvärderar sig alldeles själva mot de standarder diskurserna föreskriver. Makten lever alltså sitt eget liv och bärs av alla på alla nivåer; vi är alla lika fast i diskursernas grepp om våra världsbilder.</p>
<p>Inte så kul att tänka på, men brukbart som redskap för den som vill påverka folk, till exempel förändra en organisations inställning till kravarbete. Focaults teorier om makt behöver inte vara sannare än andra teorier men de är användbara för våra syften här, det räcker.</p>
<p>Snart ska jag lämna de abstrakta samhällsvetenskapliga resonemangen och ge konkreta exempel på hur makt verkar sedd i ett Focault-perspektiv. Snart men inte riktigt än, håll ut för jag har viktig sak till.</p>
<p>Enligt Focault finns många kunskapsformer med koppling till makten, till exempel designregler, engineering-ramverk, tekniska standarder, managementmetoder och projektmetoder. Dessa fungerar disciplinerande; de är maktinstrument som styr och begränsar människornas handlingsfält. Dessutom styr de identiteter, det vill säga varje individs uppfattning om vem den är.</p>
<p>Nu ska jag konkretisera med ett exempel från min konsultpraktik: I ett uppdrag skulle jag hjälpa två processutvecklare att kravställa ett it-system för redovisning av vissa miljöfarliga material. It-systemet skulle utvecklas främst för att möta lagens krav så det fanns inga kommersiella behov som drev. Däremot skulle systemet få ganska många användare och det var för att involvera dem i kravarbetet som jag anlitades.</p>
<p>Vi intervjuade, observerade, simulerade och validerade fram en rätt bra kravbild som godkändes av verksamheten och lämnades över till IS/IT. Sen gick jag vidare till andra uppdrag och tänkte inte mer på hantering av miljöfarligt material. Förrän ett och ett halvt år senare när jag träffade de båda processutvecklarna på en konferens där jag höll ett seminarium i ledarskap.</p>
<p>Med sorgsna ögon berättade mina klienter att it-systemet var utvecklat och infört men att användarna var väldigt missnöjda med vad de fått. Systemet gjorde visserligen teoretiskt vad det skulle men det var svårt att använda och arbetet tog mer tid än med det manuella registret de haft tidigare.</p>
<p>Jag frågade hur det hade kunnat bli så med tanke på kravens goda kvalitet. De berättade då att acceptanstestet hade varit en fars. Användarna hade gjort tummen ner på punkt efter punkt där systemet inte uppfyllde kraven. Men projektledaren hade svarat dem att det här är vad ni får, att databasdesignen styrt hela lösningens utformning och att budgeten nu var förbrukad, klart slut.</p>
<p>Hur verkar makten här? På med Focault-glasögonen, träna maktblicken:</p>
<ul>
<li>Leta efter de restriktioner människor sätter på sina tankar, världsbilder, handlingar och självbilder</li>
<li>Hitta de diskurser och makttekniker som styr hur folk jobbar och definierar sig själva</li>
</ul>
<p>I nästa inlägg gör jag den här maktanalysen och ger konkreta anvisningar för hur du sätter kunskapen om kultur och makt i verket.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/02/15/kravanalytiker-30-makt-och-kravhantering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kravanalytiker 29: Motivera kravarbete internt</title>
		<link>http://blogg.altran.se/cis/2012/02/12/kravanalytiker-29-motivera-kravarbete-internt/</link>
		<comments>http://blogg.altran.se/cis/2012/02/12/kravanalytiker-29-motivera-kravarbete-internt/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 18:05:20 +0000</pubDate>
		<dc:creator>Glenn Jonasson</dc:creator>
				<category><![CDATA[Soft skills]]></category>
		<category><![CDATA[kravanalytiker]]></category>
		<category><![CDATA[kultur]]></category>
		<category><![CDATA[ledarskap]]></category>
		<category><![CDATA[makt]]></category>
		<category><![CDATA[verksamhetskrav]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1304</guid>
		<description><![CDATA[Klienter som anlitar mig på områdena krav och innovation brukar vilja ha hjälp med främst två saker: kravhantering och kravlegitimering. Kravhantering är det klassiska och konkreta: planering, insamling, bearbetning, dokumentering, validering och förvaltning. Det har jag skrivit mycket om i inläggen Kravanalytiker 1-28, och är inte färdig än.
Kravlegitimering, det andra behovet, handlar om att göra [...]]]></description>
			<content:encoded><![CDATA[<p>Klienter som anlitar mig på områdena krav och innovation brukar vilja ha hjälp med främst två saker: kravhantering och kravlegitimering. Kravhantering är det klassiska och konkreta: planering, insamling, bearbetning, dokumentering, validering och förvaltning. Det har jag skrivit mycket om i inläggen Kravanalytiker 1-28, och är inte färdig än.</p>
<p>Kravlegitimering, det andra behovet, handlar om att göra kravarbete giltigt och betydelsefullt; det handlar om att motivera kundinvolvering, brukarorientering och voice of the customeri en organisation. Det här behovet är större än jag trott så nu kommer jag fortsatt att skriva även om hur man motiverar kravarbete.</p>
<p>Jag börjar med perspektivet kultur och makt där jag läst rätt mycket de senaste två åren för att tillfredsställa mina kritiska och emancipatoriska ambitioner. Senare kommer jag antagligen att skriva om kravlegitimering även i perspektivet retorik och argumentation, alltså mer praktiskt och konkret om hur man gör när man motiverar kravarbete.</p>
<p>Kultur och makt berör den politiska dimensionen i organisationer. Men inte endast –   politik blir lätt ett negativt laddat ämne trots att dess yttringar finns på nästan varje arbetsplats – för det berör även en rent social dimension. Detta är samhällsvetenskap, mina vänner, välkomna till den andra sidan.</p>
<p>För att ett kollektiv, till exempel ett företag, ska fungera behöver medlemmarna dela vissa grundläggande föreställningar och verklighetsuppfattningar – man måste vara överens om vad som är sant och vad som är rätt för att kunna arbeta tillsammans.</p>
<p>Fenomenet organisation kan därmed förstås som gemensam verklighetsuppfattning och verksamheten i en organisation som människornas skapande och upprätthållande av den verklighetsuppfattningen. Detta är ett av flera möjliga sätt att förstå vad organisation är, och vi ska använda det sättet nu.</p>
<p>Förenklat (samhällsvetare gillar inte det här, de vill hellre komplicera ämnet) kan man säga att kultur är kollektiva vanor, till exempel en grupps vanor att:</p>
<ul>
<li>definiera vad som är bra och dåligt</li>
<li>uppmärksamma vissa saker och bortse från andra</li>
<li>använda somliga ord men inte andra</li>
<li>lyda några auktoriteter men inte andra</li>
</ul>
<p>Makt är ett laddat ord, negativt laddat för de flesta. Den vanliga innebörden, instrumentell makt kallad av samhällsvetarna, handlar om att en part avsiktligt och med kraft bekämpar och motverkar en annan.</p>
<p>Men det finns fler och mycket intressantare definitioner av makt; de är subtila, mindre synliga och omedvetna men effektiva. Som kravanalytiker kan du ha nytta av att se på en organisation i perspektivet kultur och makt. Jag erbjuder här ett tankesätt som ger dig ett annat fokus och mer skärpa i tolkningen av ditt företags attityd till kravarbete.</p>
<p>Vi ska titta närmare på styrning av innebörder, en alternativ definition av makt. Det handlar om hur dominans utövas i en organisation genom att vissa innebörder ses som naturliga, logiska och oproblematiska. Ledande personer och grupperingar visar i handling, många gånger omedvetet och oavsiktligt, att de är goda företrädare för denna kulturellt reglerade verklighetsuppfattning. De utövar makt på ett indirekt sätt utan att riktigt veta om det.</p>
<p>Jag vet att detta är abstrakt samhällsvetenskap men stanna med mig lite till, snart kommer exempel som gör det mer konkret. Och om du tar till dig detta har du ett verktyg som ger dig fördelar när du vill utöva inflytande i en organisation.</p>
<p>Kulturell styrning av innebörder handlar om hur frågor och problem ramas in och styrs mot särskilda föreställningar som stämmer med maktens idéer. Verkligheten presenteras och skapas på ett sånt sätt att antalet möjliga tolkningar av den blir färre – världsbilden snävas in för människorna, på gott och ont.</p>
<p>Med det här synsättet utövas inte makt genom att starka aktörer synligt och uttalat bestämmer över svaga, vi snackar inte om diktatur och propaganda. Nej makten utövas i stället genom ett vardagligt skapande av särskilda föreställningar och uppfattningar på ett sätt vi inte alltid märker.</p>
<p>I det följande kommer jag att se på makt så här: makt är människors processer, tekniker och handlingar vilka styr innebörder och definierar människornas verklighet.</p>
<p>Låt mig konkretisera med ett exempel: I ett företag där jag gjorde ett konsultuppdrag kom jag i kontakt med en grupp reparatörer, det var mekaniker och elektriker. Reparatörerna skrev sällan rapporter efter sina jobb vilket gav ledningen gråa hår. Rapporternas information behövdes som kunskapsbas för förebyggande underhåll men väldigt lite kom in den vägen.</p>
<p>Jag tänkte att reparatörernas mönster att undvika rapportskrivande säkert hade goda skäl och frågade dem om det. Snabbt förstod jag att normen hos dem var enkel: att jobba är att skruva och reparera, men att skriva rapporter på dator är inte att jobba. Hjälte blir den som rycker ut och lagar grejer som är sönder, inte den som skriver utförliga underhållsrapporter. Skruva-inte-skriva var alltså den gällande gruppnormen. Den som avvek fick höra det och rättade in sig eller sökte sig annat jobb i fabriken.</p>
<p>Vilka var då kulturyttringarna som hyllade skruva och nedvärderade skriva? Tre exempel: Det var de krävande och brådskande reparationerna man pratade om vid kaffet, inte den senaste underhållsstatistiken. Det var skämten i duschen om tjänstemännen som sysslade med tabeller och analyser inom förebyggande underhåll och aldrig blev manligt smutsiga om händerna. Det var tillfredsställelsen när kön av akutjobb var lång och de svettiga reparatörerna hade allas uppmärksamhet.</p>
<p>Föreställningen om vad det innebär att jobba på riktigt styrdes alltså kulturellt. Likaså uppfattningen om hur man får status i reparatörsgruppen. Verkligheten definierades kollektivt som en rad mer eller mindre akuta reparationsjobb, vilket gjorde det oproblematiskt att hoppa över rapportskrivandet.</p>
<p>Jag rekommenderade ledningen att göra tvärtom för att lyckas få ut dugliga underhållsrapporter, att de skulle hylla reparatörernas gruppnorm skruva-inte-skriva i stället för att sucka över den och tjata på gubbarna.</p>
<p>Metoden jag föreslog var enkel: Lova reparatörerna att införa verktyg som gör det möjligt att skapa en rapport på en minut. Det går aldrig fick jag till svar och då visste jag att vi var på rätt väg. I workshopen kom sen cheferna med mängder av idéer om handdatorer, streckkoder, röststyrning och annat konstruktivt. Reparatörerna applåderade och kom med fler idéer om att skriva snabba rapporter – nu hade ämnet blivit intressant även för dem.</p>
<p>Träna på att upptäcka kulturellt styrda innebörder i din organisation. När du hittat dem har du många gånger nyckeln till hur du ska nå fram och påverka rådande attityder. Gör så här:</p>
<ul>
<li>Inventera rådande uppfattningar om vad som är bra, naturligt och logiskt i verksamheten – tänk efter själv, fråga andra, spana</li>
<li>Lägg märke till vilka händelser och handlingar som uppmärksammas positivt bland folk – vad blir till snackisar</li>
<li>Lyssna efter ord som används ofta – vilket språk är det, vilka ämnen kommer orden från</li>
</ul>
<p>Försök sammanfatta dina kulturella slutsatser i enkla normbeskrivningar, typ skruva-inte-skriva. Går det enkelt är normen tydlig, annars kan du behöva spana mer. Det finns en risk att kulturella analyser blir ytliga och triviala. Det motverkar du med att söka efter en mångfald kulturella uttryck: vad som sägs, vad som inte sägs, hur det sägs, vad som görs, vad som inte blir gjort, skillnader, motsägelser, likheter, handlingskraft, energi, apati.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/02/12/kravanalytiker-29-motivera-kravarbete-internt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Är ditt objekt verkligen inkapslat?</title>
		<link>http://blogg.altran.se/cis/2012/02/08/inkapsling/</link>
		<comments>http://blogg.altran.se/cis/2012/02/08/inkapsling/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 00:03:17 +0000</pubDate>
		<dc:creator>Tobias Modig</dc:creator>
				<category><![CDATA[Systemutveckling]]></category>
		<category><![CDATA[Inkapsling]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Objektorientering]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1297</guid>
		<description><![CDATA[Häromdagen förde jag en diskussion med en kollega angående objektorientering och vilket som är den viktigaste aspekten i det objektorienterade konceptet. Utan att förringa arv och polymorfism så hävdade jag helt klart att inkapsling står högst på listan. Jag ska försöka förklara varför.
En allmän uppfattning är att inkapsling, och det närbesläktade &#8221;information hiding&#8221;, i princip [...]]]></description>
			<content:encoded><![CDATA[<p>Häromdagen förde jag en diskussion med en kollega angående objektorientering och vilket som är den viktigaste aspekten i det objektorienterade konceptet. Utan att förringa <a href="http://en.wikipedia.org/wiki/Inheritance_%28object-oriented_programming%29" target="_blank">arv</a> och <a href="http://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29" target="_blank">polymorfism </a>så hävdade jag helt klart att <a href="http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29" target="_blank">inkapsling</a> står högst på listan. Jag ska försöka förklara varför.</p>
<p>En allmän uppfattning är att inkapsling, och det närbesläktade &#8221;<a href="http://en.wikipedia.org/wiki/Information_hiding" target="_blank">information hiding</a>&#8221;, i princip handlar om att göra alla fält i en klass till private och därefter skapa getters och <a href="http://en.wikipedia.org/wiki/Mutator_method" target="_blank">setters</a> för dessa fält. Finito, done, perfectum, klassen är inkapslad efter konstens alla regler.<br />
Jag skulle vilja påstå att ingenting kan vara mer fel. Detta beteende ligger sannolikt bakom de flesta av de buggar som beror på att objekt har felaktiga tillstånd och gör dessutom system betydligt svårare att underhålla och förändra. Att då våra utvecklingsmiljöer erbjuder möjligheten att rutinmässigt generera getters och setters utifrån klassens fält borde snudd på rapporteras som en bugg. Vad den funktionaliteten gör är att uppmana till ett destruktivt beteende, ungefär som om bilhandlaren skulle bjuda på drinkar i samband med att man provkörde en bil. För vissa enstaka medpassagerare skulle det säkert ses som en trevlig service men för den stora massan mest fungera som ett försök att locka till en bedrägligt handling. Brottsprovokation är som bekant förbjudet för den svenska polisen men det är bevisligen tillåtet i <a href="http://www.eclipse.org/" target="_blank">Eclipse</a> och <a href="http://www.jetbrains.com/idea/" target="_blank">IntelliJ</a>.</p>
<p>För mig handlar istället inkapsling om en klass förmåga att gömma interna data och implementationsdetaljer, om att separera API från implementation. Hur självständigt ett objekt är och att reducera objektets beroenden till andra objekt.<br />
En del i att uppnå detta är att alltid se till att ett objekt är färdigt att användas så fort det skapas och därefter erbjuda minsta tänkbara möjlighet att ändra objektets tillstånd. Ofta ser man dock kod som nedanstående:</p>
<p><code>Account account = new Account();<br />
account.setId(accountId);<br />
account.setType(accountType);<br />
account.setOwner(owner);<br />
listOfAccounts.add(account);</code></p>
<p>Det som utvecklaren bakom Account gjort här är dels att läcka implementationsdetaljer och dels att lämpa över ansvaret för att objektet skapas korrekt från sig själv till den som ska använda klassen. Detta trots att det med största sannolikhet är den som utvecklade klassen som borde veta vad som krävs för att objektet ska vara redo att användas. Finns det dessutom ytterligare några setters på Account så är det i princip omöjligt för en utvecklare att veta att exempelvis Owner är obligatoriskt. Missar han att sätta Owner så resulterar det om han har tur i ett &#8221;nullpointer exception&#8221;. Har han otur slinker buggen igenom och ett halvår senare får han en felrapport i knät på att vissa konton saknar ägare.</p>
<p>En mycket bättre lösning på detta hade varit om Account hade tagit de fält som krävs som argument till <a href="http://en.wikipedia.org/wiki/Constructor_%28object-oriented_programming%29" target="_blank">konstruktorn</a>. Dessutom hade sannolikt lite polymorfism suttit bra här:</p>
<p><code>Account savingsAccount = new SavingsAccount(accountId, owner);<br />
listOfAccounts.add(savingsAccount);</code></p>
<p>Enklare, snyggare och definitivt mycket säkrare.<br />
Ur detta perspektiv är det beklagligt att Java implicit skapar en &#8221;no argument&#8221; konstruktor automatiskt om utvecklaren inte skriver en konstruktor själv. Det vore bättre att konstruktorlösa klasser gav kompileringsfel och att man i de undantagsfall där det faktiskt är befogat med en konstruktor utan argument skulle vara tvungen att skriva den själv. Det skulle om inte annat tvinga utvecklaren att tänka till angående implementationen, i alla fall till dess att han skulle upptäcka &#8221;generera konstruktor&#8221;-funktionen.</p>
<p>Ett annat problem med såväl getters som setters är att de avslöjar klassens implementationsdetaljer. För att återgå till exemplet med &#8221;savingsAccount&#8221;. Så här skulle det mycket väl kunna vara tänkt att räntan räknas ut:</p>
<p><code>//Calculate daily interest.<br />
double amount = savingsAccount.getAmount();<br />
int rate = savingsAccount.getRate();<br />
double interest = (amount * rate / 100) / 365;</code></p>
<p>Här finns dessvärre möjligheten att ta del av implementationen av savingsAccounts och när någon plötsligt kommer på att det inte var så klokt att lagra rate som en integer och vill förändra detta så kommer det säkerligen att krävas förändringar på flertalet ställen i systemet. Är det dessutom så att det rör sig om ett publikt <a href="http://en.wikipedia.org/wiki/Api" target="_blank">API</a> som kunder använder så blir lösningen sannolikt att skapa ytterligare en getRate()-metod och därefter leva med en deprekerad getRate()-metod under resten av programmets livslängd.<br />
Ovanstående exempel är tyvärr ett ganska vanligt tillvägagångssätt där utvecklaren väljer att fråga objektet efter information för att därefter själv processa den på lämpligt sätt. En smidigare lösning är att be objektet som sitter på informationen att även göra beräkningen:</p>
<p><code>double interest = savingsAccount.calculateDailyInterest();</code></p>
<p>Koden blir lättare att läsa och nu finns möjligheten att ändra &#8221;rate&#8221; från en int till en double utan att det påverkar övrig kod eftersom detta är inkapslat inne i savingsAccount.</p>
<p>Något annat som kan utnyttjas för att kringgå inkapsling är arv. Det är en smal sak att ärva en klass och därefter överrida en metod så att den gör saker som klassen inte alls var designad för. En ändring i superklassen kan dessutom medföra fel i subklassen utan att subklassen ändras alls. Därför tycker jag att man rent generellt bör säkerställa att det inte går att ärva från klasser. Finns det goda skäl till att klassen trots allt ska vara möjlig att överridas så har man som utvecklare ett ansvar att designa sin klass så att inkapslingen äventyras så lite som möjligt.</p>
<p>Det absoluta drömobjektet är det som skapas av konstruktorn och där det sedan inte går att påverka objektets tillstånd alls. Dessa objekt kommer, så länge som de instansieras korrekt, aldrig att vara föremål för buggar som beror på felaktiga tillstånd. De kommer dessutom att vara trådsäkra och kan därmed delas hur mycket som helst mellan olika trådar och olika användare. Sträva därför efter att i möjligaste mån göra dina klasser oföränderliga.</p>
<p>Jag skulle vilja avsluta med en liten checklista för att säkerställa att ett objekt är inkapslat till en acceptabel grad. Följer du nedanstående så kommer du ett stort steg på vägen mot att bygga system som är lätta att underhålla och som sannolikt innehåller få tillståndsbuggar:</p>
<ul>
<li>Minimera synligheten på variabler, metoder och klasser (instansvariabler ska exempelvis självklart vara private).</li>
<li>Generera inte getters och setters rutinmässigt.</li>
<li>Se till att objektet är klart att använda då det skapas (erbjud ingen default-konstruktor).</li>
<li>Sträva efter att göra klasserna oföränderliga.</li>
<li>Se till att din klass inte kan överridas, förslagsvis genom att göra klassen &#8221;final&#8221;.</li>
<li>Erbjud inga metoder som påverkar klassens tillstånd.</li>
<li>Låt klassen som besitter informationen erbjuda tjänster, inte &#8221;rådata&#8221;.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/02/08/inkapsling/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fångad av det brådskande, någon?</title>
		<link>http://blogg.altran.se/cis/2012/01/26/fangad-av-det-bradskande-nagon/</link>
		<comments>http://blogg.altran.se/cis/2012/01/26/fangad-av-det-bradskande-nagon/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 18:29:56 +0000</pubDate>
		<dc:creator>Glenn Jonasson</dc:creator>
				<category><![CDATA[Soft skills]]></category>
		<category><![CDATA[effektivitet]]></category>
		<category><![CDATA[ledarskap]]></category>
		<category><![CDATA[prioritera]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1293</guid>
		<description><![CDATA[Tony Schwartz skriver att &#8221;No is the new yes&#8221; på HBR-bloggen. Inlägget handlar om att prioritera sin tid. Läsvärt, klokt, rätt, inspirerande.
Men i de många kommentarerna till inlägget skriver folk att visst visst det är helt rätt att reflektera, prioritera, säga nej, vara konsekvent, ha disciplin &#8211; men man orkar inte vara så duktig. Och [...]]]></description>
			<content:encoded><![CDATA[<p>Tony Schwartz skriver att &#8221;No is the new yes&#8221; på <a href="http://blogs.hbr.org/schwartz/2012/01/no-is-the-new-yes-four-practic.html#.Txkiq9GAZCM.email">HBR-bloggen</a>. Inlägget handlar om att prioritera sin tid. Läsvärt, klokt, rätt, inspirerande.</p>
<p>Men i de många kommentarerna till inlägget skriver folk att visst visst det är helt rätt att reflektera, prioritera, säga nej, vara konsekvent, ha disciplin &#8211; men man orkar inte vara så duktig. Och då tänker jag, praktiker som jag är, att bra teori inte hjälper om implementationen uteblir.</p>
<p>Vi vet allt hur vi ska göra för att öka vår effektivitet, gå ner i vikt, ha en positiv attityd. Men vi gör det inte för implementationen är det svåra.</p>
<p>Gör i stället så här: Börja med väldigt små steg. Sätt typ målet att göra fem armhävningar varannan dag i två veckor. Sen tio armhävningar varannan dag i två veckor. Det är inte särskilt mycket och gör inte ont. Sen tio armhävningar varje dag i en månad. Efter två månader har du etablerat en vana vilket är poängen. Om du nu låter bli armhävningarna under några dagar kommer du att sakna dem &#8211; för att de blivit en vana.</p>
<p>Skapa vanor alltså och gör det i så små steg så att det blir av. Disciplinen att börja göra något litet och enkelt varje dag är mindre än att börja göra något stort och svårt varje dag. Börja med små steg.</p>
<p>HBR-artikeln betonar värdet av reflektion men säger samtidigt att detta görs inte på grund av det frenetiska tempot som inte har utrymme för stunder av koncentrerad eftertanke. Jag har frågat mina klienter systematiskt det senaste halvåret om vad de uppskattar mest med att jobba med mig som konsult i ledarskap och kommunikation. Alla, verkligen alla, svarar: Reflektionen. De älskar att reflektera <em><strong>och</strong></em> de gör det aldrig själva. Motsägelsefullt men sant.</p>
<p>Så här är en konkret anvisning för dig som gärna vill reflektera men inte riktigt fått till det än. Bestäm dig för att en enda gång per vecka göra en reflektion i tre steg (se nedan) och dokumentera resultatet med en snabb anteckning. Det tar 3-5 minuter av koncentrerad tanke och sen är det klart. Gör anteckningen i kalendern så att du sen kan följa upp att du gjort veckans reflektion.</p>
<p>Metoden kallas good-better-how och är enkel. Alla metoder jag jobbar med är enkla. Tre steg:</p>
<ol>
<li>Vad gick bra?</li>
<li>Vad kunde gått bättre?</li>
<li>Hur kunde det gjorts bättre?</li>
</ol>
<p>Tänk inte för mycket, ta det som dyker upp först i tanken. Anteckna några få nyckelord. Kom ihåg, du bygger en vana, tränar in en ny metod, och då är formen viktigare än innehållet. Bara gör det (just do it &#8211; bra fras men nån annan tog den före mig).</p>
<p>Efter en dryg månad har du reflekterat med good-better-how ett halvdussin gånger. Om du då hoppar över en vecka kommer du att sakna reflektionen för att vanan finns och drar dig åt rätt håll. Sätt igång redan idag!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/01/26/fangad-av-det-bradskande-nagon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Betalningsbekr�ftelse f�r kursen</title>
		<link>http://blogg.altran.se/cis/2012/01/11/teckenkodning/</link>
		<comments>http://blogg.altran.se/cis/2012/01/11/teckenkodning/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 22:17:37 +0000</pubDate>
		<dc:creator>Tobias Modig</dc:creator>
				<category><![CDATA[Systemutveckling]]></category>
		<category><![CDATA[Webb]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://blogg.altran.se/cis/?p=1285</guid>
		<description><![CDATA[Häromdagen fick jag ett mail från dotterns dansskola med ämnesraden, ”Betalningsbekr�ftelse f�r kursen: L�r 10:15”.
Bevisligen finns det alltså fortfarande utvecklare som rycker på axlarna varje gång någon nämner teckenkodning. De går runt i sin lilla bubbla och tror att det finns något som heter ”vanlig text” och så länge de håller sig till sin ”vanliga [...]]]></description>
			<content:encoded><![CDATA[<p>Häromdagen fick jag ett mail från dotterns dansskola med ämnesraden, ”Betalningsbekr�ftelse f�r kursen: L�r 10:15”.<br />
Bevisligen finns det alltså fortfarande utvecklare som rycker på axlarna varje gång någon nämner teckenkodning. De går runt i sin lilla bubbla och tror att det finns något som heter ”vanlig text” och så länge de håller sig till sin ”vanliga text” så är det lugnt. Det må vara sant, om den ”vanliga texten” bara ska användas på deras egen dator och läsas på deras eget språk. Världen ser dock som bekant inte ut så längre.<br />
Håller du just på att tröttna på denna bloggpost så håll ut lite till för här kommer språkförbistringens ”silverkula”, <strong>du måste alltid ange teckenkod.</strong> I html görs det med charset-parametern i meta-taggen:</p>
<p><code>&lt;meta http-equiv="Content-Type" content="text/html; <strong>charset=utf-8</strong>" /&gt;</code></p>
<p>I Java kan du exempelvis sätta teckenkod när du startar JVM:n med parametern</p>
<p><code>-Dfile.encoding=utf-8</code></p>
<p>eller när du läser från en fil</p>
<p><code>Reader reader = new InputStreamReader(is, "UTF-8");</code></p>
<p>För er som vill ha lite bakgrund till hur detta med teckenkodning hänger ihop kommer här en liten historielektion.<br />
I begynnelsen var datorspråket engelska, alla tecken som behövdes fanns representerade i <a href="http://www.asciitable.com/" target="_blank">ASCII-tabellen</a> och allt var frid och fröjd. Om det nu mot förmodan finns någon gammal IBM-räv som läser detta så antar jag att det höjs röster mot att det minsann fanns saker som <a href="http://en.wikipedia.org/wiki/BCD_%286-bit%29" target="_blank">BCD</a>, BCDIC och <a href="http://en.wikipedia.org/wiki/EBCDIC">EBCDIC </a>innan ASCII tog över. Det är förvisso sant men för oss vanliga så var det före begynnelsen.</p>
<p>Hur som helst, klassisk 7-bitars ASCII hade plats för alla engelska tecken och dessa tecken representerades av siffrorna 32-127, exempelvis var ”blank” 32, 0 var 48, A var 65 och z var 122. Siffrorna 0-31 användas för att representera olika styrtecken som TAB, ESC och liknande.</p>
<p>Den dominerande IBM-datorn på denna tid använde sig dock av 8 bitar vilket gjorde att det fanns en bit kvar, utöver den traditionella ASCII-tabellen. Denna extra bit gav möjlighet att lagra ytterligare tecken med representationen 128-255. Runt om i världen började det också poppa upp utökningar för att ge stöd åt det egna språkets speciella bokstäver, det som vi uppe i norden ansåg vara en utmärkt representation för Å blev i Grekland bokstaven Ἠ. Asiaterna å sin sida byggde ett eget system som kalldes <a href="http://en.wikipedia.org/wiki/DBCS" target="_blank">DBCS </a>(&#8221;Double Byte Character Set&#8221;) för att få plats med alla sina tecken. Språkproblematiken var född.</p>
<p>Efter ett tag kom man i alla fall överens, via ANSI-standarden, att 0-127 skulle vara lika över hela världen men från 128 och uppåt var det helt olika tecken beroende på var man befann sig. Vad 128-255 representerade kom att kallas OEM-kod. Original IBM PC teckenkodningen blev OEM 437 medan exempelvis våra grannar i Norge och Danmark skapade OEM 865 eftersom de saknade Ø i OEM 437.</p>
<p>Ett försök att lösa språkförbistringen gjordes med Unicode. Idén med Unicode var att varje tänkbart tecken skulle få sin egen representation, något som bestäms av <a href="http://unicode.org/" target="_blank">”Unicode Consortium&#8221;</a>. För närvarande är Unicode 6.0 den aktuella versionen och den innehåller 862 624 olika tecken. Det är lätt att tro att detta skulle vara det lyckliga slutet på historien men icke. Varje tecken representeras nämligen av en ”code point” på formen ”U+” plus ett hexadecimalt nummer. Exempelvis bokstaven A representeras som U+0041 och ni som kan er hexadecimala konvertering ser att hexadecimalt 41 motsvarar decimalt 65. A har alltså samma värde som i den gamla ASCII-tabellen. Detsamma gäller övriga bokstäver från den gamla 7-bitars ASCII-tabellen (A-Z, a-z). En vanlig engelsk textsträng som ”My name is Luca” representeras på följande sätt med den ursprungliga Unicode-kodningen (UCS-2):</p>
<p><code>004D 0079 0020 006E 0061 006D 0065 0020 0069 0073 0020 004C 0075 0063 0061</code></p>
<p>Fiffiga (engelskspråkiga) programmerare tyckte dock att det där var en massa onödiga nollor, här fanns<br />
det diskplats att spara. Därför skapades UTF-8 som sparar tecken 0-127 i en byte medan övriga tecken<br />
sparas i två eller flera byte. Det gav dessutom fördelen att vanliga engelska tecken lagras på precis samma sätt i UTF-8 som i det gamla ASCII-systemet. &#8221;My name is Luca&#8221; på UTF-8 blir alltså följande:</p>
<p><code>4D 79 20 6E 61 6D 65 20 69 73 20 4C 75 63 61</code></p>
<p>Under åren har det sedan växt fram en rad olika sätt att lagra Unicode där UTF-8 är det vanligaste men det finns även exempelvis UTF-16 (som är närbesläktad till det ursprungliga UCS-2 kodningen), UCS-4, UTF-1 och UTF-EBCDIC som alla har sina egna små egenskaper. Lägg därtill att det fortfarande finns en rad gamla teckenkodningar som ISO-8859-1 som svävar runt därute i cyberrymden. Allt detta innebär att om det inte finns någon teckenkod angiven till en text och det kommer ett tecken som inte ryms inom det ursprungliga 0-127 ASCII-spannet så är det komplett omöjligt att veta vilket tecken som avses, istället skrivs det i vissa fall någon form av ”<a href="http://sv.wikipedia.org/wiki/Mojibake" target="_blank">Mojibake</a>” (skräptecken), i andra fall frågetecken eller fyrkanter.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.altran.se/cis/2012/01/11/teckenkodning/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

