<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Citerus blogg om framgångsrik mjukvaruutveckling</title>
    <link>http://www.citerus.se</link>
    <atom:link href="http://www.citerus.se/blog.xml" rel="self" type="application/rss+xml" />
    <language>sv</language>
    <ttl>40</ttl>
     <image>
      <url>http://www.citerus.se/images/generic/CITERUS_grey_M.png</url>
      <title>Citerus blogg om framgångsrik mjukvaruutveckling</title>
      <link>http://www.citerus.se</link>
    </image>
    <description>Citerus erfarenheter och åsikter om hur man utvecklar mjukvara framgångsrikt</description>
       
     <item>
          <title>Mini-ramverk för vy-injicering i Android</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/anton-gravestam.jpg&quot;&gt;
              &lt;p&gt;&lt;span style=&quot;font-family: Arial; font-size: 15px; white-space: pre-wrap; &quot;&gt;H&amp;auml;romdagen tr&amp;ouml;ttnade jag p&amp;aring; att skriva boilerplate-kod i mina Android-aktiviteter f&amp;ouml;r att komma &amp;aring;t mina xml-definerade vyer. S&amp;aring;, som en rolig &amp;ouml;vning och f&amp;ouml;r att friska upp mina Annotations-kunskaper besl&amp;ouml;t jag mig f&amp;ouml;r att skriva ett mini-injection-ramverk f&amp;ouml;r vyer. Det visade sig, att p&amp;aring; tjugo minuter och lika m&amp;aring;nga kodrader hade jag vad jag beh&amp;ouml;vde.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Det vanliga s&amp;auml;ttet i android f&amp;ouml;r att f&amp;aring; tillg&amp;aring;ng till vyer i Android &amp;auml;r att anv&amp;auml;nda findViewById() p&amp;aring; f&amp;ouml;ljande s&amp;auml;tt: &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp; &lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;font face=&quot;Verdana&quot;&gt;&lt;span style=&quot;font-size: 11px; white-space: pre-wrap;&quot;&gt;TextView &lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); white-space: pre-wrap; &quot;&gt; mQuestionText&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); white-space: pre-wrap; &quot;&gt;mQuestionText &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;= (TextView) findViewById(R.id.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); white-space: pre-wrap; &quot;&gt;questionText&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;);&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(56, 118, 29); white-space: pre-wrap; &quot;&gt;// Use view&lt;/span&gt; &lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Kanske inte j&amp;auml;ttejobbig kod att skriva, men den &amp;auml;r r&amp;auml;tt irriterande att se i onCreate hela tiden om man har m&amp;aring;nga vyer i sin aktivitet och det &amp;auml;r l&amp;auml;tt h&amp;auml;nt att man g&amp;ouml;r det h&amp;auml;r p&amp;aring; m&amp;aring;nga olika st&amp;auml;llen vilket kan g&amp;ouml;ra koden sv&amp;aring;r&amp;ouml;versk&amp;aring;dlig. Dessutom, om man byter typ p&amp;aring; vyn, t. ex. fr&amp;aring;n CheckBox till ToggleButton s&amp;aring; m&amp;aring;ste man &amp;auml;ndra p&amp;aring; tv&amp;aring; st&amp;auml;llen och riskerar tr&amp;aring;kiga class cast exceptions.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Min tanke med ett litet mini-injection ramverk var att ist&amp;auml;llet kunna byta ut koden ovan med att bara annotera deklarationen p&amp;aring; f&amp;ouml;ljande vis och sedan kunna lita p&amp;aring; att vyn inte &amp;auml;r null och castad till r&amp;auml;tt typ:&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); white-space: pre-wrap; &quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); white-space: pre-wrap; &quot;&gt;@Inject(&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;id=R.id.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); white-space: pre-wrap; &quot;&gt;questionText&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); white-space: pre-wrap; &quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;TextView &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); white-space: pre-wrap; &quot;&gt;mQuestionText&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(56, 118, 29); white-space: pre-wrap; &quot;&gt;//Use view&lt;/span&gt; &lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Min l&amp;ouml;sning f&amp;ouml;r att g&amp;ouml;ra detta var att skapa en runtime-annotation-klass Inject med ett f&amp;auml;lt id som ovan samt en hj&amp;auml;lpklass som givet en aktivitet injicerade referenser till alla medlemsvariabler av typer som &amp;auml;rver View och som har annoteringen Inject p&amp;aring; sig. Total skulle d&amp;aring; en deklaration och onCreate kunna se ut s&amp;aring; h&amp;auml;r:&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;@Inject&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;(id=R.id.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;questionText&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;TextView &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;mQuestionText&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;@Override&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;public void &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;onCreate(Bundle savedInstanceState)  { &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;.onCreate(savedInstanceState); &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setContentView(R.layout.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;);  &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;injectViews(&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 11px; font-family: Verdana; background-color: transparent; font-style: normal; white-space: pre-wrap; &quot;&gt;); &lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Det trevliga med koden ovan &amp;auml;r att onCreate-metoden inte v&amp;auml;xer med antalet deklarerade vyer, n&amp;aring;got som jag annars retat mig p&amp;aring;, samt att jag slipper skriva &lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;mView = (TextView) findViewById(R.id.view); &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;hela tiden!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Sj&amp;auml;lva implementationen av ViewInject.injectViews() och annoteringen &amp;auml;r enkel.&lt;/span&gt; &lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Annoteringsklassen:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(102, 102, 102); white-space: pre-wrap; &quot;&gt;@Retention(&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;RetentionPolicy&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(0, 0, 255); white-space: pre-wrap; &quot;&gt;RUNTIME&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: rgb(56, 118, 29); font-family: Verdana; font-size: 11px; white-space: pre-wrap; &quot;&gt;//Make the annotation readable at runtime&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;public @interface &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;Inject {&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;    int &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;id();&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Och den statistiska metoden f&amp;ouml;r att injicera vyn:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;public static&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt; &amp;lt;T &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;extends &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;Activity&amp;gt; &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;void &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;injectViews(T activity) { &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Class&amp;lt;T&amp;gt; cls = (Class&amp;lt;T&amp;gt;) activity.getClass();&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;    Field[] fields = cls.getDeclaredFields();&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;    for &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;(Field field : fields) {&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(56, 118, 29); white-space: pre-wrap; &quot;&gt;        //Check field is subclass of View&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;        if &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;(View.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;.isAssignableFrom(field.getType())) {&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;            Inject injectAnnotation = field.getAnnotation(Inject.&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;class&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;);&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;            if(injectAnnotation != null) {&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;                try &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;{&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;                    View view = activity.findViewById(injectAnnotation.id());&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;                    if(view == null) {&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                    throw new RuntimeException(&amp;quot;No View for id ...&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                } &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;field.set(activity, view);&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            } &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; color: rgb(153, 0, 255); white-space: pre-wrap; &quot;&gt;catch &lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;(Exception e) {&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;            &lt;/span&gt;throw new RuntimeException(&amp;quot;Error, cannot load ...&amp;quot;); &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;     &lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;        }&lt;/span&gt; &lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;    &lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;    }&lt;/span&gt;
&lt;span style=&quot;font-size: 11px; font-family: Verdana; white-space: pre-wrap; &quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Givetvis vill man brodera ut klassen ovan med lite b&amp;auml;ttre felhantering, tydliga loggar och m&amp;ouml;jlighet att byta ut vyerna mot mockade varianter n&amp;auml;r man testar. Men d&amp;aring; skulle ramverket bli mer &amp;auml;n 20 rader, s&amp;aring; det l&amp;auml;mnas till l&amp;auml;saren att l&amp;auml;gga till efter behov.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;All kod och ett testprogram finns open source p&amp;aring; &lt;/span&gt;&lt;a href=&quot;https://github.com/staxgr/ViewInject&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: rgb(17, 85, 204); white-space: pre-wrap; &quot;&gt;https://github.com/staxgr/ViewInject&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Och givetvis finns det redan n&amp;aring;n annan som gjort det b&amp;auml;ttre. S&amp;aring; om ni vill ha en mer mogen och inneh&amp;aring;llsrik variant s&amp;aring; rekommenderar jag att ni testar &lt;/span&gt;&lt;a href=&quot;http://code.google.com/p/roboguice/wiki/SimpleExample?tm=6&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: rgb(17, 85, 204); white-space: pre-wrap; &quot;&gt;Roboguice&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;, det ska jag g&amp;ouml;ra!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; white-space: pre-wrap; &quot;&gt;Happy coding!&lt;/span&gt;&lt;/p&gt;
          </description>
          <pubDate>Fri, 04 May 2012 06:00:27 GMT</pubDate>
          <guid>http://www.citerus.se/post/830320-mini-ramverk-f-r-vy-injicering-i-android</guid>
          <link>http://www.citerus.se/post/830320-mini-ramverk-f-r-vy-injicering-i-android</link>
      </item>
       
     <item>
          <title>Craftsmanship exchange - en vecka i Grand Rapids</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/atomic_wall.jpg&quot;&gt;
              &lt;p&gt;Jag fl&amp;ouml;g ut fr&amp;aring;n Stockholm den 14 april f&amp;ouml;r att inleda v&amp;aring;rt craftmanship exchange med Atomic Object. Atomic Object &amp;auml;r ett f&amp;ouml;retag som p&amp;aring; m&amp;aring;nga s&amp;auml;tt liknar v&amp;aring;rt f&amp;ouml;retag och som p&amp;aring; olika s&amp;auml;tt har kopplingar till Citerus. Det &amp;auml;r d&amp;auml;rf&amp;ouml;r extra roligt att detta utbytesprogram &amp;auml;ntligen har kommit ig&amp;aring;ng.&lt;/p&gt;
&lt;p&gt;Atomic har ett sp&amp;auml;nnande koncept d&amp;auml;r de bygger hela produkten &amp;aring;t sina kunder, vilket betyder att de har stor kompetens kring utveckling, produktdesign och effektiva arbetss&amp;auml;tt.&lt;/p&gt;
&lt;p&gt;Under veckan fick jag se prov p&amp;aring; hur otroligt bra det kan fungera n&amp;auml;r man samarbetar i tv&amp;auml;rfunktionella team och ta fram nya funktioner utan v&amp;auml;ntetider. Design, utveckling och testning i en h&amp;auml;rlig r&amp;ouml;ra med kundens problem i fokus!&lt;/p&gt;
&lt;p&gt;I Atomics stora rum fanns en &amp;quot;Radiator&amp;quot; som visualiserade en massa olika information kring status p&amp;aring; p&amp;aring;g&amp;aring;ende utvecklingsprojekt, statistik p&amp;aring; deras hemsida och vilka som n&amp;auml;rmast&amp;nbsp;var p&amp;aring; g&amp;aring;ng att publicera bloggposter p&amp;aring; hemsidan. Inspirerande!&lt;/p&gt;
&lt;p&gt;Jag hade innan utbytet blivit informerad om att projektet jag skulle jobba i baserades p&amp;aring; Ruby on Rails. Det skulle visa sig att applikationen var en modern webbapplikation med ett rikt anv&amp;auml;ndargr&amp;auml;nssnitt och det blev d&amp;auml;rf&amp;ouml;r mycket utveckling f&amp;ouml;r klientdelarna av applikationen.&lt;/p&gt;
&lt;p&gt;De tekniker som nyttjades flitigast var CoffeeScript och ett ramverk f&amp;ouml;r JavaScript vid namn Backbone.js. Detta var f&amp;ouml;r mig b&amp;aring;de ett nytt spr&amp;aring;k (CoffeeScript) och ett nytt ramverk, vilket var v&amp;auml;ldigt sp&amp;auml;nnande och roligt att se. Jag parprogrammerade med Matt Fletcher, Jared Sartin och Paul Hart under veckan och fick se mycket av testdriven utveckling med CoffeeScript blandat med en st&amp;auml;ndigt p&amp;aring;g&amp;aring;ende designprocess. TDD f&amp;ouml;r JavaScript/CoffeeScript &amp;auml;r n&amp;aring;got som jag inte har sett praktiserats tidigare, men det kommer jag ta med mig som en riktigt viktig del i arbetet med denna typ av applikation.&lt;/p&gt;
&lt;p&gt;Det &amp;auml;r utmanande att s&amp;auml;tta sig in i ny teknik och en ny applikation p&amp;aring; s&amp;aring; kort tid men med stora &amp;ouml;ron och &amp;ouml;gon kan man absorbera och l&amp;auml;ra sig mycket. Jag hoppas att jag &amp;auml;ven kunde bidra med lite nytta under veckans parprogrammeringssessioner.&lt;/p&gt;
&lt;p&gt;Vi gick &amp;auml;ven genom ett retrospektiv &amp;ouml;ver projektets f&amp;ouml;rsta fas och hade flertalet lunchdiskussioner om olika &amp;auml;mnen, d&amp;auml;ribland operativsystem och design thinking.&lt;/p&gt;
&lt;p&gt;Under min sista dag h&amp;ouml;ll jag i en &amp;quot;brown-bag&amp;quot;-lunch d&amp;auml;r jag presenterade lite kring mina tankar kring Clojure och varf&amp;ouml;r det har kommit att intressera mig.&lt;/p&gt;
&lt;p&gt;Ut&amp;ouml;ver dagarna som var fulla med nya erfarenheter blev jag v&amp;auml;l omh&amp;auml;ndertagen och fick se mycket av Grand Rapids och en del av de n&amp;auml;rliggande st&amp;auml;derna. Jag var med och tittade p&amp;aring; ett cykellopp, &amp;aring;t trevliga middagar och hade after-work med i stort sett alla p&amp;aring; Atomic. Det k&amp;auml;nns fantastiskt att ha f&amp;aring;tt umg&amp;aring;s med alla p&amp;aring; Atomic, b&amp;aring;de p&amp;aring; och utanf&amp;ouml;r arbetet.&lt;/p&gt;
&lt;p&gt;Det har varit en otroligt l&amp;auml;rorik vecka och det &amp;auml;r otroligt bra att Citerus och Atomic Object har skapat m&amp;ouml;jligheten att genomf&amp;ouml;ra dessa utbyten.&lt;/p&gt;
&lt;p&gt;I maj tar vi emot Matt Fletcher fr&amp;aring;n Atomic d&amp;aring; han under en vecka kommer att arbeta med oss p&amp;aring; Citerus. Vi ser verkligen fram emot detta och framtida utbyten!&lt;/p&gt;
&lt;p&gt;Matt Fletchers &lt;a href=&quot;http://spin.atomicobject.com/2012/04/22/a-craftsman-exchange-part-1/&quot;&gt;blogg&lt;/a&gt; om den g&amp;aring;ngna veckan.&lt;/p&gt;
          </description>
          <pubDate>Tue, 24 Apr 2012 07:30:11 GMT</pubDate>
          <guid>http://www.citerus.se/post/815552-craftsmanship-exchange-en-vecka-i</guid>
          <link>http://www.citerus.se/post/815552-craftsmanship-exchange-en-vecka-i</link>
      </item>
       
     <item>
          <title>Om övertid i utvecklingsprojekt</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/tobias-fors.jpg&quot;&gt;
              &lt;p&gt;Vi b&amp;ouml;rjar i r&amp;auml;tt &amp;auml;nde: vad, om n&amp;aring;got, &amp;auml;r problemet med &amp;ouml;vertid i utvecklingsprojekt? De problem som lyfts fram generellt &amp;auml;r ganska tunga saker. Det p&amp;aring;st&amp;aring;s att &amp;ouml;vertid:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&amp;Ouml;kar kostnaden mer &amp;auml;n produktiviteten&lt;/li&gt;
    &lt;li&gt;Bidrar till fler defekter&lt;/li&gt;
    &lt;li&gt;S&amp;auml;nker motivationen&lt;/li&gt;
    &lt;li&gt;&amp;Ouml;kar &amp;aring;ngest och depression och p&amp;aring;verkar familjelivet&lt;/li&gt;
    &lt;li&gt;F&amp;ouml;rs&amp;auml;mrar talangmarknadserbjudandet&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Olika sorters &amp;ouml;vertid&lt;/h4&gt;
&lt;p&gt;All &amp;ouml;vertid &amp;auml;r inte lika. Dels kan &amp;ouml;vertid anv&amp;auml;ndas i kortvariga och s&amp;auml;llsynta perioder, dels kan &amp;ouml;vertid anv&amp;auml;ndas som en st&amp;aring;ende standardl&amp;ouml;sning. Det g&amp;aring;r ocks&amp;aring; att skilja p&amp;aring; &amp;ouml;vertid som mer frivilligt v&amp;auml;ljs av den som g&amp;ouml;r jobbet, och &amp;ouml;vertid som beordras.&lt;/p&gt;
&lt;p&gt;Frivillig och kortvarig &amp;ouml;vertid &amp;auml;r sannolikt mindre problematisk &amp;auml;n beordrad och l&amp;aring;ngvarig &amp;ouml;vertid. De stora problemen som lyfts fram har sannolikt st&amp;ouml;rst koppling till denna typ av &amp;ouml;vertid.&lt;/p&gt;
&lt;h4&gt;Sv&amp;aring;rt att studera&lt;/h4&gt;
&lt;p&gt;Effekten av &amp;ouml;vertid verkar inte helt l&amp;auml;tt att studera, eftersom m&amp;aring;nga faktorer p&amp;aring;verkar produktiviteten i ett f&amp;ouml;retag, och dessutom &amp;auml;r det inte alls uppenbart hur man egentligen m&amp;auml;ter produktiviteten i utvecklingsprojekt.&lt;/p&gt;
&lt;p&gt;Trots detta verkar m&amp;aring;nga &amp;ouml;verens om att l&amp;aring;ngvarig &amp;ouml;vertid &amp;auml;r skadlig f&amp;ouml;r utvecklingsarbetets produktivitet (och f&amp;ouml;r arbetslivskvaliteten). Vi kan studera den forskning som finns inom industrin, och resonera kring om motsvarande kan g&amp;auml;lla inom kunskapsarbete.&lt;/p&gt;
&lt;h4&gt;&amp;Ouml;kar kostnaden mer &amp;auml;n produktiviteten&lt;/h4&gt;
&lt;p&gt;Intuitivt kan tyckas att fler timmar borde leda till att mer blir gjort. I praktiken &amp;auml;r det inte s&amp;aring; enkelt.&lt;/p&gt;
&lt;p&gt;Den f&amp;ouml;rsta fr&amp;aring;gan vi beh&amp;ouml;ver st&amp;auml;lla oss &amp;auml;r: &amp;auml;r alla arbetstimmar p&amp;aring; jobbet lika produktiva?&lt;br /&gt;
Svaret blir nej. Ibland &amp;auml;r vi extremt produktiva, och ibland g&amp;auml;ller motsatsen.&lt;/p&gt;
&lt;p&gt;N&amp;auml;sta fr&amp;aring;ga blir:&amp;nbsp;hur p&amp;aring;verkar &amp;ouml;vertid v&amp;aring;r produktivitet? Om vi jobbar 50% mer, kan vi d&amp;aring; f&amp;ouml;rv&amp;auml;nta oss 50% mer resultat? Svaret tycks vara nej. P&amp;aring; kort sikt kan vi f&amp;ouml;rv&amp;auml;nta oss att vi f&amp;aring;r mer gjort, men f&amp;ouml;rb&amp;auml;ttringen &amp;auml;r inte linj&amp;auml;r mot antalet timmar. I och med att vi blir tr&amp;ouml;ttare mot slutet av dagen eller veckan, s&amp;aring; minskar ocks&amp;aring; v&amp;aring;r produktivitet.&lt;/p&gt;
&lt;p&gt;En studie i byggbranschen visade p&amp;aring; att efter flera veckors &amp;ouml;vertid s&amp;aring; tj&amp;auml;nande man inte l&amp;auml;ngre n&amp;aring;got alls p&amp;aring; att fler timmar arbetades. Man fick allts&amp;aring; ut lika mycket som om man hade jobbat normal arbetstid.&lt;/p&gt;
&lt;p&gt;Redan p&amp;aring; kort sikt ser vi allts&amp;aring; att vi inte f&amp;aring;r ut s&amp;aring; mycket fr&amp;aring;n &amp;ouml;vertid som man skulle tro. P&amp;aring; l&amp;aring;ng sikt kan rent av produktiviteten sjunka, n&amp;auml;r f&amp;ouml;ljdeffekterna av &amp;ouml;vertiden g&amp;ouml;r sig g&amp;auml;llande.&lt;/p&gt;
&lt;h4&gt;Bidrar till fler defekter&lt;/h4&gt;
&lt;p&gt;Tom deMarco citerar i sin bok &amp;quot;Slack&amp;quot; kollegan Tim Lister: &amp;quot;People under pressure don&amp;acute;t think faster&amp;quot; [3]. Mer koncist &amp;auml;n s&amp;aring; kan det knappast s&amp;auml;gas.&lt;/p&gt;
&lt;p&gt;Utvecklingsarbete kr&amp;auml;ver kreativitet och koncentration. Tr&amp;ouml;ttheten som kommer med l&amp;aring;ngvarig &amp;ouml;vertid hj&amp;auml;lper knappast med det. Tv&amp;auml;rtom ligger det n&amp;auml;ra till hands att tro att &amp;ouml;vertid &amp;ouml;kar risken att vi introducerar defekter i koden.&lt;/p&gt;
&lt;p&gt;&amp;Auml;r det OK att programmera onykter? M&amp;ouml;jligtvis hemma, men knappast p&amp;aring; jobbet. Men det &lt;em&gt;&amp;auml;r &lt;/em&gt;accepterat att programmera n&amp;auml;r man &amp;auml;r helt uttr&amp;ouml;ttad, trots att tr&amp;ouml;ttheten l&amp;auml;tt kan motsvara effekten av onykterhet. [2] Hj&amp;auml;lper s&amp;aring;dana tr&amp;ouml;tta timmar verkligen projektet fram&amp;aring;t, eller g&amp;ouml;r de att vi tar ett steg bak&amp;aring;t?&lt;/p&gt;
&lt;p&gt;Fels&amp;ouml;kning och felr&amp;auml;ttning &amp;auml;r kostsamt och sv&amp;aring;rt att tidsplanera, vilket p&amp;aring;verkar produktiviteten och f&amp;ouml;ruts&amp;auml;gbarheten p&amp;aring; l&amp;aring;ng sikt. Ett fel som tar n&amp;aring;gra timmar att orsaka kan kosta dagar eller veckor att hantera.&lt;/p&gt;
&lt;h4&gt;S&amp;auml;nker motivationen&lt;/h4&gt;
&lt;p&gt;N&amp;auml;r en medarbetare beh&amp;ouml;ver jobba &amp;ouml;vertid f&amp;ouml;r att f&amp;ouml;rs&amp;ouml;ka leva upp till en plan som best&amp;auml;mts av n&amp;aring;gon annan. s&amp;aring; &amp;auml;r det knappast bra f&amp;ouml;r motivationen.&lt;/p&gt;
&lt;p&gt;Sett ur motivationsperspektivet &amp;auml;r kortvarig och frivillig &amp;ouml;vertid sannolikt mindre skadlig, just eftersom den v&amp;auml;ljs frivilligt. Dock f&amp;aring;r vi vara vaksamma p&amp;aring; att gr&amp;auml;nsen mellan frivilligt och p&amp;aring;tvingat ibland kan vara suddig. N&amp;auml;r ett visst beteende, t.ex. att jobba l&amp;aring;nga dagar, satt sig i v&amp;auml;ggarna styrs vi mer av det &amp;auml;n vi ibland vill erk&amp;auml;nna ens f&amp;ouml;r oss sj&amp;auml;lva.&lt;/p&gt;
&lt;h4&gt;&amp;Ouml;kar &amp;aring;ngest och depression och p&amp;aring;verkar familjelivet&lt;/h4&gt;
&lt;p&gt;Den forskning som oftast n&amp;auml;mns kommer fr&amp;aring;n industrin. D&amp;auml;r man uppt&amp;auml;ckt att allvarliga olyckor l&amp;auml;ttare intr&amp;auml;ffar n&amp;auml;r arbetare jobbar&amp;nbsp;&amp;ouml;vertid och &amp;auml;r tr&amp;ouml;tta.&lt;/p&gt;
&lt;p&gt;En studie gjord av University College i London p&amp;aring; 2000 medel&amp;aring;lders kontorsarbetare kom fram till att de som arbetat i snitt elva timmar per dygn hade runt 2,5 g&amp;aring;nger s&amp;aring; ofta perioder av depressiva sjukdomar som de som bara arbetat 7-8 timmar per dygn. [4]&lt;/p&gt;
&lt;p&gt;Att l&amp;aring;nga dagar och veckor p&amp;aring;verkar den som har en familj (och f&amp;ouml;r all del sl&amp;auml;kt och v&amp;auml;nner) kan tyckas uppenbart, men &amp;auml;r det kanske inte alltid. Jag diskuterade sj&amp;auml;lv detta med en mentor i branschen, och kommenterade att jag inte reser s&amp;aring; mycket som konsult att det borde p&amp;aring;verka mina barn. &amp;quot;That's what you think&amp;quot;, var hans svar. Omedelbart ins&amp;aring;g jag vilken enorm h&amp;auml;ndelse det var f&amp;ouml;r mig som liten n&amp;auml;r min pappa kom hem fr&amp;aring;n sina tj&amp;auml;nsteresor, och d&amp;aring; hade han nog &amp;auml;nd&amp;aring; bara varit borta ett par dagar.&lt;/p&gt;
&lt;h4&gt;F&amp;ouml;rs&amp;auml;mrar talangmarknadserbjudandet&lt;/h4&gt;
&lt;p&gt;Det &amp;auml;r inte orimligt att tro att ett f&amp;ouml;retag som blir k&amp;auml;nt f&amp;ouml;r att l&amp;aring;ta sina anst&amp;auml;llda arbeta l&amp;aring;nga perioder av &amp;ouml;vertid gradvis blir mindre attraktiva som arbetsgivare.&lt;/p&gt;
&lt;h4&gt;Varf&amp;ouml;r anv&amp;auml;nder vi &amp;ouml;vertid?&lt;/h4&gt;
&lt;p&gt;Om &amp;ouml;vertid &amp;auml;r s&amp;aring; problematiskt, varf&amp;ouml;r &amp;auml;r det fortfarande s&amp;aring; vanligt?&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Det fungerar, p&amp;aring; kort sikt&lt;/li&gt;
    &lt;li&gt;De negativa effekterna kommer med f&amp;ouml;rdr&amp;ouml;jning. N&amp;auml;r v&amp;auml;l problemen uppst&amp;aring;r &amp;auml;r det inte alls s&amp;auml;kert att vi kopplar dem till anv&amp;auml;ndadet av &amp;ouml;vertid. Paradoxalt nog kanske vi v&amp;auml;ljer att jobba &amp;auml;nnu mer &amp;ouml;vertid f&amp;ouml;r att f&amp;ouml;rs&amp;ouml;ka l&amp;ouml;sa problemet, vilket bara f&amp;ouml;rv&amp;auml;rrar situationen.&lt;/li&gt;
    &lt;li&gt;Kostnaderna &amp;auml;r inte synliga, t.ex. kostnaden f&amp;ouml;r personaloms&amp;auml;ttning&lt;/li&gt;
    &lt;li&gt;Synen p&amp;aring; medarbetare som &amp;quot;resurser&amp;quot; som ska &amp;quot;allokeras&amp;quot; abstraherar bort problemen&lt;/li&gt;
    &lt;li&gt;Intuitivt k&amp;auml;nner vi att fler timmar borde leda till att mer blir gjort&lt;/li&gt;
    &lt;li&gt;V&amp;aring;r passion f&amp;ouml;r det vi g&amp;ouml;r driver oss att arbeta mycket&lt;/li&gt;
    &lt;li&gt;Vi &amp;auml;r r&amp;auml;dda f&amp;ouml;r att vi inte visar framf&amp;ouml;tterna tillr&amp;auml;ckligt mycket om vi s&amp;auml;ger nej till &amp;ouml;vertid&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;V&amp;auml;gar fram&amp;aring;t&lt;/h3&gt;
&lt;h4&gt;Kontinuerlig omprioritering&lt;/h4&gt;
&lt;p&gt;Genom att prioritera utvecklingsarbetet per funktion och kvalitet, kan vi se till att nyckelegenskaper hos produkten f&amp;auml;rdigst&amp;auml;lls tidigt i projektet. D&amp;aring; &amp;ouml;kar sannolikheten att vi kan h&amp;aring;lla tidplaner och budgetar genom att anpassa omf&amp;aring;nget i produkten ellt eftersom vi l&amp;auml;r oss mer om vad som &amp;auml;r g&amp;ouml;rbart inom de satta ramarna - ist&amp;auml;llet f&amp;ouml;r att jobba &amp;ouml;vertid.&lt;/p&gt;
&lt;p&gt;Detta &amp;auml;r v&amp;auml;gen vi g&amp;aring;r n&amp;auml;r vi i scrum anv&amp;auml;nder en noggrant prioriterad produktbacklog och utvecklar produkten i stabila inkrement.&lt;/p&gt;
&lt;h4&gt;Fler h&amp;ouml;gproduktiva timmar&lt;/h4&gt;
&lt;p&gt;&amp;Ouml;vertid &amp;auml;r ett s&amp;auml;tt att l&amp;auml;gga till fler timmar av arbete till ett utvecklingsprojekt. Vilka andra s&amp;auml;tt finns det att l&amp;auml;gga till fler timmar?&lt;/p&gt;
&lt;p&gt;Inga, kan tyckas, om man endast r&amp;auml;knar antal timmar. Men om man nyanserar m&amp;aring;let och formulerar om det som att l&amp;auml;gga till fler h&amp;ouml;gproduktiva timmar till arbetet, s&amp;aring; &amp;ouml;ppnar sig ytterligare en m&amp;ouml;jlighet. Den m&amp;ouml;jligheten handlar om att konvertera de timmar som idag &amp;auml;r l&amp;aring;gproduktiva till h&amp;ouml;gproduktiva.&lt;/p&gt;
&lt;p&gt;Detta &amp;auml;r den v&amp;auml;g vi g&amp;aring;r n&amp;auml;r vi v&amp;auml;ljer att fokusera p&amp;aring; &amp;quot;servant leadership&amp;quot;, som vi g&amp;ouml;r med t.ex. scrum. M&amp;aring;let f&amp;ouml;r en st&amp;ouml;ttande ledare &amp;auml;r att hj&amp;auml;lpa sin organisation att bli mer produktiv p&amp;aring; ett uth&amp;aring;lligt s&amp;auml;tt. En st&amp;ouml;ttande ledare hj&amp;auml;lper till att konvertera l&amp;aring;gproduktiva till h&amp;ouml;gproduktiva timmar.&lt;/p&gt;
&lt;h4&gt;Uth&amp;aring;lligt tempo&lt;/h4&gt;
&lt;p&gt;Ett slagord i den agila r&amp;ouml;relsen &amp;auml;r &amp;quot;sustainable pace&amp;quot;. Ett utvecklingsteam ska kunna arbeta utan bortre tidsgr&amp;auml;ns med det tempo man h&amp;aring;ller. Det betyder att man h&amp;aring;ler sig till en rimlig l&amp;auml;ngd p&amp;aring; arbetsdagen, tar sina helger ledigt och unnar sig semester d&amp;aring; och d&amp;aring;. Utan vilan blir inte tempot uth&amp;aring;lligt.&lt;/p&gt;
&lt;h4&gt;L&amp;auml;s mer&lt;/h4&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons&quot;&gt;[1] Why Crunch Mode Doesn't Work &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.salon.com/2012/03/14/bring_back_the_40_hour_work_week/&quot;&gt;[2] Bring Back the 40-hour Work Week, Sara Robinson, Salon.com &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.adlibris.com/se/product.aspx?isbn=0767907698&quot;&gt;[3] Slack, Tom deMarco &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.nyteknik.se/nyheter/karriarartiklar/article247778.ece&quot;&gt;[4] &amp;Ouml;vertid ger &amp;ouml;kad risk f&amp;ouml;r depression &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.hcgexperts.com/scheduled-overtime-effect-on-construction-projects.php&quot;&gt;[5] Scheduled Overtime Effect on Construction Projects &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Mon, 16 Apr 2012 09:22:33 GMT</pubDate>
          <guid>http://www.citerus.se/post/804484-om-vertid-i-utvecklingsprojekt</guid>
          <link>http://www.citerus.se/post/804484-om-vertid-i-utvecklingsprojekt</link>
      </item>
       
     <item>
          <title>The dawn of the Citerus-Atomic exchange program!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/mattias-holmqvist.jpg&quot;&gt;
              &lt;p&gt;Tomorrow it's time for me to embark the plane on my journey towards Grand Rapids, MI and the start of the first episode of our exchange program with Atomic Object.&lt;/p&gt;
&lt;p&gt;I'm looking forward to meeting all of the cool people of Atomic and no doubt I will learn a lot of new stuff.&lt;/p&gt;
&lt;p&gt;I will have the chance to work with Atomic during a week on one of their Ruby on Rails projects. This is really exciting since this is completely new ground for me. Although I've looked at Ruby (and Rails), I've never had the opportunity to work with it professionally.&lt;/p&gt;
&lt;p&gt;I've also heard there will be chances to see breweries, bike races and have nice dinners and it will be nice to see what Grand Rapids has to offer.&lt;/p&gt;
&lt;p&gt;In May, Matt Fletcher from Atomic will continue this program by joining us for a week and everyone at Citerus are looking forward to his arrival!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.atomicobject.com&quot;&gt;www.atomicobject.com&lt;/a&gt;&lt;/p&gt;
          </description>
          <pubDate>Fri, 13 Apr 2012 14:23:11 GMT</pubDate>
          <guid>http://www.citerus.se/post/800899-the-dawn-of-the-citerus-atomic-exchange</guid>
          <link>http://www.citerus.se/post/800899-the-dawn-of-the-citerus-atomic-exchange</link>
      </item>
       
     <item>
          <title>NFC i Android - Okomplicerat och roligt!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/android_nfc.png&quot;&gt;
              &lt;p&gt;Near Field Communication, NFC, &amp;auml;r en sp&amp;auml;nnande teknologi med m&amp;aring;nga m&amp;ouml;jligheter. Kanske inte minst betall&amp;ouml;sningar som vi f&amp;ouml;rhoppningsvis f&amp;aring;r se ute i butikerna inom en &amp;ouml;versk&amp;aring;dlig framtid. Trots att jag har haft en telefon med NFC-teknologi i &amp;ouml;ver ett &amp;aring;r nu, f&amp;ouml;rst Nexus S och nu Galaxy Nexus, s&amp;aring; har jag aldrig nyttjat funktionen. Dels f&amp;ouml;r att det inte funnits n&amp;aring;gra intressanta till&amp;auml;mpningar och dels f&amp;ouml;r att jag sj&amp;auml;lv inte hittat n&amp;aring;gon sp&amp;auml;nnande till&amp;auml;mpning att sj&amp;auml;lv implementera. Tills h&amp;auml;romdagen.&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r att f&amp;aring; tillg&amp;aring;ng till NFC-funktioner kr&amp;auml;vs f&amp;ouml;ljande tillst&amp;aring;nd:&lt;/p&gt;
&lt;pre class=&quot;sh_xml&quot;&gt;
&amp;lt;uses-permission android:name=&amp;quot;android.permission.NFC&amp;quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;
&lt;/pre&gt;
&lt;p&gt;I mitt fall beh&amp;ouml;ver jag &amp;auml;ven API-niv&amp;aring; 10 f&amp;ouml;r att kunna l&amp;auml;sa och skriva till taggarna. Det betyder dock inte att man m&amp;aring;ste kr&amp;auml;va denna API-niv&amp;aring;. Om NFC-funktionerna inte &amp;auml;r en n&amp;ouml;dv&amp;auml;ndighet f&amp;ouml;r appen s&amp;aring; kan man helt enkelt utesluta dessa f&amp;ouml;r telefoner som saknar denna m&amp;ouml;jlighet.&lt;/p&gt;
&lt;pre class=&quot;sh_java&quot;&gt;
if(Build.VERSION.SDK_INT &amp;lt; Build.VERSION_CODES.GINGERBREAD_MR1) {
// do whatever necessary to hide NFC features
}
&lt;/pre&gt;
&lt;p&gt;Man beh&amp;ouml;ver &amp;auml;ven kontrollera att telefonen har st&amp;ouml;d f&amp;ouml;r NFC, dvs om den har ett NFC-chip. Det g&amp;ouml;r man enklast genom att kolla om NfcAdapter.getDefaultAdapter(context) returnerar null. I RemoteStick finns m&amp;ouml;jligheten att b&amp;aring;da skriva och l&amp;auml;sa fr&amp;aring;n taggar. Taggarna m&amp;aring;ste n&amp;auml;mligen f&amp;ouml;rst programmeras med information om vilka enheter som ska styras och p&amp;aring; vilket s&amp;auml;tt. F&amp;ouml;r detta anv&amp;auml;nder jag en separat aktivitet i appen. H&amp;auml;r v&amp;auml;ljer man vilka enheter som ska styras och p&amp;aring; vilket s&amp;auml;tt och sedan h&amp;aring;ller man helt enkelt upp taggen f&amp;ouml;r telefonen f&amp;ouml;r att programmera den. F&amp;ouml;r att undvika att andra appar ocks&amp;aring; f&amp;ouml;rs&amp;ouml;ker l&amp;auml;sa av taggen i detta skede kan man f&amp;aring;nga upp intents och hindra andra aktiviteter att f&amp;aring; dessa. Detta kallas Foreground Dispatch.&lt;/p&gt;
&lt;pre class=&quot;sh_java&quot;&gt;
public void onPause() {

    super.onPause();

    mAdapter.disableForegroundDispatch(this);

}


public void onResume() {

    super.onResume();

    mAdapter.enableForegroundDispatch(this, pendingIntent, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;intentFiltersArray, techListsArray);

}


public void onNewIntent(Intent intent) {

    Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

    //do something with tagFromIntent

}
&lt;/pre&gt;
&lt;p&gt;PendingIntent och IntentFilter skapas p&amp;aring; f&amp;ouml;ljande s&amp;auml;tt:&lt;/p&gt;
&lt;pre class=&quot;sh_java&quot;&gt;
PendingIntent pendingIntent = PendingIntent.getActivity(

    this, 0, new Intent(this, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);


IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);

    try {

        ndef.addDataType(&amp;quot;*/*&amp;quot;);    
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Handles all MIME based dispatches.
            You should specify only the ones that you need. */
    }

    catch (MalformedMimeTypeException e) {

        throw new RuntimeException(&amp;quot;fail&amp;quot;, e);

    }

   intentFiltersArray = new IntentFilter[] {ndef, };
&lt;/pre&gt;
&lt;p&gt;Skrivning till taggen g&amp;aring;r till s&amp;aring; h&amp;auml;r (om &amp;auml;n typiskt i flera steg):&lt;/p&gt;
&lt;pre class=&quot;sh_java&quot;&gt;
Ndef tag = Ndef.get(tagFromIntent);
...
tag.connect();
tag.writeNdefMessage(new NdefMessage(new NdefRecord[] { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new NdefRecord(NdefRecord.TNF_MIME_MEDIA,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;ldquo;application/org.remotestick&amp;rdquo;.toBytes(), new byte[0], payload) }));
tag.close();
&lt;/pre&gt;
&lt;p&gt;Jag vill att taggen ska tolkas som MIME-data med typen &amp;ldquo;application/org.remotestick&amp;rdquo;. Detta g&amp;ouml;r det betydligt l&amp;auml;ttare att identifiera RemoteStick-programmerade taggar n&amp;auml;r de senare l&amp;auml;ses av. Payload i det h&amp;auml;r fallet &amp;auml;r den byte-array som skrivs till taggen och vars format, som jag definierat sj&amp;auml;lv, &amp;auml;r ov&amp;auml;sentligt f&amp;ouml;r denna artikel. N&amp;auml;r en tagg sedan l&amp;auml;ses in vill jag inte &amp;ouml;ppna RemoteStick utan bara utf&amp;ouml;ra de kommandon som finns lagrade. Det naturliga vore h&amp;auml;r att s&amp;auml;tta ett intent-filter p&amp;aring; en BroadcastReceiver eftersom jag egentligen inte vill &amp;ouml;ppna RemoteStick men intents f&amp;ouml;r NFC-taggar skickas bara till aktiviteter. I fallet RemoteStick ser d&amp;auml;rf&amp;ouml;r manifestet ut s&amp;aring;h&amp;auml;r:&lt;/p&gt;
&lt;pre class=&quot;sh_xml&quot;&gt;

&amp;lt;activity android:name=&amp;quot;.activities.NfcCommandDispatcher&amp;quot;&amp;gt;&amp;lt;/activity&amp;gt;
&amp;lt;action android:name=&amp;quot;android.nfc.action.NDEF_DISCOVERED&amp;quot;&amp;gt;&amp;lt;/action&amp;gt;
&amp;lt;category android:name=&amp;quot;android.intent.category.DEFAULT&amp;quot;&amp;gt;&amp;lt;/category&amp;gt;
&amp;lt;data android:mimetype=&amp;quot;application/org.remotestick&amp;quot;&amp;gt;&amp;lt;/data&amp;gt;
                    
&lt;/pre&gt;
&lt;p&gt;Och i aktivteten (null checks och try-catch exkluderade):&lt;/p&gt;
&lt;pre class=&quot;sh_java&quot;&gt;
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
    Intent intent = getIntent();

Tag tagExtra = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

Ndef tag = Ndef.get(tagExtra);

tag.connect();

NdefMessage msg = tag.getNdefMessage();

for (NdefRecord rec : msg.getRecords()) {

    byte[] payload = rec.getPayload();

    // parse payload

    // send broadcast intent

}

tag.close();

finish();
}
&lt;/pre&gt;
&lt;p&gt;RemoteStick beh&amp;ouml;ver allts&amp;aring; inte vara k&amp;ouml;randes f&amp;ouml;r att taggarna ska l&amp;auml;sas in av programmet. Aktiviteten l&amp;auml;ser in och tolkar datat fr&amp;aring;n taggen och skickar det vidare till en BroadcastReceiver. Faktum &amp;auml;r att det &amp;auml;r samma BroadcastReceiver som anv&amp;auml;nds i andra sammanhang (i integrationen med apparna Locale och Tasker) s&amp;aring; &amp;auml;ven om en dispatcher p&amp;aring; detta vis kan k&amp;auml;nnas aningen ful s&amp;aring; integrerade det v&amp;auml;ldigt bra med redan befintlig kod. Just den h&amp;auml;r till&amp;auml;mpningen kan till exempel anv&amp;auml;ndas f&amp;ouml;r att sl&amp;auml;cka ner hela huset med en tagg vid s&amp;auml;ngkanten eller sl&amp;aring; p&amp;aring; belysning n&amp;auml;r man kommer hem med en tagg vid entr&amp;eacute;d&amp;ouml;rren. Hur skulle du vilja se NFC-teknologin anv&amp;auml;ndas?&lt;/p&gt;
          </description>
          <pubDate>Tue, 10 Apr 2012 11:33:56 GMT</pubDate>
          <guid>http://www.citerus.se/post/792787-nfc-i-android-okomplicerat-och</guid>
          <link>http://www.citerus.se/post/792787-nfc-i-android-okomplicerat-och</link>
      </item>
       
     <item>
          <title>Värdet av Story Points</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/bjorn-andersson.png&quot;&gt;
              &lt;p&gt;&amp;quot;Varf&amp;ouml;r anv&amp;auml;nder vi inte helt enkelt timmar?&amp;quot; &amp;auml;r en fr&amp;aring;ga som ofta dyker upp. Det &amp;auml;r l&amp;auml;tt att f&amp;ouml;rledas att tro att estimering i timmar ger en b&amp;auml;ttre noggrannhet och tillf&amp;ouml;rlitlighet. Jag vill peka p&amp;aring; n&amp;aring;gra exempel som visar p&amp;aring; styrkan med Story Points och varf&amp;ouml;r du b&amp;ouml;r anv&amp;auml;nda dem ist&amp;auml;llet.&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r det f&amp;ouml;rsta m&amp;aring;ste vi acceptera att estimering av ett arbete&amp;nbsp;&amp;auml;r per definition betingat med en viss os&amp;auml;kerhet. Det &amp;auml;r just ett estimat vi ska leverera, ofta med en rad os&amp;auml;kra parametrar s&amp;aring;som; f&amp;ouml;r&amp;auml;nderliga krav, otydliga klarkriterier, olika m&amp;ouml;jliga tekniska l&amp;ouml;sningar, samt teknisk komplexitet. Visst skulle vi med m&amp;ouml;da, kunna klarg&amp;ouml;ra dessa os&amp;auml;kerheter men ofta kostar det mer &amp;auml;n det smakar. Vi vill leverera ett lagom gott estimat med minimal anstr&amp;auml;ngning.&lt;/p&gt;
&lt;p&gt;Det har visat sig att kostnaden f&amp;ouml;r att ge s&amp;auml;krare estimat v&amp;auml;xer exponentiellt. Ofta &amp;auml;r det initiala, grova estimatet tillr&amp;auml;ckligt n&amp;auml;ra den verkliga storleken. Det f&amp;ouml;ruts&amp;auml;tter dock att en viss bearbetning av kraven har gjorts tidigare, s&amp;aring; att man vet vad man estimerar. De g&amp;aring;nger estimat felar g&amp;ouml;r de ofta det &amp;aring;t b&amp;aring;da h&amp;aring;ll s&amp;aring; att felen till viss del tar ut varandra.&lt;/p&gt;
&lt;p&gt;Ett estimat skall ge oss en del av det beslutsunderlag som beh&amp;ouml;vs f&amp;ouml;r att kunna prioritera backloggen. Det beh&amp;ouml;vs &amp;auml;ven f&amp;ouml;r att lyckas planera in en lagom stor m&amp;auml;ngd arbete i varje sprint . Med estimatet kan vi &amp;auml;ven ta fram l&amp;auml;ngre prognoser f&amp;ouml;r vad som kan levereras om 6 m&amp;aring;nader eller ett &amp;aring;r. I alla dessa fall kan vi acceptera en viss os&amp;auml;kerhet i estimatet.&lt;/p&gt;
&lt;h4&gt;Problematiken&lt;/h4&gt;
&lt;p&gt;Ett problem med anv&amp;auml;ndningen av timmar &amp;auml;r den falska exaktheten man&amp;nbsp;tror sig f&amp;aring;.&amp;nbsp; Det &amp;auml;r l&amp;auml;tt att r&amp;auml;kna fram hur m&amp;aring;nga mantimmar som ryms i sprinten och f&amp;ouml;rledas att planera efter detta. D&amp;aring; &amp;auml;r det l&amp;auml;tt h&amp;auml;nt att man tar p&amp;aring; sig f&amp;ouml;r mycket jobb. Om det saknas n&amp;aring;gra timmar f&amp;ouml;r att f&amp;aring; med den d&amp;auml;r sista viktiga storyn kan man t&amp;auml;nka sig att n&amp;aring;gon vill l&amp;ouml;sa detta genom att sl&amp;auml;nga in ytterligare en person i teamet f&amp;ouml;r just denna sprint. I praktiken kommer det troligen falera kapitalt. Den nya personen &amp;auml;r kanske inte insatt i dom&amp;auml;nen och har sv&amp;aring;rt att leverera fullt ut. Han eller hon kommer beh&amp;ouml;va mycket hj&amp;auml;lp av sina kollegor, vilket leder till att &amp;auml;ven deras effektivitet minskar. Dessutom har gruppdynamiken rubbats vilket &amp;auml;ven det leder till minskad effektivitet f&amp;ouml;r hela gruppen. I praktiken har v&amp;auml;ldigt lite vunnits av den nya resursen och ibland kan det ist&amp;auml;llet varit en ren kostnad.&lt;/p&gt;
&lt;p&gt;Dessutom &amp;auml;r resultatet av en timmes jobb olika beroende p&amp;aring; vem som utf&amp;ouml;r arbetet. Estimaten &amp;auml;r d&amp;auml;rf&amp;ouml;r personberoende och blir f&amp;ouml;rlegade n&amp;auml;r teamet f&amp;ouml;r&amp;auml;ndras. Vid en sprintplanering blir det viktigare att veta exakt vem som ska utf&amp;ouml;ra arbetet f&amp;ouml;r att i realiteten veta om det kommer hinnas med eller inte. Detta &amp;auml;r en detaljstyrning som varken &amp;auml;r &amp;ouml;nskv&amp;auml;rd eller effektiv och som med f&amp;ouml;rdel undviks.&lt;/p&gt;
&lt;h4&gt;Story Points&lt;/h4&gt;
&lt;p&gt;N&amp;auml;r man estimerar m.h.a Story Points m&amp;auml;ter man varje story relativt varandra. Detta inneb&amp;auml;r att det spelar ingen roll om en Story Point inneb&amp;auml;r en eller tio timmars jobb. Story A kommer alltid att vara dubbelt s&amp;aring; stor som story B. F&amp;ouml;rdelen med denna relativitet &amp;auml;r att det g&amp;ouml;r estimaten mer robusta och underl&amp;auml;ttar v&amp;aring;ra planeringar, b&amp;aring;de l&amp;aring;ngsiktigt och kortsiktigt.&lt;/p&gt;
&lt;h4&gt;F&amp;ouml;rdelen f&amp;ouml;r teamet&lt;/h4&gt;
&lt;p&gt;Estimeringarna kommer aldrig att bli f&amp;ouml;rlegade, s&amp;aring; l&amp;auml;nge kraven h&amp;aring;ller sig intakta. Dessutom kan inte produkt&amp;auml;garen ifr&amp;aring;gas&amp;auml;tta teamets estimat p&amp;aring; samma s&amp;auml;tt som om man hade pratat om timmar. &amp;quot;Det d&amp;auml;r kan v&amp;auml;l aldrig ta &amp;aring;tta timmar att g&amp;ouml;ra?&amp;quot; skulle kunna myntas. D&amp;auml;remot &amp;auml;r det sv&amp;aring;rt f&amp;ouml;r n&amp;aring;gon att p&amp;aring;st&amp;aring; &amp;quot;Det d&amp;auml;r kan v&amp;auml;l aldrig ta 5 Story Points att g&amp;ouml;ra?&amp;quot; utan att j&amp;auml;mf&amp;ouml;ra med andra krav.&lt;/p&gt;
&lt;p&gt;Andra f&amp;ouml;rdelar med anv&amp;auml;ndningen av&amp;nbsp;Story Points &amp;auml;r att det ger en enklare sprintplanering. M&amp;auml;ngden jobb som kan planeras in beror d&amp;aring; endast p&amp;aring; teamets historiska velocitet. Komplexitet s&amp;aring;som &amp;auml;ndringar i gruppsammans&amp;auml;ttning eller team med olika velocitet beh&amp;ouml;ver d&amp;aring; inte tas i beaktande. Historiskt vet vi m&amp;auml;ngden Story Points som brukar klaras av i en sprint. Har inget &amp;auml;ndrat gruppens f&amp;ouml;ruts&amp;auml;ttningar s&amp;aring; &amp;auml;r v&amp;aring;r b&amp;auml;sta gissning att kommande sprint br&amp;auml;nner lika m&amp;aring;nga po&amp;auml;ng.&lt;/p&gt;
&lt;p&gt;&amp;Auml;ven om gruppsammans&amp;auml;ttningen skulle f&amp;ouml;r&amp;auml;ndras h&amp;aring;ller v&amp;aring;ra estimat fortfarande. Det &amp;auml;r bara teamens velocitet som f&amp;ouml;r&amp;auml;ndras och den kommer vi empiriskt ta reda p&amp;aring;. Estimaten &amp;auml;r inte l&amp;auml;ngre personberoende.&lt;/p&gt;
&lt;h4&gt;F&amp;ouml;rdelen f&amp;ouml;r Produkt&amp;auml;garen&lt;/h4&gt;
&lt;p&gt;L&amp;aring;ngsiktigt tillhandah&amp;aring;ller detta mer tillf&amp;ouml;rlitliga prognoser som sp&amp;auml;nner &amp;ouml;ver flera sprintar. Eftersom vi vet att estimaten endast f&amp;ouml;r&amp;auml;ndras om kraven &amp;auml;ndras, kan vi k&amp;auml;nna oss s&amp;auml;kra p&amp;aring; att dessa prognoser h&amp;aring;ller. Produkt&amp;auml;garen kan d&amp;aring; med god framf&amp;ouml;rh&amp;aring;llning kommunicera detta till kunden och ge dem trov&amp;auml;rdiga l&amp;ouml;ften eller f&amp;ouml;rhoppningar avseende kommande releaser.&lt;/p&gt;
&lt;p&gt;Om n&amp;aring;gra nya krav beh&amp;ouml;ver l&amp;auml;ggas till i backloggen &amp;auml;r det enkelt att se vilka av de l&amp;auml;gre prioriterade kraven som m&amp;aring;ste sk&amp;auml;ras bort f&amp;ouml;r att f&amp;aring; plats med det nytillkomna.&lt;/p&gt;
&lt;p&gt;Vid f&amp;ouml;r&amp;auml;ndring i teamens velocitet kan snabbt en ny prognos tas fram som speglar den nya situationen. Vi beh&amp;ouml;ver inte s&amp;auml;tta oss i nya estimeringsm&amp;ouml;ten f&amp;ouml;r att g&amp;aring; igenom backloggen p&amp;aring; nytt.&lt;/p&gt;
&lt;h4&gt;Sammanfattning&lt;/h4&gt;
&lt;p&gt;Story Points kan verka skr&amp;auml;mmande och konstigt f&amp;ouml;r den oinvigde. Men med lite eftertanke inser man att de f&amp;ouml;renklar v&amp;aring;rt dagliga arbete och ger oss en rad f&amp;ouml;rdelar. Inte bara f&amp;ouml;r teamet, utan f&amp;ouml;r hela organisationen.&lt;/p&gt;
          </description>
          <pubDate>Fri, 30 Mar 2012 10:11:20 GMT</pubDate>
          <guid>http://www.citerus.se/post/776198-v-rdet-av-story-points</guid>
          <link>http://www.citerus.se/post/776198-v-rdet-av-story-points</link>
      </item>
       
     <item>
          <title>Citerus 2 707 m.ö.h!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/KasbahMain.jpg&quot;&gt;
              &lt;p&gt;I f&amp;ouml;rra veckan var det dags f&amp;ouml;r v&amp;aring;r &amp;aring;rliga f&amp;ouml;rl&amp;auml;ngda Citerusdag. Julfesten i december hade avsl&amp;ouml;jat resm&amp;aring;let; vi skulle till Marocko f&amp;ouml;rstod vi snabbt n&amp;auml;r vi kom in till kontoret som var omstylat med hj&amp;auml;lp av kuddar, lyktor, tyger och t&amp;auml;lt. Sedan dess har vi l&amp;auml;st in oss lite p&amp;aring; Atlasbergen, och det s&amp;aring; kallade &amp;quot;Kasbah&amp;quot; vi skulle bes&amp;ouml;ka i byn Imlil som ligger 1,5 timmes bussresa fr&amp;aring;n Marrakech.&lt;/p&gt;
&lt;p&gt;Ett kasbah &amp;auml;r ett sorts fort. Kasbahn var boplatsen f&amp;ouml;r den lokala ledaren och fungerade &amp;auml;ven som f&amp;ouml;rsvar n&amp;auml;r staden var under attack. En kasbah har h&amp;ouml;ga murar som vanligtvis inte har n&amp;aring;gra f&amp;ouml;nster. Ofta byggdes de p&amp;aring; en h&amp;ouml;jd f&amp;ouml;r att g&amp;ouml;ra dem enklare att f&amp;ouml;rsvara, s&amp;aring;&amp;nbsp;var &amp;auml;ven&amp;nbsp;fallet f&amp;ouml;r v&amp;aring;rt kasbah - Kasbah du Toubkal.&lt;/p&gt;
&lt;p&gt;Namnet kommer fr&amp;aring;n n&amp;auml;rheten till bergstoppen Jbel Toubkal, som med sina&amp;nbsp;4 176 m.&amp;ouml;.h &amp;auml;r den h&amp;ouml;gsta bergstoppen i Atlasbergen (och faktiskt i hela Nordafrika). Bergets h&amp;ouml;ga h&amp;ouml;jd g&amp;ouml;r att toppen &amp;auml;r sn&amp;ouml;t&amp;auml;ckt under stora delar av &amp;aring;ret, och vi kan lova att det &amp;auml;r vackert!&lt;/p&gt;
&lt;p&gt;Vi anl&amp;auml;nde onsdag lunch, efter en wi-fi-enablad (och v&amp;auml;ldigt tidig) flygning fr&amp;aring;n Arlanda. Vi togs emot med traditionellt, s&amp;ouml;tt myntate och dadlar. D&amp;auml;refter serverade en traditionell lunch p&amp;aring; takterassen, med en magnifik utsikt under en str&amp;aring;lande sol. Eftermiddagen &amp;auml;gnade vi &amp;aring;t en rundvandring i byn innan vi satte oss f&amp;ouml;r att jobba med v&amp;aring;rt kursutbud n&amp;aring;gra timmar. Ett innovativt g&amp;auml;ng hj&amp;auml;lptes &amp;aring;t att identifiera behov, konkretisera m&amp;aring;lgrupper samt specificera kurs/workshop-inneh&amp;aring;ll f&amp;ouml;r inte mindre &amp;auml;n sex nya kurser. Skall bli sp&amp;auml;nnande att transformera dessa till f&amp;auml;rdiga kurser under &amp;aring;ret.&lt;/p&gt;
&lt;p&gt;Efter en tidig kv&amp;auml;ll, d&amp;auml;r alla somnade ovaggade, vaknade vi till ytterligare en str&amp;aring;lande dag. Efter en st&amp;auml;rkande frukost, som bestod av hemgjord yoghurt, n&amp;auml;rproducerad honung, hembakat br&amp;ouml;d, &amp;auml;gg fr&amp;aring;n byns h&amp;ouml;nor samt &amp;auml;nnu mer myntate, var det dags att bestiga ett berg. En toppbestigning av Toubkal tar minst tre dygn, varf&amp;ouml;r vi n&amp;ouml;jde oss med en dagstripp till ett n&amp;auml;rbel&amp;auml;get bergspass. Efter fyra timmars vandring bel&amp;ouml;nades vi av en fantastisk vy &amp;ouml;ver n&amp;auml;sta by, samt en v&amp;auml;lsmakande lunch serverad p&amp;aring; 2 500 meters h&amp;ouml;jd. Vi omringades snart av en flock getter, som nyfiket studerade dessa mystiska IT-konsulter.&lt;/p&gt;
&lt;p&gt;Vandringen hem&amp;aring;t kr&amp;auml;vde stor uppm&amp;auml;rksamhet, eftersom stigarna bestod av mycket l&amp;ouml;sa stenar. Alla kom dock helskinnande tillbaka till kasbaht d&amp;auml;r vi pustade ut med bad och tvagning i ett traditionellt hammam. Efter n&amp;aring;gon timmes &amp;aring;ngbad var vi redo f&amp;ouml;r ett nytt arbetspass, innan det var dags f&amp;ouml;r ytterligare en traditionell m&amp;aring;ltid. Vid det h&amp;auml;r laget hade vi l&amp;auml;rt oss att vi kunde v&amp;auml;nta en gr&amp;ouml;nsakssoppa och d&amp;auml;refter cosucous med gr&amp;ouml;nsaker (inte helt al dente enligt n&amp;aring;gra kritiker) samt en Tagine, som &amp;auml;r en sorts gryta som ofta baseras p&amp;aring; kyckling eller lamm. Tagine &amp;auml;r ocks&amp;aring; namnet p&amp;aring; k&amp;auml;rlet som maten tillagas i, det traditionella keramikfatet med toppigt lock, som st&amp;auml;lls &amp;ouml;ver &amp;ouml;ppen eld.&lt;/p&gt;
&lt;p&gt;Natten kom att bli orolig f&amp;ouml;r m&amp;aring;nga av oss, d&amp;aring; ett ov&amp;auml;der drog in med storm och regn, vilket k&amp;auml;ndes rej&amp;auml;lt i de n&amp;aring;got luftiga byggnader vi bodde i. Tur dock att ov&amp;auml;dret inte kom tidigare. Fredag morgon skulle vi &amp;auml;gna &amp;aring;t n&amp;aring;gra timmars arbete, d&amp;aring; vi planerade f&amp;ouml;r eftermiddagens artikelskrivande innan vi satte oss p&amp;aring; bussen till Marrakech.&lt;/p&gt;
&lt;p&gt;Vi tog farv&amp;auml;l av Kasbah du Toubkal (men m&amp;aring;nga av oss sa nog tyst: &amp;quot;P&amp;aring; &amp;aring;terseende!&amp;quot;)&lt;/p&gt;
&lt;p&gt;Hotellet i Marrakech hade en rej&amp;auml;l tilltagen tr&amp;auml;dg&amp;aring;rd med pool, vilket ju alltid &amp;auml;r lockande f&amp;ouml;r oss nordbor. Efter en snabbincheckning var det dags att g&amp;ouml;ra stan; vi gick till ett traditionellt &amp;quot;riad&amp;quot; f&amp;ouml;r att &amp;auml;ta lunch. En riad &amp;auml;r ett traditionellt marockanskt hus, byggt kring en innerg&amp;aring;rd. I Marrakech finns det ett or&amp;auml;kneligt antal s&amp;aring;dana som tar emot g&amp;auml;ster.&lt;/p&gt;
&lt;p&gt;Efter lunchen var det dags att utforska Medinan, den gamla muromg&amp;auml;rdade stadsk&amp;auml;rnan som &amp;auml;r Marrakech stora dragpl&amp;aring;ster. Det &amp;auml;r inte helt enkelt att hitta s&amp;aring; vi tog hj&amp;auml;lp av en guide som visade oss runt. Det stora torget Djema el-Fna &amp;auml;r Marrakechs hj&amp;auml;rta; d&amp;auml;r huserar sagober&amp;auml;ttare, ormtjusare, gnauaorkestrar, akrobater, tiggare och m&amp;aring;nga bondf&amp;aring;ngare. Precis intill torget ligger den delvis t&amp;auml;ckta souken (marknaden) d&amp;auml;r olika hantverkare har sina egna gatstumpar. Vi besl&amp;ouml;t oss f&amp;ouml;r att satsa p&amp;aring; att shoppa och pruta under l&amp;ouml;rdagen och &amp;aring;kte ist&amp;auml;llet tillbaka till hotellet f&amp;ouml;r ett arbetspass, denna g&amp;aring;ng vid poolen. Under n&amp;aring;gra koncentrerade timmar formulerade vi artiklar om olika &amp;auml;mnen, som ett led i v&amp;aring;r djupt rotade tradition att bjuda p&amp;aring; kunskap. Med oss hem till Sverige har vi ett halvt dussin artikelutkast som kommer att publiceras under v&amp;aring;ren, ytterligare lika m&amp;aring;nga ligger kvar p&amp;aring; id&amp;eacute;stadiet f&amp;ouml;r framtida bruk.&lt;/p&gt;
&lt;p&gt;Kv&amp;auml;llen &amp;auml;gnades &amp;aring;t att utforska Marrakechs nattliv. Vi kan v&amp;auml;l konstatera att den inte g&amp;aring;r av f&amp;ouml;r hackor! &amp;quot;What happens in Marrakech stays in Marrakech&amp;quot; &amp;auml;r nog en passande devis f&amp;ouml;r den h&amp;auml;r stadens partyscener.&lt;/p&gt;
&lt;p&gt;P&amp;aring; l&amp;ouml;rdagen till&amp;auml;t vi oss en sovmorgon, innan vi tog hela poolomr&amp;aring;det i besittning f&amp;ouml;r att testa Scrum-simulerings&amp;ouml;vningar! Vi hade kul, men en och annan undrande blick fick v&amp;aring;ra lego-byggen av &amp;ouml;vriga g&amp;auml;ster. P&amp;aring; eftermiddagen var det s&amp;aring; dags f&amp;ouml;r lite seri&amp;ouml;s shopping! Ett g&amp;auml;ng mycket n&amp;ouml;jda souk-bes&amp;ouml;kare kom tillbaka till hotellet med v&amp;auml;lfyllda p&amp;aring;sar med vacker keramik, sirliga tekannor och handsydda skinnpuffar. Allt som &amp;aring;terstod efter det var hemresan och sj&amp;auml;lvklart fantastiska minnen fr&amp;aring;n Marocko!&lt;/p&gt;
          </description>
          <pubDate>Wed, 28 Mar 2012 15:05:41 GMT</pubDate>
          <guid>http://www.citerus.se/post/773716-citerus-2-707-m-h</guid>
          <link>http://www.citerus.se/post/773716-citerus-2-707-m-h</link>
      </item>
       
     <item>
          <title>Bidrag från Crazy Snake - Jfokus Edition</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/pic_snakes.jpg&quot;&gt;
              &lt;p&gt;Under t&amp;auml;vlingens g&amp;aring;ng s&amp;aring;g vi m&amp;aring;nga ormar som f&amp;ouml;rs&amp;ouml;kte att vinna genom att &amp;auml;ta s&amp;aring; mycket frukt som m&amp;ouml;jligt. Andra gick in f&amp;ouml;r att d&amp;ouml;da sin motst&amp;aring;ndare n&amp;auml;r tillf&amp;auml;lle gavs.&lt;/p&gt;
&lt;p&gt;Koden till n&amp;aring;gra av t&amp;auml;vlingsbidragen hittar ni h&amp;auml;r:&amp;nbsp;&lt;a href=&quot;https://bitbucket.org/citerus/crazysnake-public-jfokus/downloads&quot;&gt;https://bitbucket.org/citerus/crazysnake-public-jfokus/downloads&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;S&amp;aring; h&amp;auml;r beskriver skaparna sina t&amp;auml;vlingsbidrag:&lt;/p&gt;
&lt;h4&gt;Skaparen av ormen Pazport-Ygge och vinnare av Crazy Snake - Jfokus Edition beskriver sin kod:&lt;/h4&gt;
&lt;p&gt;&amp;quot;Algoritmen f&amp;ouml;r att avg&amp;ouml;ra n&amp;auml;sta drag har egentligen tre steg:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Kontrollera om vi kan g&amp;ouml;ra en serie drag som i max 6 drag kommer inneb&amp;auml;ra att motst&amp;aring;ndaren d&amp;ouml;r, oavsett vad motst&amp;aring;ndaren g&amp;ouml;r.&lt;/li&gt;
    &lt;li&gt;Om det inte g&amp;aring;r, prioritera m&amp;ouml;jliga riktningar att g&amp;aring; i f&amp;ouml;r att samla frukt genom att hitta alla frukter som vi kommer n&amp;aring; f&amp;ouml;rst och r&amp;auml;kna ut avst&amp;aring;ndet mellan alla par av dessa frukter. Prioritera sen frukterna som kommer ge oss uppskattningsvis flest frukter p&amp;aring; minst tid.&lt;/li&gt;
    &lt;li&gt;Sist &amp;auml;r det ett antal kontroller att vi inte g&amp;aring;r in i en v&amp;auml;gg eller g&amp;aring;r in i ett utrymme som vi inte kan kommar ur&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Skaparen av ormen ShakeASnake beskriver sin kod:&lt;/h4&gt;
&lt;p&gt;&amp;quot;Jag implementerade min orm helt i Java. De tv&amp;aring; centrala klasserna heter Finder och Evaluator. Klassen Finder s&amp;ouml;ker efter det b&amp;auml;sta draget i en given position genom att pr&amp;ouml;va alla m&amp;ouml;jligheter, f&amp;ouml;rst ett drag fram&amp;aring;t, sedan tv&amp;aring; och tre osv tills tiden &amp;auml;r slut. Klassen Evaluator utv&amp;auml;rderar en given position f&amp;ouml;r att se vilken orm som leder. Den f&amp;ouml;rs&amp;ouml;ker bland annat hitta den n&amp;auml;rmaste frukten och se till att ormen inte trasslar in sig i sig sj&amp;auml;lv. Den senare funktionen skrev jag p&amp;aring; kort tid p&amp;aring; tisdagskv&amp;auml;llen och det blev d&amp;aring; en rekursiv algoritm. Efter Jfokus skrev jag om den till en iterativ algoritm som blev betydligt mer effektiv.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Klassen som implemeterar hj&amp;auml;rnan - ShakeASnake - g&amp;ouml;r egentligen inte s&amp;aring; mycket mer &amp;auml;n konverterar informationen i HeatState till en intern struktur som g&amp;aring;r att modifiera. Jag valde att spara frukternas positioner i en array eftersom det verkade mer effektivt &amp;auml;n en lista, men efter att ha lyssnat p&amp;aring; Cliff Click inser jag att mina 'micro benchmarks' kanske inte var helt tillf&amp;ouml;rlitliga. Jag skrev ocks&amp;aring; en egen klass Pos att anv&amp;auml;nda ist&amp;auml;llet f&amp;ouml;r Position. Eftersom det bara finns ett begr&amp;auml;nsat antal positioner k&amp;auml;ndes det on&amp;ouml;digt att allokera nya objek f&amp;ouml;r alla f&amp;ouml;rflyttningar. Klassen Pos returnerar alltid samma statiskt allokerade objekt f&amp;ouml;r en viss position, vilket ocks&amp;aring; g&amp;ouml;r att man kan j&amp;auml;mf&amp;ouml;ra positioner med hj&amp;auml;lp av == ist&amp;auml;llet f&amp;ouml;r equals.&amp;quot;&lt;/p&gt;
&lt;h4&gt;Skaparna av ormen Snakeway beskriver sin kod:&lt;/h4&gt;
&lt;p&gt;&amp;quot;Vi implementerade v&amp;aring;r ormhj&amp;auml;rna i Scala. Vi implementerade A* algoritmen f&amp;ouml;r att f&amp;aring; ormhj&amp;auml;rnan att kunna navigera f&amp;ouml;rbi hinder.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;vi inf&amp;ouml;rde logik f&amp;ouml;r att finna 'fruktkluster' s&amp;aring; att ormen skulle prioritera omr&amp;aring;den som var rika p&amp;aring; frukt. Vi jobbade ocks&amp;aring; med att balansera in att v&amp;auml;lja frukt d&amp;auml;r motst&amp;aring;ndaren inte var och att undvika frukt d&amp;auml;r v&amp;aring;r orm 'l&amp;aring;g efter' motst&amp;aring;ndaren.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Vi b&amp;ouml;rjade arbetet onsdagen innan Jfokus med ett m&amp;ouml;te d&amp;auml;r vi diskuterade strategier och tog fram en enklare spelplan innan vi hade tillg&amp;aring;ng till spelmotorn. Med (den reverse-engineerade) spelplanen kunde vi testa A*-navigeringen tidigt. Under den f&amp;ouml;ljande veckan fortsatte vi arbetet p&amp;aring; varsitt h&amp;aring;ll och vi delade koden p&amp;aring; bitbucket.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Tue, 28 Feb 2012 15:29:39 GMT</pubDate>
          <guid>http://www.citerus.se/post/732908-bidrag-fr-n-crazy-snake-jfokus</guid>
          <link>http://www.citerus.se/post/732908-bidrag-fr-n-crazy-snake-jfokus</link>
      </item>
       
     <item>
          <title>Vi heter testare </title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/ulrika-malmgren.png&quot;&gt;
              &lt;p&gt;&amp;nbsp;&amp;quot;Quality Assurance&amp;quot;. Alla anv&amp;auml;nder uttrycket: utvecklare, management, scrum masters, testare, med flera. Begreppet finns i m&amp;aring;nga branscher och &lt;a href=&quot;http://en.wikipedia.org/wiki/Quality_assurance&quot;&gt;enligt Wikipedia b&amp;ouml;rjade hantverksgillen med Quality Assurance redan under medeltiden&lt;/a&gt; f&amp;ouml;r att s&amp;auml;tta en standard p&amp;aring; sina medlemmar. Men det var f&amp;ouml;rmodligen f&amp;ouml;rst under industrirevolutionen som det tog fart ordentligt. Det var d&amp;aring; s&amp;auml;rskilda personer som fick i uppdrag att s&amp;auml;kerst&amp;auml;lla att en annan persons arbete hade ett godk&amp;auml;nt resultat.&lt;/p&gt;
&lt;p&gt;I v&amp;aring;r bransch anses det viktigt att arbeta med QA. Vi budgeterar tid och pengar f&amp;ouml;r QA, anst&amp;auml;ller speciella personer och ser till att ha QA-tasks med i sprintplaneringen. Men vad betyder det egentligen?&lt;/p&gt;
&lt;p&gt;T&amp;auml;nk p&amp;aring; hur det blir n&amp;auml;r vi byter ut akronomet &amp;quot;QA&amp;quot; mot det fullst&amp;auml;ndiga uttrycket &amp;quot;Quality Assurance&amp;quot; i n&amp;aring;gra vanliga p&amp;aring;st&amp;aring;enden:&lt;/p&gt;
&lt;p&gt;- &amp;quot;Vi har en Quality Assurance i v&amp;aring;rt team&amp;quot;&lt;br /&gt;
- &amp;quot;N&amp;auml;r du har kodat klart s&amp;aring; f&amp;aring;r Quality Assurance-specialisten titta p&amp;aring; det d&amp;auml;r&amp;quot;&lt;br /&gt;
- &amp;quot;N&amp;aring;gon Quality Assurance-person borde Quality Assurance-a den buggfixen&amp;quot;&lt;br /&gt;
- &amp;quot;Quality Assurance-arbetet g&amp;ouml;r vi i slutet p&amp;aring; sprinten&amp;quot;&lt;/p&gt;
&lt;p&gt;Visst l&amp;aring;ter det konstigt? Vad &amp;auml;r det egentligen vi s&amp;auml;ger? Menar vi verkligen att kvalitet &amp;auml;r n&amp;aring;got som en person har ansvaret f&amp;ouml;r? Menar vi verkligen att kvalitet arbetar vi med i slutet av sprinten? Kan man verkligen s&amp;auml;kerst&amp;auml;lla kvalitet? Om det g&amp;aring;r, vill vi ens g&amp;ouml;ra det?&lt;/p&gt;
&lt;p&gt;System &amp;auml;r i grunden s&amp;aring; komplexa att det &amp;auml;r praktiskt taget om&amp;ouml;jligt att faktiskt s&amp;auml;kerst&amp;auml;lla att ett program &amp;auml;r fritt fr&amp;aring;n buggar. Det g&amp;auml;ller till och med de enklaste sm&amp;aring; program och &amp;auml;r &amp;auml;nnu tydligare i st&amp;ouml;rre. Detta g&amp;ouml;r att det faktiskt &amp;auml;r om&amp;ouml;jligt f&amp;ouml;r n&amp;aring;gon, hur specialiserade p&amp;aring; &amp;quot;Quality Assurance&amp;quot; de &amp;auml;n &amp;auml;r, att kvalitetss&amp;auml;kra ett program.&lt;/p&gt;
&lt;p&gt;Men det borde egentligen inte handla om kvalitetss&amp;auml;kring, det borde handla om testning. Testning &amp;auml;r processen att sammanst&amp;auml;lla information om ett system med syftet att anv&amp;auml;nda informationen till n&amp;aring;got &lt;a href=&quot;http://www.geraldmweinberg.com/Site/Perfect_Software.html&quot;&gt;(Gerald M. Weinberg. &amp;quot;Perfect Software and Other Illusions about Testing&amp;quot;&lt;/a&gt;). Vi st&amp;auml;ller ett antal utvalda fr&amp;aring;gor genom v&amp;aring;ra tester och utv&amp;auml;rderar svaren vi f&amp;aring;r fr&amp;aring;n dem. Det vill s&amp;auml;ga, vi tar reda p&amp;aring; hur systemet beter sig givet en viss inmatning och funderar p&amp;aring; om beteendet k&amp;auml;nns rimligt och &amp;ouml;nskv&amp;auml;rt. Ibland kan vi inte sj&amp;auml;lva avg&amp;ouml;ra det och tar hj&amp;auml;lp av produkt&amp;auml;garen som &amp;auml;ger r&amp;auml;tten att besluta om systemet uppfyller dennes &amp;ouml;nskem&amp;aring;l.&lt;/p&gt;
&lt;p&gt;V&amp;aring;r f&amp;ouml;rm&amp;aring;ga och fallenhet f&amp;ouml;r att st&amp;auml;lla fr&amp;aring;gor g&amp;ouml;r testare v&amp;auml;rdefulla i tidiga skeden av utvecklingsarbeteet. Vi &amp;auml;r till exempel med p&amp;aring; planeringen och bidrar med fr&amp;aring;gor om hur specialfall ska hanteras, hur systemet ska bete&amp;nbsp;sig n&amp;auml;r uppkopplingen g&amp;aring;r ner, om andra delar av applikationen p&amp;aring;verkas, och s&amp;aring; vidare.&amp;nbsp;Ibland st&amp;auml;ller vi dumma&amp;nbsp;fr&amp;aring;gor bara f&amp;ouml;r att h&amp;aring;lla&amp;nbsp;ig&amp;aring;ng samtalet f&amp;ouml;r vi vet&amp;nbsp;att det &amp;auml;r redan p&amp;aring; planeringen som allvarliga fel s&amp;aring;som missuppfattning och grova felt&amp;auml;nk upptr&amp;auml;der och ju l&amp;auml;ngre vi diskuterar desto st&amp;ouml;rre &amp;auml;r chansen att vi uppt&amp;auml;cker dem. Vi vet att vi redan d&amp;auml;r kan bidra med att se till att kvalitet &amp;auml;r n&amp;aring;gonting&amp;nbsp;som &amp;auml;r&amp;nbsp;n&amp;auml;rvarande&amp;nbsp;i utvecklingen.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Men f&amp;ouml;r att verkligen lyckas m&amp;aring;ste&amp;nbsp;hela teamet och hela organisationen ta sitt ansvar och t&amp;auml;nka p&amp;aring; kvalitet. Det&amp;nbsp;b&amp;ouml;r genomsyra tankar och agerande hos programmerare, produkt&amp;auml;gare, linjechefer och scrum masters.&lt;/p&gt;
&lt;p&gt;Vi borde allts&amp;aring; inte kallas Quality Assurance-personer eller Quality Assurance-specialister och vi varken kan eller b&amp;ouml;r kvalitetss&amp;auml;kra n&amp;aring;got. Vi st&amp;auml;ller fr&amp;aring;gor och utv&amp;auml;rderar svaren. Vi heter testare.&lt;/p&gt;
          </description>
          <pubDate>Wed, 22 Feb 2012 12:41:58 GMT</pubDate>
          <guid>http://www.citerus.se/post/724108-vi-heter-testare</guid>
          <link>http://www.citerus.se/post/724108-vi-heter-testare</link>
      </item>
       
     <item>
          <title>Vinnare av Crazy Snake - Jfokus Edition</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/crazy_snake_icon_winner.png&quot;&gt;
              &lt;p&gt;Kort beskrivet gick t&amp;auml;vlingen ut p&amp;aring; att deltagarna skapade sin egen ormhj&amp;auml;rna och m&amp;ouml;tte en annan ormhj&amp;auml;rna i en match best&amp;aring;ende av tre heat. Den som hann &amp;auml;ta mest frukt innan tiden var ute eller &amp;ouml;verlevde n&amp;auml;r motst&amp;aring;ndaren dog vann heatet. Den ormhj&amp;auml;rna som vann flest heat blev King of the hill och fick m&amp;ouml;ta n&amp;auml;sta utmanare. F&amp;ouml;r att vinna hela t&amp;auml;vlingen g&amp;auml;llde det att vara King of the hill klockan kvart &amp;ouml;ver tre den andra t&amp;auml;vlingsdagen. Citerus tillhandah&amp;ouml;ll ett API och en testmotor.&lt;/p&gt;
&lt;p&gt;Tolv bidrag var med och t&amp;auml;vlade fr&amp;aring;n start och redan d&amp;aring; kunde man se att det skulle bli en h&amp;aring;rd kamp om titeln som King of Jfokus 2012. N&amp;auml;r andra t&amp;auml;vlingsdagen startade var det tydligt att m&amp;aring;nga hade &amp;auml;gnat f&amp;ouml;reg&amp;aring;ende kv&amp;auml;ll &amp;aring;t kodning, nya bidrag och uppdaterade bidrag gjorde kampen &amp;auml;nnu h&amp;aring;rdare. Under de tv&amp;aring; t&amp;auml;vlingsdagarna deltog totalt 24 t&amp;auml;vlingsbidrag och sammanlagt uppdaterades bidragen 67 g&amp;aring;nger.&lt;/p&gt;
&lt;p&gt;N&amp;auml;r klockan slog kvart &amp;ouml;ver tre p&amp;aring; den andra t&amp;auml;vlingsdagen korades King of Jfokus 2012 och det vinnande bidraget var Paxport-Ygge. PetSnake7 var det bidrag som vann flest matcher under t&amp;auml;vlingens g&amp;aring;ng: 70 vinster p&amp;aring; 91 spelade matcher. Under t&amp;auml;vlingsdagarna delades ocks&amp;aring; tre spurtpriser ut till den som var King of the hill just d&amp;aring;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Resultat:&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt; &lt;/strong&gt;King of Jfokus 2012 - Paxport-Ygge&lt;/li&gt;
    &lt;li&gt;Spurtpris 1 - pwnBrain&lt;/li&gt;
    &lt;li&gt;Spurtpris 2 - Nagini&lt;/li&gt;
    &lt;li&gt;Spurtpris 3 - Wurstmeister&lt;/li&gt;
    &lt;li&gt;Flest vunna matcher - PetSnake7&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ett stort tack till alla deltagare och &amp;aring;sk&amp;aring;dare f&amp;ouml;r det stora engagemanget och intresset.&lt;/p&gt;
          </description>
          <pubDate>Tue, 21 Feb 2012 08:38:42 GMT</pubDate>
          <guid>http://www.citerus.se/post/722730-vinnare-av-crazy-snake-jfokus</guid>
          <link>http://www.citerus.se/post/722730-vinnare-av-crazy-snake-jfokus</link>
      </item>
       
     <item>
          <title>Crazy Snake - Jfokus Edition!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/pic_snakes.jpg&quot;&gt;
              &lt;p&gt;Ibland handlar utmaningen om att &amp;auml;ndra en hel avdelnings arbetss&amp;auml;tt, ibland om att snabbt realisera v&amp;auml;rde ur en otymplig kodmassa, och ibland sitter sv&amp;aring;righeterna i den kod som skall skrivas. Fr&amp;aring;n stora till sm&amp;aring; utmaningar - n&amp;auml;stan alltid finns det mycket att l&amp;auml;ra och erfarenheter att utbyta. Just d&amp;auml;rf&amp;ouml;r vill vi &amp;aring;ter igen bjuda in dit till en programmeringsutmaning p&amp;aring; Jfokus. Gnugga dina genikn&amp;ouml;lar, sparka ig&amp;aring;ng din favorit-Maven-IDE och k&amp;ouml;r ig&amp;aring;ng &lt;a href=&quot;http://www.citerus.se/jfokus&quot;&gt;h&amp;auml;r&lt;/a&gt;!&lt;/p&gt;
          </description>
          <pubDate>Wed, 08 Feb 2012 10:48:33 GMT</pubDate>
          <guid>http://www.citerus.se/post/705212-crazy-snake-jfokus-edition</guid>
          <link>http://www.citerus.se/post/705212-crazy-snake-jfokus-edition</link>
      </item>
       
     <item>
          <title>Learn portable cloud development from founder of jclouds!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/Adrian-Cole_150_SV.jpg&quot;&gt;
              &lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;My goal is to make the cloud as easy and portable as the mobile phone network.&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Adrian Cole, founder of jclouds&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Citerus presents a three-day hands-on class in portable cloud development, led by Adrian Cole, the founder of jclouds. Jclouds is an open library that simplifies the development of portable cloud applications for Java and Clojure developers.&lt;/p&gt;
&lt;h3&gt;Time To Market more important when launching cloud services&lt;/h3&gt;
&lt;p&gt;Today more and more business, services and applications are using cloud services, like Amazon EC2 or Microsoft Azure, to reduce their time to market and improve their agility. &amp;quot;The cloud&amp;quot; has fundamentally changed the deployment of services and data storage, reducing to mere minutes the time taken to provision hardware and deploy an application, an improbable dream several years ago.&lt;/p&gt;
&lt;h3&gt;Obstacle in API growth&lt;/h3&gt;
&lt;p&gt;However, in recent years the number of cloud providers has skyrocketed, creating a bewildering mix of 'standard' APIs. The number of&amp;nbsp;APIs, and the variations between them, complicates the selection of cloud services for developers and users and creates vendor lock-in. Correctly choosing a vendor and understanding their API can completely determine the success of your project! Jclouds provides an easy to use, open standard for accessing cloud services with different APIs, allowing you to create portable multi-cloud applications, without having to learn or worry about the differences between multiple APIs.&lt;/p&gt;
&lt;h3&gt;Jclouds solves API issues&lt;/h3&gt;
&lt;p&gt;Jclouds started as an open Java library for Amazon's Simple Storage Service when Amazon was pioneering cloud storage. Since then jclouds has grown to provide an easy to use, idiomatic, Java and Clojure API for compute and storage across more than thirty cloud providers. Jclouds provides a natural way to develop for the cloud on the Java platform without being tied to a particular clouds supplier. Many problems and complexities relating to error handling, concurrency and unique API 'features' are managed under the surface, allowing you to focus development on the application in the cloud, rather than troubleshooting specific implementations.&lt;/p&gt;
&lt;h3&gt;Jclouds used by distinguished brands&lt;/h3&gt;
&lt;p&gt;Jclouds has been designed from the ground up to handle concurrency, support a common domain model, transparently handle differences between APIs and providers, and provide a portable abstraction while allowing you to access cloud specific features. Jclouds' limited external dependencies allow it to run in restricted environments like Google App Engine and reduce the risk of code conflict. Test stubs are provided for each provider to ensure that your cloud application is fully testable, even without an internet connection. Twitter, Adobe, Red Hat, Enstratus and Neotys are already using jclouds for cloud provisioning and storage, now you can too!&lt;/p&gt;
&lt;p&gt;Citerus are proud to offer the oppurtunity to learn cloud development in collaboration with Adrian Cole, creator of jclouds. Sign up to Adrian's unique three-day course in Stockholm on 8-10 February 2012. The course will introduce the key concepts of cloud development and the toolkit required for development. Bring your own computer as you will be writing code during the class!&lt;/p&gt;
&lt;p&gt;Links:&amp;nbsp;&lt;br /&gt;
&lt;a href=&quot;http://www.citerus.se/jclouds&quot;&gt;http://www.citerus.se/jclouds&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.jclouds.org&quot;&gt;http://www.jclouds.org&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/jclouds/jclouds&quot;&gt;https://github.com/jclouds/jclouds&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cloudsoftcorp.com&quot;&gt;http://www.cloudsoftcorp.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more information&lt;br /&gt;
Karin Edstr&amp;ouml;m, CEO Citerus AB&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se?subject=Jclouds&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;br /&gt;
Phone:&amp;nbsp;+46 733 225 227&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Wed, 23 Nov 2011 14:44:40 GMT</pubDate>
          <guid>http://www.citerus.se/post/591574-learn-portable-cloud-development-from-founder</guid>
          <link>http://www.citerus.se/post/591574-learn-portable-cloud-development-from-founder</link>
      </item>
       
     <item>
          <title>Lär dig molnutveckling från skaparen av jclouds!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/Adrian-Cole_150_SV.jpg&quot;&gt;
              &lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Jag ska g&amp;ouml;ra molnet lika l&amp;auml;tt och &amp;aring;tkomligt som mobiln&amp;auml;tet.&amp;quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Adrian Cole, skapare av jclouds&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;Tidsfaktorn allt viktigare vid lansering av tj&amp;auml;nster i molnet&lt;/h3&gt;
&lt;p&gt;Att time-to-market &amp;auml;r viktigt i mjukvarubranschen numera &amp;auml;r ingen nyhet. Men att kunna drifts&amp;auml;tta flertalet servrar, bakom en lastbalanserare, med full kontroll &amp;ouml;ver val av b&amp;aring;de operativsystem och h&amp;aring;rdvara (provisionering), f&amp;ouml;r att sedan inom n&amp;aring;gra minuter drifts&amp;auml;tta sin applikation p&amp;aring; dessa noder trodde inte m&amp;aring;nga p&amp;aring; f&amp;ouml;r n&amp;aring;gra &amp;aring;r sedan. Molnet har i grunden f&amp;ouml;r&amp;auml;ndrat hur vi idag drifts&amp;auml;tter tj&amp;auml;nster och lagrar data. Fler och fler tj&amp;auml;nster och applikationer hittar numera sitt hem i moln som t ex Amazon EC2 eller Microsoft Azure.&lt;/p&gt;
&lt;h3&gt;St&amp;ouml;testenar med API:er och testning&lt;/h3&gt;
&lt;p&gt;Under de senare &amp;aring;ren har dock antalet API:er f&amp;ouml;r molnlagring och provisionering av virtuella maskiner &amp;ouml;kat men framf&amp;ouml;rallt har antalet leverant&amp;ouml;rer skjutit i h&amp;ouml;jden. Detta har skapat en stor blandning av olika API:er som alla har likheter och skillnader. Som utvecklare och anv&amp;auml;ndare av en molntj&amp;auml;nst finns det m&amp;aring;nga aspekter att titta p&amp;aring; n&amp;auml;r det handlar om att v&amp;auml;lja API, men &amp;auml;ven vilken leverant&amp;ouml;r man v&amp;auml;ljer kan spela stor roll f&amp;ouml;r hur v&amp;auml;l tj&amp;auml;nsten passar f&amp;ouml;r anv&amp;auml;ndningsomr&amp;aring;det.&lt;br /&gt;
Testbarhet har &amp;auml;ven det varit en grundpelare i jclouds &amp;auml;nda sedan starten och tack vare de stubbade API:erna &amp;auml;r det m&amp;ouml;jligt att utveckla helt utan n&amp;auml;tverks&amp;aring;tkomst. Stubbade API:er &amp;auml;r nedladdningsbara versioner som simulerar verkliga API:er fr&amp;aring;n molntj&amp;auml;nsteleverant&amp;ouml;rer.&lt;/p&gt;
&lt;h3&gt;Jclouds l&amp;ouml;ser API-problematik&lt;/h3&gt;
&lt;p&gt;Ramverket jclouds erbjuder ett naturligt s&amp;auml;tt att b&amp;ouml;rja utveckla f&amp;ouml;r molnet p&amp;aring; Javaplattformen utan att binda sig mot en speciell molnleverant&amp;ouml;r. M&amp;aring;nga problem relaterade till felhantering, samtidighet och skillnader mellan olika API:er och leverant&amp;ouml;rer hanteras under ytan p&amp;aring; ett konsekvent s&amp;auml;tt, utan att f&amp;ouml;r den sakens skulle g&amp;ouml;mmas f&amp;ouml;r utvecklaren. Jclouds har en pragmatisk syn p&amp;aring; portabilitet, med en gemensam dom&amp;auml;nmodell f&amp;ouml;r de flesta anv&amp;auml;ndningsfall, men d&amp;auml;r det &amp;auml;ven finns st&amp;ouml;d f&amp;ouml;r att hantera skillnaderna mellan API:er och olika leverant&amp;ouml;rer.&lt;/p&gt;
&lt;h3&gt;Stora plattformar&amp;nbsp;anv&amp;auml;nder jclouds&lt;/h3&gt;
&lt;p&gt;Amazon var tidigt ute med sin tj&amp;auml;nst Simple Storage Service (S3) och jclouds startades n&amp;auml;r de d&amp;aring; tillg&amp;auml;ngliga Java-biblioteken f&amp;ouml;r S3 inte h&amp;ouml;ll m&amp;aring;ttet g&amp;auml;llande samtidighet och skalbarhet. Fr&amp;aring;n att ha varit ett projekt som skulle st&amp;ouml;dja lagring p&amp;aring; Amazon S3 har initiativet v&amp;auml;xt betydligt. Numera handlar jclouds om att ge ett enkelt och idiomatiskt alternativ f&amp;ouml;r molnutveckling i Java eller Clojure, jclouds har idag st&amp;ouml;d f&amp;ouml;r &amp;ouml;ver 30 molnleverant&amp;ouml;rer. Jclouds &amp;auml;r fr&amp;aring;n grunden designat f&amp;ouml;r samtidighet och d&amp;aring; beroenden till externa bibliotek &amp;auml;r f&amp;aring; till antalet, l&amp;ouml;st kopplande och noggrant utvalda kan jclouds k&amp;ouml;ra i milj&amp;ouml;er som har speciella restriktioner, som till exempel&amp;nbsp;Google App Engine. Jclouds anv&amp;auml;nds f&amp;ouml;r provisionering och lagring hos bland annat Twitter, Adobe och Red Hat.&lt;/p&gt;
&lt;h3&gt;Djupdykning i molnutveckling&lt;/h3&gt;
&lt;p&gt;Tillsammans med Adrian Cole och Cloudsoft erbjuder Citerus en sp&amp;auml;nnande djupdykning i molnutveckling. Under tre unika dagar med Adrian visas det hur det g&amp;aring;r till att skriva kod i Java och Clojure som &amp;auml;r testbar, skalbar och flyttbar mellan olika molntj&amp;auml;nster. Kursen kommer att introducera de viktigaste begreppen inom molnutveckling samt den verktygsl&amp;aring;da som en utvecklare beh&amp;ouml;ver f&amp;ouml;r att komma ig&amp;aring;ng. Med sin egen dator f&amp;ouml;ljer deltagaren med i kodexempel och skriver egen kod i jclouds under kursens g&amp;aring;ng.&lt;/p&gt;
&lt;p&gt;L&amp;auml;nkar:&lt;br /&gt;
&lt;a href=&quot;http://www.citerus.se/curriculum/570338-jclouds-fundamentals&quot;&gt;http://www.citerus.se/jclouds&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.jclouds.org/&quot;&gt;http://www.jclouds.org&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/jclouds/jclouds&quot;&gt;https://github.com/jclouds/jclouds&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.cloudsoftcorp.com/&quot;&gt;http://www.cloudsoftcorp.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r mer information&lt;br /&gt;
Karin Edstr&amp;ouml;m, VD Citerus AB&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se?subject=Jclouds&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;br /&gt;
Tfn: 0733-225 227&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Citerus hj&amp;auml;lper sina kunder att lyckas med mjukvaruutveckling; antingen genom att utbilda och coacha, inf&amp;ouml;ra ett sj&amp;auml;lvstyrande ledarskap och ett l&amp;auml;ttr&amp;ouml;rligt arbetss&amp;auml;tt eller genom att utveckla mjukvara &amp;aring;t dem. Allt f&amp;ouml;r att de ska kunna h&amp;aring;lla en h&amp;ouml;g innovationstakt och skapa smarta l&amp;ouml;sningar som &amp;ouml;kar deras konkurrenskraft. Vi &amp;auml;r ledande p&amp;aring; Scrum, Java, Dom&amp;auml;ndriven design och m&amp;aring;nga andra metoder och tekniker i framkant.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Wed, 23 Nov 2011 10:14:04 GMT</pubDate>
          <guid>http://www.citerus.se/post/591528-l-r-dig-molnutveckling-fr-n-skaparen-av</guid>
          <link>http://www.citerus.se/post/591528-l-r-dig-molnutveckling-fr-n-skaparen-av</link>
      </item>
       
     <item>
          <title>Med Domändriven Design hanteras dagens ökade systemkomplexitet</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/Citerus_3216.jpg&quot;&gt;
              &lt;h4&gt;Reducerad komplexitet - &amp;Ouml;kad produktivitet!&lt;/h4&gt;
&lt;p&gt;Dom&amp;auml;ndriven design handlar om att utforska modeller i en kreativ samverkan med dom&amp;auml;nexperter f&amp;ouml;r att p&amp;aring; s&amp;aring; s&amp;auml;tt lyfta komplexitetstaket. Programmerare kan d&amp;aring; bygga system som snabbt genererar aff&amp;auml;rsnytta och samtidigt &amp;auml;r konstruerade f&amp;ouml;r att kunna vidareuvecklas under m&amp;aring;nga &amp;aring;r. Inte s&amp;auml;llan finns l&amp;ouml;sningen p&amp;aring; till synes tekniska problem i en djupare f&amp;ouml;rst&amp;aring;else f&amp;ouml;r dom&amp;auml;nen!&lt;/p&gt;
&lt;p&gt;Under den fyra dagar l&amp;aring;nga kursen g&amp;ouml;rs en djupdykning inom dessa omr&amp;aring;den. Genom att varva taktiska och strategiska diskussioner samt teoripass med kodning och modellering ger kursen de verktyg som kr&amp;auml;vs. Citerus erbjuder kursen i samarbete med Eric Evans p&amp;aring; Domain Language Inc.&lt;/p&gt;
&lt;p&gt;Kursen ges 5-8 december. L&amp;auml;nk till information om kursen:&amp;nbsp;&lt;a href=&quot;http://www.citerus.se/curriculum/230923-domain-driven-design-dom-nmodellen-i-arbete&quot;&gt;DDD&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r mer information,&lt;br /&gt;
Karin Edstr&amp;ouml;m, VD Citerus AB&lt;br /&gt;
karin.edstrom@citerus.se&lt;br /&gt;
Tfn:&amp;nbsp;0733-225 227&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Citerus hj&amp;auml;lper sina kunder att lyckas med mjukvaruutveckling; antingen genom att utbilda och coacha, inf&amp;ouml;ra ett sj&amp;auml;lvstyrande ledarskap och ett l&amp;auml;ttr&amp;ouml;rligt arbetss&amp;auml;tt eller genom att utveckla mjukvara &amp;aring;t dem. Allt f&amp;ouml;r att de ska kunna h&amp;aring;lla en h&amp;ouml;g innovationstakt och skapa smarta l&amp;ouml;sningar som &amp;ouml;kar deras konkurrenskraft. Vi &amp;auml;r ledande p&amp;aring; Scrum, Java, Dom&amp;auml;ndriven design och m&amp;aring;nga andra metoder och tekniker i framkant.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Thu, 10 Nov 2011 09:59:50 GMT</pubDate>
          <guid>http://www.citerus.se/post/574670-med-dom-ndriven-design-hanteras-dagens-kade</guid>
          <link>http://www.citerus.se/post/574670-med-dom-ndriven-design-hanteras-dagens-kade</link>
      </item>
       
     <item>
          <title>Premiär för Agil re-bootcamp hos Citerus</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/Citerus_3409.jpg&quot;&gt;
              &lt;p&gt;Mikael Boman och Tobias Fors arbetar i sina konsultroller p&amp;aring; Citerus n&amp;auml;ra m&amp;aring;nga olika kunder och s&amp;aring;g ett behov av erfarenhetsutbyte. De har tillsammans utvecklat Agil re-bootcamp som en &amp;quot;st&amp;ouml;dmottagning&amp;quot; f&amp;ouml;r insatser mot de utmaningar som uppst&amp;aring;r n&amp;auml;r omdaningen till l&amp;auml;ttr&amp;ouml;rliga metoder inte g&amp;aring;r som f&amp;ouml;rv&amp;auml;ntat. M&amp;aring;nga g&amp;aring;nger &amp;auml;r det helt naturliga hinder som det finns verktyg f&amp;ouml;r att hantera, det g&amp;auml;ller bara att hitta verktygen.&lt;/p&gt;
&lt;h3&gt;Korta f&amp;ouml;redrag och Open space&lt;/h3&gt;
&lt;p&gt;- En s&amp;aring;n h&amp;auml;r dag samlar kunskap p&amp;aring; ett s&amp;auml;tt som drar ig&amp;aring;ng kreativiteten och skapar energi, s&amp;auml;ger Mikael Boman som tillsammans med Tobias Fors kommer leda dagen. - Det blir n&amp;aring;got kort f&amp;ouml;redrag men huvudfokus f&amp;ouml;r dagen &amp;auml;r p&amp;aring; workshoppar i Open Space-format. Vi hoppas kunna ge deltagarna ett riktigt lyft med de id&amp;eacute;er som kommer fram under dagen. V&amp;auml;l tillbaka i sin vardag kan de forts&amp;auml;tta utveckla sitt arbetss&amp;auml;tt. Vi har identifierat en vilja hos m&amp;aring;nga som fastnat i sin agila utveckling att komma vidare. D&amp;aring; kan en inspirations-injektion vara precis det som beh&amp;ouml;vs f&amp;ouml;r att kunna ta steget, avslutar Mikael Boman.&lt;/p&gt;
&lt;h3&gt;Genererar m&amp;aring;nga l&amp;ouml;sningar att v&amp;auml;lja bland&lt;/h3&gt;
&lt;p&gt;R&amp;auml;tt anv&amp;auml;nt &amp;auml;r Open Space ett effektivt format som fungerar v&amp;auml;ldigt bra f&amp;ouml;r att l&amp;auml;ra av varandra, till&amp;auml;gger Tobias Fors. - Vi vet att ett antal fr&amp;aring;gest&amp;auml;llningar kommer komma upp som m&amp;aring;nga k&amp;auml;nner igen sig i, och olika l&amp;ouml;sningsalternativ kan diskuteras fram. Genom att anv&amp;auml;nda Open Space som format &amp;auml;r alla med och v&amp;auml;ljer de diskussioner som &amp;auml;r intressanta och relevanta f&amp;ouml;r den situation de befinner sig i. Agil re-bootcamp ger en nystart och g&amp;ouml;r det l&amp;auml;ttare att ta ett steg till fram&amp;aring;t, avslutar Tobias Fors entusiastiskt.&lt;/p&gt;
&lt;p&gt;Premi&amp;auml;r f&amp;ouml;r Agil re-bootcamp &amp;auml;r den 24 november i Fryshuset.&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r information och anm&amp;auml;lan:&amp;nbsp;&lt;a href=&quot;http://www.citerus.se/curriculum/385866-agil-re-bootcamp&quot;&gt;klicka h&amp;auml;r&lt;/a&gt; eller anv&amp;auml;nd l&amp;auml;nk:&lt;br /&gt;
&lt;a href=&quot;http://www.citerus.se/curriculum/385866-agil-re-bootcamp&quot;&gt;http://www.citerus.se/curriculum/385866-agil-re-bootcamp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r mer information&lt;br /&gt;
Karin Edstr&amp;ouml;m, VD Citerus AB&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;br /&gt;
Tfn:&amp;nbsp;0733-225 227&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Citerus hj&amp;auml;lper sina kunder att lyckas med mjukvaruutvecklingen; antingen genom att utbilda och coacha, inf&amp;ouml;ra ett sj&amp;auml;lvstyrande ledarskap och ett l&amp;auml;ttr&amp;ouml;rligt arbetss&amp;auml;tt eller genom att utveckla mjukvara &amp;aring;t dem. Allt f&amp;ouml;r att de ska kunna h&amp;aring;lla en h&amp;ouml;g innovationstakt och skapa smarta l&amp;ouml;sningar som &amp;ouml;kar deras konkurrenskraft. Vi &amp;auml;r ledande p&amp;aring; Scrum, Java, Dom&amp;auml;ndriven design och m&amp;aring;nga andra metoder och tekniker i framkant.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Mon, 31 Oct 2011 09:40:47 GMT</pubDate>
          <guid>http://www.citerus.se/post/557757-premi-r-f-r-agil-re-bootcamp-hos-citerus</guid>
          <link>http://www.citerus.se/post/557757-premi-r-f-r-agil-re-bootcamp-hos-citerus</link>
      </item>
       
     <item>
          <title>Holländske Apello utvecklar svenska chefer i agilt ledarskap</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/jurgen-appelo.jpg&quot;&gt;
              &lt;p&gt;Frit&amp;auml;nkaren och f&amp;ouml;rfattaren Jurgen Apello beskriver en ny niv&amp;aring; av ledarskap i boken Management 3.0, en bok som tagit v&amp;auml;rlden med storm. Efter att ha drivit f&amp;ouml;retag med hundra utvecklare &amp;auml;gnar han sedan publiceringen en stor del av sin tid &amp;aring;t att &amp;aring;ka runt i v&amp;auml;rlden som ledarskapskonsult. Han hj&amp;auml;lper ledare att praktiskt kunna till&amp;auml;mpa bokens nydanande teorier om ett agilt - l&amp;auml;ttr&amp;ouml;rligt - ledarskap.&lt;/p&gt;
&lt;h4&gt;Agila arbetsformer som g&amp;ouml;r jobbet roligt&lt;/h4&gt;
&lt;p&gt;Jurgen Apello har analyserat vad det &amp;auml;r som driver m&amp;auml;nniskor och hur en ledare genom att se dessa behov kan f&amp;ouml;rb&amp;auml;ttra sitt ledarskap och f&amp;aring; entusiastiska medarbetare. Han tar h&amp;aring;l p&amp;aring; myterna om d&amp;aring;liga ledare och ovilliga medarbetare genom att visa hur alla, med ett annat s&amp;auml;tt att se p&amp;aring; saker, kan bli b&amp;auml;ttre. Citerus har lyckats f&amp;aring; Jurgen Apello till Sverige s&amp;aring; att &amp;auml;ven svenska chefer kan ta del av de praktiska metoder som leder till ett framg&amp;aring;ngsrikt agilt ledarskap.&lt;/p&gt;
&lt;h4&gt;Agila metoder revolutionerar ledarskap&lt;/h4&gt;
&lt;p&gt;Ledarskapet &amp;auml;r ett omr&amp;aring;de som ofta gl&amp;ouml;ms bort n&amp;auml;r man talar om agilt och l&amp;auml;ttr&amp;ouml;rligt arbete. N&amp;auml;r organisationer inf&amp;ouml;r agil mjukvaruutveckling &amp;auml;r det inte bara utvecklare, testare och projektledare som m&amp;aring;ste l&amp;auml;ra sig ett nytt s&amp;auml;tt att jobba. Utvecklingschefer och ledare ska ocks&amp;aring; l&amp;auml;ra sig ett nytt s&amp;auml;tt att leda f&amp;ouml;r att stimulera agila organisationer. Det h&amp;auml;r &amp;auml;r en unik m&amp;ouml;jlighet f&amp;ouml;r ledare och chefer att snabbt n&amp;aring; ett agilt ledarskap.&lt;/p&gt;
&lt;p&gt;Kursen h&amp;aring;lls 24-25 oktober, f&amp;ouml;r information om kursen och Jurgen Apello, &lt;a href=&quot;http://www.citerus.se/curriculum/440987-management-3-0-agilt-ledarskap-i&quot;&gt;se Citerus hemsida&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r mer information&lt;br /&gt;
Karin Edstr&amp;ouml;m, VD Citerus AB&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;br /&gt;
Tfn:&amp;nbsp;0733 225 227&lt;/p&gt;
&lt;p&gt;Citerus hj&amp;auml;lper sina kunder att lyckas med mjukvaruutveckling; antingen genom att utbilda och coacha, inf&amp;ouml;ra ett sj&amp;auml;lvstyrande ledarskap och ett l&amp;auml;ttr&amp;ouml;rligt arbetss&amp;auml;tt eller genom att utveckla mjukvara &amp;aring;t dem. Allt f&amp;ouml;r att de ska kunna h&amp;aring;lla en h&amp;ouml;g innovationstakt och skapa smarta l&amp;ouml;sningar som &amp;ouml;kar deras konkurrenskraft. Vi &amp;auml;r ledande p&amp;aring; Scrum, Java, Dom&amp;auml;ndriven design och m&amp;aring;nga andra metoder och tekniker i framkant.&lt;br /&gt;
&lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Fri, 30 Sep 2011 12:31:10 GMT</pubDate>
          <guid>http://www.citerus.se/post/516559-holl-ndske-apello-utvecklar-svenska-chefer-i</guid>
          <link>http://www.citerus.se/post/516559-holl-ndske-apello-utvecklar-svenska-chefer-i</link>
      </item>
       
     <item>
          <title>Turboladda din systemarkitektur med Domändriven design och CQRS</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/Greg Young1.jpg&quot;&gt;
              &lt;p&gt;Det har g&amp;aring;tt mer &amp;auml;n fem &amp;aring;r sedan Eric Evans introducerade begreppet Domain-Driven Design, DDD, med sin bok &lt;em&gt;Domain-Driven Design - Tackling Complexity in the Heart of Software&lt;/em&gt;. Boken samlade ett antal centrala begrepp inom&amp;nbsp;framf&amp;ouml;rallt objektorienterad analys, design och implementation under ett gemensamt tak och har p&amp;aring; m&amp;aring;nga s&amp;auml;tt skapat nytt liv i tankarna runt design av mjukvara med tydligt avstamp i dess problemdom&amp;auml;n.&lt;/p&gt;
&lt;p&gt;Introduktionen av begreppen dom&amp;auml;nh&amp;auml;ndelser (Domain Events), och Event Sourcing &amp;auml;r troligen de omr&amp;aring;den d&amp;auml;r Dom&amp;auml;ndriven design har utvecklats mest under de senaste &amp;aring;ren. S&amp;auml;rskilt arkitektur baserade runt designm&amp;ouml;nstret Command Query Responsibility Segregation, CQRS har r&amp;ouml;nt stor uppm&amp;auml;rksamhet under ett par &amp;aring;r och &amp;auml;r st&amp;auml;ndigt &amp;aring;terkommande &amp;auml;mnen p&amp;aring; konferenser som &amp;Oslash;redev, DDD eXchange och QCon. B&amp;aring;de den ordinarie och den extrainsatta workshopen om CQRS p&amp;aring; &amp;aring;rets upplaga av &amp;Oslash;redev &amp;auml;r uts&amp;aring;lda l&amp;aring;ngt innan konferensstart.&lt;/p&gt;
&lt;p&gt;CQRS &amp;auml;r i grunden, lite beroende p&amp;aring; vem man fr&amp;aring;gar, ett s&amp;auml;tt att tydligt dela upp metoder s&amp;aring; att l&amp;auml;sning (query) och kommandon (commands) indelas i olika klasser. CQRS kombineras ofta med andra m&amp;ouml;nster som Event Sourcing och Domain Events f&amp;ouml;r att skapa systemarkitekturer d&amp;auml;r interaktion med applikationen sker via kommandon och h&amp;auml;ndelser. L&amp;auml;sning skiljs tydligt fr&amp;aring;n skrivning, inte s&amp;auml;llan med olika modeller f&amp;ouml;r dessa.&lt;/p&gt;
&lt;p&gt;CQRS i kombination med Event Sourcing v&amp;auml;nder till viss del upp och ner p&amp;aring; etablerade s&amp;auml;tt att designa system och utmanar hur vi ser p&amp;aring; systemarkitektur. En design baserad p&amp;aring; Event Sourcing och CQRS &amp;ouml;ppnar upp en hel del intressanta m&amp;ouml;jligheter som &amp;auml;r begr&amp;auml;nsade i en mer traditionell CRUD-arkitektur. Det kanske mest omtalade &amp;auml;r m&amp;ouml;jligheten att bygga applikationer som helt separerar l&amp;auml;sning fr&amp;aring;n skrivning och d&amp;auml;r dessa tv&amp;aring; aktiviteter kan skalas oberoende av varandra f&amp;ouml;r att hantera mycket omfattande genomstr&amp;ouml;mning av data. Tidigt i tankarna runt DDD ans&amp;aring;gs dessa typer av applikationer, med mycket data och h&amp;ouml;ga krav p&amp;aring; prestanda, som mindre l&amp;auml;mpliga f&amp;ouml;r Domain-Driven Design, en uppfattning som CQRS och Event Sourcing har kommit att till stor del f&amp;ouml;r&amp;auml;ndra.&lt;/p&gt;
&lt;p&gt;En annan intressant egenskap hos dessa typer av arkitektur &amp;auml;r att vi genom att spara v&amp;aring;ra inkommande h&amp;auml;ndelser och kommandon kan sp&amp;aring;ra inte bara nuvarande systemtillst&amp;aring;nd, utan &amp;auml;ven hur vi kom dit. Detta, i sin tur, leder till andra m&amp;ouml;jligheter.&lt;/p&gt;
&lt;p&gt;Om vi till exempel st&amp;ouml;ter p&amp;aring; produktionsproblem kan vi i en testmilj&amp;ouml; &amp;aring;terst&amp;auml;lla systemet i ett tidigare tillst&amp;aring;nd och sedan l&amp;auml;gga p&amp;aring; alla sparade kommandon igen f&amp;ouml;r att p&amp;aring; s&amp;aring; s&amp;auml;tt sp&amp;aring;ra exakt vad som gick fel. Detta &amp;auml;r n&amp;aring;got som ofta kan vara sv&amp;aring;rt att g&amp;ouml;ra baserat enbart p&amp;aring; loggningsdata.&lt;/p&gt;
&lt;p&gt;Det kan ocks&amp;aring; ge oss m&amp;ouml;jlighet att k&amp;ouml;ra om gamla h&amp;auml;ndelser och kommandon i nya versioner av mjukvaran, eller mot alternativa modeller, och p&amp;aring; s&amp;aring; s&amp;auml;tt skapa nya aff&amp;auml;rsdata ur tidigare h&amp;auml;ndelser.&lt;/p&gt;
&lt;p&gt;Citerus kan nu erbjuda dig en utm&amp;auml;rkt m&amp;ouml;jlighet att l&amp;auml;ra dig mer om DDD och CQRS i samarbete med Greg Young, en av de absoluta frontfigurerna inom omr&amp;aring;det. Anm&amp;auml;l dig redan idag till Gregs legendariska tredagarskurs i Stockholm den 14-16 november. Kursen introducerar teorin bakom CQRS och Event Sourcing, men fr&amp;auml;mst ligger fokus p&amp;aring; att implementera DDD och skriva fungerande kod! Du tar med egen dator s&amp;aring; att du kan utveckla i den milj&amp;ouml; och det spr&amp;aring;k som du &amp;auml;r mest bekv&amp;auml;m med &lt;a href=&quot;http://www.citerus.se/cqrs&quot;&gt;www.citerus.se/cqrs&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://cqrsinfo.com/&quot;&gt;CQRS Info&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://codebetter.com/gregyoung/&quot;&gt;Greg Young&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.amazon.com/Event-Centric-Simplicity-Addison-Wesley-Signature/dp/0321768221/&quot;&gt;Greg Youngs kommande bok om CQRS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://martinfowler.com/bliki/CQRS.html&quot;&gt;Martin Fowler om CQRS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://martinfowler.com/eaaDev/EventSourcing.html&quot;&gt;Martin Fowler om Event Sourcing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
          </description>
          <pubDate>Thu, 29 Sep 2011 08:05:10 GMT</pubDate>
          <guid>http://www.citerus.se/post/515152-turboladda-din-systemarkitektur-med-dom-ndriven-design</guid>
          <link>http://www.citerus.se/post/515152-turboladda-din-systemarkitektur-med-dom-ndriven-design</link>
      </item>
       
     <item>
          <title>Citerus pratar Agil Innovation på Entreprenörsgalan idag</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/entreprenorsgalan_logotype.png&quot;&gt;
              &lt;p&gt;Agil Innovation och Agil Expansion &amp;auml;r begrepp som Citerus kommer prata om p&amp;aring; &lt;a href=&quot;http://www.foundersalliance.com/entrepren%C3%B6rsgalan&quot;&gt;Entrepren&amp;ouml;rsgalan 2011&lt;/a&gt; idag. Agil Innovation inneb&amp;auml;r att ta hj&amp;auml;lp av agila metoder, f&amp;ouml;r att fokusera p&amp;aring; aff&amp;auml;rsnytta genom design och utveckling av en f&amp;ouml;rsta version. F&amp;ouml;r att sedan klara en vidareutvecklings- och f&amp;ouml;rvaltningsfas n&amp;auml;r kunderna str&amp;ouml;mmar till och aff&amp;auml;rerna tar fart, hj&amp;auml;lper v&amp;aring;r erfarenhet av Agil Expansion.&lt;/p&gt;
&lt;h3&gt;Agil Innovation&lt;/h3&gt;
&lt;p&gt;Agil Innovation handlar om att anv&amp;auml;nda agila verktyg f&amp;ouml;r att p&amp;aring; ett flexibelt s&amp;auml;tt fokusera p&amp;aring; att maximera aff&amp;auml;rsnyttan, f&amp;ouml;r att snabbt kunna g&amp;aring; fr&amp;aring;n id&amp;eacute; till handling. Detta f&amp;ouml;r att kunna kommersialisera en aff&amp;auml;rsid&amp;eacute; med begr&amp;auml;nsade resurser, i form av tid och pengar.&lt;/p&gt;
&lt;h3&gt;Agil Expansion&lt;/h3&gt;
&lt;p&gt;N&amp;auml;r den f&amp;ouml;rsta lanseringen &amp;auml;r klar g&amp;auml;ller det att vara beredd p&amp;aring; expansion. P&amp;aring; n&amp;auml;tet kan framg&amp;aring;ngen g&amp;aring; extremt snabbt och d&amp;aring; g&amp;auml;ller det att vara f&amp;ouml;rberedd s&amp;aring; att alla delar kan expandera. S&amp;aring;v&amp;auml;l processer som organisationen beh&amp;ouml;ver ofta trimmas f&amp;ouml;r att klara en s&amp;aring;dan f&amp;ouml;r&amp;auml;ndring.&lt;/p&gt;
&lt;h3&gt;S&amp;aring; h&amp;auml;r gjorde reco.se&lt;/h3&gt;
&lt;p&gt;Det l&amp;ouml;nar sig att ta hj&amp;auml;lp n&amp;auml;r en briljant mjukvarubaserad aff&amp;auml;rsid&amp;eacute; skall realiseras med begr&amp;auml;nsade resurser. &lt;a href=&quot;/post/508676-reco-se-accelererar-l-ttr-rligt&quot;&gt;L&amp;auml;s om hur Citerus hj&amp;auml;lpte entrepren&amp;ouml;ren Tobias Basilius p&amp;aring; resan att vidareutveckla sin sajt reco.se&lt;/a&gt; f&amp;ouml;r att m&amp;ouml;ta kraven fr&amp;aring;n hundratusentals bes&amp;ouml;kare i veckan.&lt;/p&gt;
          </description>
          <pubDate>Tue, 27 Sep 2011 09:25:53 GMT</pubDate>
          <guid>http://www.citerus.se/post/512677-citerus-pratar-agil-innovation-p-entrepren-rsgalan</guid>
          <link>http://www.citerus.se/post/512677-citerus-pratar-agil-innovation-p-entrepren-rsgalan</link>
      </item>
       
     <item>
          <title>reco.se accelererar lättrörligt</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/reco.jpg&quot;&gt;
              &lt;h4&gt;Reco.se satsade p&amp;aring; coachning och kunskaps&amp;ouml;verf&amp;ouml;ring f&amp;ouml;r kvalitetsh&amp;ouml;jning&lt;/h4&gt;
&lt;p&gt;Det l&amp;ouml;nar sig att ta hj&amp;auml;lp n&amp;auml;r en briljant mjukvarubaserad aff&amp;auml;rsid&amp;eacute; skall realiseras med begr&amp;auml;nsade resurser. Fokus p&amp;aring; aff&amp;auml;rsnytta skall beh&amp;aring;llas genom design och utveckling av en f&amp;ouml;rsta version, till vidareutveckling och f&amp;ouml;rvaltning n&amp;auml;r kunderna str&amp;ouml;mmar till och aff&amp;auml;rerna tar fart. Citerus har hj&amp;auml;lpt entrepren&amp;ouml;ren Tobias Basilius p&amp;aring; resan att vidareutveckla sin sajt &lt;a href=&quot;http://www.reco.se&quot;&gt;reco.se&lt;/a&gt; f&amp;ouml;r att m&amp;ouml;ta kraven fr&amp;aring;n hundratusentals bes&amp;ouml;kare i veckan. Det &amp;auml;r ett exempel p&amp;aring; hur entrepren&amp;ouml;rer kan dra nytta av Agil innovation och Agil Expansion, begrepp som Citerus kommer samtala om p&amp;aring; &lt;a href=&quot;http://www.foundersalliance.com/Aktiviteter---FA-Event/Entrepren%C3%B6rsgalan-Sverige-2011.aspx&quot;&gt;Entrepren&amp;ouml;rsgalan 2011&lt;/a&gt; (som arrangeras av &lt;a href=&quot;http://www.foundersalliance.com/&quot;&gt;Founders Alliance&lt;/a&gt;) tisdagen den 27 september. Agil Innovation handlar om hur l&amp;auml;ttr&amp;ouml;rliga metoder anv&amp;auml;nds f&amp;ouml;r att snabbt kommersialisera en aff&amp;auml;rsid&amp;eacute;, Agil Expansion handlar om att organisera sig f&amp;ouml;r tillv&amp;auml;xt.&lt;/p&gt;
&lt;h4&gt;Oberoende rekommendationer s&amp;auml;rskiljande&lt;/h4&gt;
&lt;p&gt;Det som skiljer reco.se fr&amp;aring;n andra rekommendationssajter &amp;auml;r att de har omfattande rutiner som f&amp;ouml;rhindrar rekommendationer av egna aff&amp;auml;rsr&amp;ouml;relser och smutskastning av konkurrenter. Betygen ges av riktiga, oberoende anv&amp;auml;ndare. Idag &amp;auml;r det 110.000 bes&amp;ouml;kare i veckan som betraktar reco.se som en god v&amp;auml;n som ger bra tips.&lt;/p&gt;
&lt;h4&gt;Utmaning med explosionsartad tillv&amp;auml;xt&lt;/h4&gt;
&lt;p&gt;Efter lanseringen v&amp;auml;xte sajten explosionsartat i antalet bes&amp;ouml;kare, med allt st&amp;ouml;rre databas och fler funktioner. Eftersom id&amp;eacute;n &amp;auml;r att anv&amp;auml;ndaren bidrar frivilligt m&amp;aring;ste alla funktioner upplevas som anv&amp;auml;ndarv&amp;auml;nliga. Upptid &amp;auml;r aff&amp;auml;rskritiskt och stopp eller l&amp;aring;nga svarstider f&amp;aring;r absolut inte f&amp;ouml;rekomma.&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r att klara tillv&amp;auml;xt under tidspress gjordes kompromisser under utvecklingen av koden. Tack vare duktiga programmerare fungerade koden bra trots att den blev allt yvigare. S&amp;aring; sakteliga b&amp;ouml;rjade dock uppdateringar i koden inneb&amp;auml;ra att bieffekter uppstod, till synes utan samband med &amp;auml;ndringen. Ibland blev svarstiderna l&amp;aring;nga och det h&amp;auml;nde till och med att sajten gick ned ibland. Entusiasmen hos anv&amp;auml;ndarna b&amp;ouml;rjade dala. De &amp;aring;terkommande larmen b&amp;ouml;rjade t&amp;auml;ra p&amp;aring; b&amp;aring;de utvecklare och ledning.&lt;/p&gt;
&lt;p&gt;M&amp;aring;let blev att bit f&amp;ouml;r bit &amp;aring;terst&amp;auml;lla kvaliteten i koden samt att coacha och kompetens&amp;ouml;verf&amp;ouml;ra till det befintliga utvecklingsteamet. Tobias Hill fr&amp;aring;n Citerus anlitades f&amp;ouml;r detta och under mottot &amp;quot;ingenting &amp;auml;r om&amp;ouml;jligt&amp;quot; gjordes en lista av prioriterade punktinsatser. Under den dag i veckan han jobbade axel mot axel med recos.se's utvecklare betades listan av bit f&amp;ouml;r bit. Dagen avslutades med guidning om vad som skulle g&amp;ouml;ras fram till n&amp;auml;sta bes&amp;ouml;k.&lt;/p&gt;
&lt;h4&gt;Ifr&amp;aring;ga s&amp;auml;tt allt&lt;/h4&gt;
&lt;p&gt;- Det Tobias Hill &amp;aring;stadkom p&amp;aring; en dag i veckan hos oss var magiskt, s&amp;auml;ger Tobias Basilius, grundare av reco.se. - Han&amp;nbsp;&amp;auml;r v&amp;auml;ldigt okonventionell, v&amp;auml;nder ut och in p&amp;aring; allt, tittar fram- och bakl&amp;auml;nges, hittar nya perspektiv, inget &amp;auml;r heligt. Han kan faktiskt vara riktigt jobbig med att &amp;auml;ven ifr&amp;aring;gas&amp;auml;tta teknikval, organisation och ledarskap. Men han l&amp;ouml;ser problem effektivt och n&amp;auml;r jag med lite perspektiv ser f&amp;ouml;r&amp;auml;ndringen k&amp;auml;nner jag en stor tacksamhet att han v&amp;aring;gade utmana oss.&lt;/p&gt;
&lt;p&gt;- vi hade en taktik att varje dag Tobias var h&amp;auml;r skulle vi attackera det mest relevanta problemet. N&amp;auml;stan alltid var det l&amp;ouml;st innan dagen var till &amp;auml;nda, ibland hade &amp;auml;ven n&amp;aring;gra andra problem eliminerats av bara farten, avslutar Tobias Basilius.&lt;/p&gt;
&lt;h4&gt;L&amp;auml;ttr&amp;ouml;rligt arbetss&amp;auml;tt accelerar nya id&amp;eacute;er&lt;/h4&gt;
&lt;p&gt;Sv&amp;aring;righeterna att tillf&amp;ouml;ra nya funktioner &amp;auml;r som bortbl&amp;aring;sta och reco.se kan idag expandera utan v&amp;auml;xtv&amp;auml;rk. F&amp;ouml;rr gjordes uppdateringar s&amp;aring; s&amp;auml;llan som m&amp;ouml;jligt eftersom det alltid blev problem. Idag g&amp;ouml;rs de varje vecka vilket inneb&amp;auml;r att sajten f&amp;ouml;rb&amp;auml;ttras lika ofta, utan n&amp;aring;gon oro. Tack vare stabiliteten och det l&amp;auml;ttr&amp;ouml;rliga arbetss&amp;auml;ttet kan f&amp;ouml;rb&amp;auml;ttringar och nya aff&amp;auml;rsid&amp;eacute;er hela tiden testas mot verkligheten. De aff&amp;auml;rskritiska svarstiderna har g&amp;aring;tt ned till en sj&amp;auml;ttedel och nedtid finns inte.&lt;/p&gt;
&lt;p&gt;Hemsida reco.se: &lt;a href=&quot;http://www.reco.se&quot;&gt;www.reco.se&lt;/a&gt;, hemsida Citerus: &lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r mer information&lt;br /&gt;
Karin Edstr&amp;ouml;m, VD Citerus AB&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;br /&gt;
Tfn:&amp;nbsp;0733- 225 227&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Citerus hj&amp;auml;lper v&amp;aring;ra kunder att lyckas med mjukvaruutveckling; antingen genom att utbilda och coacha, inf&amp;ouml;ra ett sj&amp;auml;lvstyrande ledarskap och ett l&amp;auml;ttr&amp;ouml;rligt arbetss&amp;auml;tt eller genom att utveckla mjukvara &amp;aring;t dem. Allt f&amp;ouml;r att de ska kunna h&amp;aring;lla en h&amp;ouml;g innovationstakt och skapa smarta l&amp;ouml;sningar som &amp;ouml;kar deras konkurrenskraft. Vi &amp;auml;r ledande p&amp;aring; Scrum, Java, Dom&amp;auml;ndriven Design och m&amp;aring;nga andra metoder och tekniker i framkant.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Fri, 23 Sep 2011 08:57:31 GMT</pubDate>
          <guid>http://www.citerus.se/post/508676-reco-se-accelererar-l-ttr-rligt</guid>
          <link>http://www.citerus.se/post/508676-reco-se-accelererar-l-ttr-rligt</link>
      </item>
       
     <item>
          <title>Agil Innovation</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/karin_edstrom_grey.png&quot;&gt;
              &lt;h4&gt;S&amp;auml;tt aff&amp;auml;rsnyttan i fokus n&amp;auml;r innovationer skall realiseras!&lt;/h4&gt;
&lt;p&gt;Det &amp;auml;r ett stort steg fr&amp;aring;n att vara en driven entrepren&amp;ouml;r med aff&amp;auml;rs- och marknadsfokus, till att ha kunskap om verktyg och metoder f&amp;ouml;r hur man verkligen g&amp;ouml;r i praktiken f&amp;ouml;r att s&amp;auml;tta aff&amp;auml;rsnyttan i fokus. Fokus p&amp;aring; reell aff&amp;auml;rsnytta skall beh&amp;aring;llas genom hela kedjan; under design-, krav- och utvecklingsprocesserna - i n&amp;auml;ra anslutning till kundernas behov. Om detta kommer vi samtala med entrepren&amp;ouml;rer och innovat&amp;ouml;rer p&amp;aring; Entrepren&amp;ouml;rsgalan som anordnas av Founders Alliance f&amp;ouml;r tionde &amp;aring;ret i rad.&lt;/p&gt;
&lt;p&gt;Det kr&amp;auml;vs erfarenhet och tr&amp;auml;ning av hur man praktiskt g&amp;ouml;r f&amp;ouml;r att som entusiastisk entrepren&amp;ouml;r faktiskt h&amp;aring;lla fokus. Det underl&amp;auml;ttar, om man har n&amp;aring;gra praktiska och bepr&amp;ouml;vade verktyg till sin hj&amp;auml;lp.&lt;/p&gt;
&lt;p&gt;L&amp;auml;ttr&amp;ouml;rliga - agila - metoder, &amp;auml;r idag relativt v&amp;auml;l f&amp;ouml;rankrade s&amp;aring;v&amp;auml;l i mjukvaruindustrin (f&amp;ouml;retr&amp;auml;desvis Scrum) som inom delar av tillverkande industrin (Lean och Kanban). Samtliga metoder har sin grund i n&amp;aring;gra gemensamma principer.&lt;/p&gt;
&lt;p&gt;Dessa principer &amp;auml;mnar sig mycket bra som st&amp;ouml;d f&amp;ouml;r innovationsf&amp;ouml;retag i dess uppstartsfaser. Att g&amp;aring; fr&amp;aring;n en id&amp;eacute; till f&amp;auml;rdig tj&amp;auml;nst eller produkt &amp;auml;r en sn&amp;aring;rig bana. Att ha metoder och verktyg f&amp;ouml;r att f&amp;aring; hj&amp;auml;lp att fokusera p&amp;aring; prioritering av krav d&amp;auml;r realiserad aff&amp;auml;rsnytta st&amp;aring;r i centrum, skulle hj&amp;auml;lpa m&amp;aring;nga innovat&amp;ouml;rer och entrepren&amp;ouml;rer att komma till n&amp;auml;sta niv&amp;aring; i sitt f&amp;ouml;retagande, dvs kommersialiseringsfasen. M&amp;aring;nga utvecklingsprojekt som anv&amp;auml;nder Scrum som metodik, levererar anv&amp;auml;ndbar programvara var 14:e dag. I ett uppstartsl&amp;auml;ge kan detta vara enda chansen till &amp;ouml;verlevnad!&lt;/p&gt;
&lt;p&gt;Jag vill introducera begreppet Agil Innovation. Det vill s&amp;auml;ga hur man kan ta hj&amp;auml;lp av agila verktyg och metoder f&amp;ouml;r att underl&amp;auml;tta det innovativa arbetet. L&amp;aring;t mig konkretisera: P&amp;aring; Citerus hj&amp;auml;lper vi ofta snabbv&amp;auml;xande f&amp;ouml;retag och har under &amp;aring;ren f&amp;aring;tt otaliga bevis f&amp;ouml;r hur man genom att ta hj&amp;auml;lp av verktyg och metoder fr&amp;aring;n den agila v&amp;auml;rlden snabbare kan visa marknaden sina id&amp;eacute;er i form av demobara prototyper.&lt;/p&gt;
&lt;p&gt;Begreppet &amp;quot;Minimum Viable Product&amp;quot; &amp;auml;r centralt f&amp;ouml;r alla som jobbar med innovation som beh&amp;ouml;ver finansieras. Fokus p&amp;aring; MVP inneb&amp;auml;r att du designar din produkt f&amp;ouml;r att visa det som &amp;auml;r viktigt att bevisa och d&amp;auml;rmed skapar ett fundament f&amp;ouml;r en aff&amp;auml;r eller finansiering. Det kan du ofta g&amp;ouml;ra med mycket mindre resurser &amp;auml;n vad du tror.&lt;/p&gt;
&lt;p&gt;Det handlar om att snabbt kunna f&amp;aring; feedback fr&amp;aring;n kunder och anv&amp;auml;ndare, genom att faktiskt kunna se hur de anv&amp;auml;nder produkten, och om de &amp;aring;terkommer. D&amp;auml;rmed kan man iterera sig fram till en kommersiellt g&amp;aring;ngbar produkt.&lt;/p&gt;
&lt;p&gt;Under mina &amp;aring;r i branschen, har jag alltf&amp;ouml;r ofta sett motsatsen; d&amp;auml;r man antingen l&amp;aring;ter id&amp;eacute;n stanna vid en powerpointpresentation f&amp;ouml;r l&amp;auml;nge, eller att man spenderar allt f&amp;ouml;r l&amp;aring;ng tid (och f&amp;ouml;r mycket pengar) innan man har en produkt som kan visas upp f&amp;ouml;r omv&amp;auml;rlden. F&amp;ouml;r&amp;auml;ndringar och justeringar kostar d&amp;aring; f&amp;ouml;r&amp;ouml;dande mycket, b&amp;aring;de tid och pengar.&lt;/p&gt;
&lt;p&gt;Jag vill p&amp;aring;st&amp;aring; att Agil innovation b&amp;ouml;r l&amp;auml;ggas till listan &amp;ouml;ver inspel f&amp;ouml;r hur vi tillsammans kan jobba f&amp;ouml;r att s&amp;auml;kerst&amp;auml;lla att bra id&amp;eacute;er kommersialiseras tillr&amp;auml;ckligt snabbt och i tillr&amp;auml;ckligt h&amp;ouml;g utstr&amp;auml;ckning.&lt;/p&gt;
&lt;p&gt;Karin Edstr&amp;ouml;m, VD Citerus AB&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;br /&gt;
+46 733 225 227&lt;/p&gt;
&lt;p&gt;&amp;quot;Citerus - frig&amp;ouml;r kraften i mjukvara &amp;aring;t alla som har en vision&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Wed, 21 Sep 2011 11:35:24 GMT</pubDate>
          <guid>http://www.citerus.se/post/505597-agil-innovation</guid>
          <link>http://www.citerus.se/post/505597-agil-innovation</link>
      </item>
       
     <item>
          <title>Varför Clojure?</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/patrik-fredriksson-clojure.png&quot;&gt;
              &lt;p&gt;Clojure &amp;auml;r ett av de m&amp;aring;nga nya JVM-spr&amp;aring;k som b&amp;ouml;rjar f&amp;aring; fotf&amp;auml;ste bland utvecklare. Som Lisp-dialekt s&amp;aring; skiljer sig dock Clojure ganska mycket fr&amp;aring;n m&amp;aring;nga andra spr&amp;aring;k, och programmerare med Javabakgrund verkar inte s&amp;auml;llan uppleva spr&amp;aring;ket s&amp;aring; pass annorlunda att de instinktivt ryggar tillbaka. Det &amp;auml;r lite synd tycker vi p&amp;aring; Citerus d&amp;aring; det finns m&amp;aring;nga bra anledningar att titta n&amp;auml;rmare p&amp;aring; Clojure. N&amp;aring;gra av de fr&amp;aring;gor jag ganska ofta f&amp;aring;r n&amp;auml;r jag f&amp;ouml;rel&amp;auml;ser eller hamnar i samtal runt spr&amp;aring;ket &amp;auml;r funderingar runt varf&amp;ouml;r man ska anv&amp;auml;nda Clojure. Vad man ska ha det till? Vad &amp;auml;r det bra p&amp;aring;?&lt;/p&gt;
&lt;p&gt;P&amp;aring; Jfokus 2009 fick jag fr&amp;aring;gan vad det var med just Clojure som gjort att jag fastnade f&amp;ouml;r spr&amp;aring;ket. Svaret blev d&amp;aring; spontant ganska k&amp;auml;nslobaserat. F&amp;ouml;rsta g&amp;aring;ngen jag kom i kontakt med Clojure var under en presentation av Rich Hickey, och det var n&amp;aring;got i spr&amp;aring;ket som i stort sett omedelbart tilltalade mig. Minnen fr&amp;aring;n gamla universitetskurser i ML kom tillbaka. Elegansen i den funktionella programmeringsmodellen blev tydlig.&lt;/p&gt;
&lt;p&gt;Jag laddade direkt ner Clojure och b&amp;ouml;rjade utforska spr&amp;aring;ket. Jag fick den k&amp;auml;nsla som jag t&amp;auml;nker mig att m&amp;aring;nga personer som fastnat f&amp;ouml;r Ruby har; en k&amp;auml;nsla av att allt p&amp;aring; n&amp;aring;got s&amp;auml;tt k&amp;auml;nns naturligt och det blir omedelbart oerh&amp;ouml;rt kul att programmera igen. Jag lyckades aldrig frambringa denna passion f&amp;ouml;r Ruby trots att jag verkligen f&amp;ouml;rs&amp;ouml;kt flera g&amp;aring;nger. Men med Clojure s&amp;aring; k&amp;auml;ndes v&amp;auml;ldigt mycket r&amp;auml;tt, &amp;auml;ven om inl&amp;auml;rningstr&amp;ouml;skeln inte p&amp;aring; n&amp;aring;got s&amp;auml;tt varit l&amp;aring;g. Trots att verktygen &amp;auml;r relativt primitiva, utbudet av bibliotek och tredjepartskomponenter liten och mycket m&amp;aring;ste skrivas fr&amp;aring;n b&amp;ouml;rjan s&amp;aring; kunde jag komma l&amp;aring;ngt p&amp;aring; kort tid. Det var kul, och jag k&amp;auml;nde mig produktiv. Dessutom var Clojure-gemenskapen v&amp;auml;ldigt v&amp;auml;lkomnande och hj&amp;auml;lpsam.&lt;/p&gt;
&lt;p&gt;Nu tenderar rent k&amp;auml;nslom&amp;auml;ssiga argument kanske att fungerar lite s&amp;auml;mre som beslutsunderlag f&amp;ouml;r att f&amp;aring; en organisation att ta till sig ny teknik och nya arbetss&amp;auml;tt. Det f&amp;aring;r helst finnas andra argument, som upplevs lite mer rationella. Som tur &amp;auml;r s&amp;aring; saknas det inte argument av den typen f&amp;ouml;r Clojure.&lt;/p&gt;
&lt;h3&gt;Utrycksfullhet&lt;/h3&gt;
&lt;p&gt;Clojure &amp;auml;r uttrycksfullt och i grunden designat f&amp;ouml;r att vara &lt;a href=&quot;http://blip.tv/clojure/stuart-halloway-simplicity-ain-t-easy-4842694&quot;&gt;enkelt&lt;/a&gt;. Detta ger ett v&amp;auml;ldigt kraftfullt spr&amp;aring;k d&amp;auml;r mycket som kan upplevas som on&amp;ouml;dig ceremoni tagits bort. Det l&amp;aring;ter oss l&amp;auml;gga fokus p&amp;aring; det faktiska dom&amp;auml;nproblemen, och g&amp;ouml;r att vi mer effektivt kan styra bort fr&amp;aring;n teknisk komplexitet. De funktionella aspekterna av Clojure, s&amp;aring; som st&amp;ouml;d f&amp;ouml;r h&amp;ouml;gre ordningens funktioner, bidrar &amp;auml;ven de till att spr&amp;aring;kets uttrycksfullhet.&lt;/p&gt;
&lt;h3&gt;Java som plattform&lt;/h3&gt;
&lt;p&gt;Genom att k&amp;ouml;ra p&amp;aring; JVM:en finns en robust och effektiv exekveringsmilj&amp;ouml; redan p&amp;aring; plats som &amp;auml;r extremt v&amp;auml;l spridd och accepterad. Genom s&amp;ouml;ml&amp;ouml;s integration med Java finns m&amp;ouml;jlighet att nyttja redan existerande tredjepartskomponenter, samtidigt som nyutvecklad Clojurekod enkelt kan integreras med existerande l&amp;ouml;sningar och milj&amp;ouml;er. Clojure finns nu &amp;auml;ven i en version f&amp;ouml;r exekvering p&amp;aring; JavaScript-tolkar, ClojureScript.&lt;/p&gt;
&lt;h3&gt;Samtidighet&lt;/h3&gt;
&lt;p&gt;Det som ofta framf&amp;ouml;rs som en viktig del av Clojures t&amp;auml;nkta till&amp;auml;mpningsomr&amp;aring;de, &amp;auml;r parallellisering och hantering av samtidighet. Under de senaste &amp;aring;ren har utvecklingen mot snabbare och snabbare processorer bytts mot en utveckling som g&amp;aring;r mot fler och fler k&amp;auml;rnor. En modern b&amp;auml;rbar dator av i dag kan ofta vara bestyckad med en fyrk&amp;auml;rnig processor, inte s&amp;auml;llan med n&amp;aring;gon form av hyper-threadingteknik. Till och med telefoner och surfplattor kommer idag med flerk&amp;auml;rniga processorer. Man kan argumentera f&amp;ouml;r att m&amp;aring;nga befintliga spr&amp;aring;k, s&amp;aring; som Java, &amp;auml;r mindre l&amp;auml;mpade f&amp;ouml;r att skapa de program som kr&amp;auml;vs f&amp;ouml;r att till fullo utnyttja den kapacitet som flerk&amp;auml;rniga processorer erbjuder.&lt;/p&gt;
&lt;p&gt;Clojure &amp;auml;r designat runt den funktionella programmeringsparadigmen. Datastrukturerna &amp;auml;r &lt;a href=&quot;http://en.wikipedia.org/wiki/Persistent_data_structure&quot;&gt;persistenta&lt;/a&gt;, of&amp;ouml;r&amp;auml;nderliga, och det finns en fullst&amp;auml;ndig tanke runt identitet, tillst&amp;aring;nd och tid. Bara det att man arbetar med icke muterbara datastrukturer hj&amp;auml;lper l&amp;aring;ngt i att hantera samtidighet. En icke muterbar datastruktur &amp;auml;r tr&amp;aring;ds&amp;auml;ker.&lt;/p&gt;
&lt;h3&gt;Funktionell programmering&lt;/h3&gt;
&lt;p&gt;Clojure &amp;auml;r ett programmeringsspr&amp;aring;k f&amp;ouml;r funktionell programmering. Funktionell programmering &amp;auml;r till stor del deklarativ, det l&amp;aring;ter oss fokusera p&amp;aring; vad vi vill g&amp;ouml;ra framf&amp;ouml;r hur det ska g&amp;ouml;ras. St&amp;ouml;d finns f&amp;ouml;rst&amp;aring;s i spr&amp;aring;ket f&amp;ouml;r h&amp;ouml;gre ordningens funktioner, och datastrukturerna &amp;auml;r icke muterbara. Att datastrukturer inte g&amp;aring;r att f&amp;ouml;r&amp;auml;ndra efter att de &amp;auml;r skapade, tillsammans med fokuseringen p&amp;aring; rena funktioner, g&amp;ouml;r mycket f&amp;ouml;r att h&amp;aring;lla ner komplexiteten i program och underl&amp;auml;tta parallellisering. Inom Domain-Driven Design f&amp;ouml;respr&amp;aring;kar vi anv&amp;auml;nding av v&amp;auml;rdeobjekt mycket p&amp;aring; grund av detta, men det &amp;auml;r sv&amp;aring;rt att f&amp;aring; till i spr&amp;aring;k som Java. I Clojure f&amp;aring;r vi det som en integrerad del av spr&amp;aring;ket.&lt;/p&gt;
&lt;h3&gt;Lisp&lt;/h3&gt;
&lt;p&gt;M&amp;aring;nga har starka &amp;aring;sikter om Lisp. F&amp;ouml;rutom ett par rader som jag klistrade in min .emacs-fil tidigt under v&amp;aring;ren 1996 hade jag ingen tidigare erfarenhet av Lisp innan jag kom i kontakt med Clojure. Sl&amp;auml;ktskapet med Lisp g&amp;ouml;r Clojure annorlunda, och med det kommer n&amp;aring;gra riktigt sp&amp;auml;nnande m&amp;ouml;jligheter.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Data som kod&amp;rdquo;, eller &lt;a href=&quot;http://en.wikipedia.org/wiki/Homoiconicity&quot;&gt;homoiconicity&lt;/a&gt;, och makron &amp;auml;r ett par koncept som &amp;auml;r starkt f&amp;ouml;rknippade med Lisp. Det &amp;auml;r koncept som kanske inte &amp;auml;r helt enkelt att vrida sin hj&amp;auml;rna runt, men n&amp;auml;r man v&amp;auml;l b&amp;ouml;rjar f&amp;ouml;rst&amp;aring; vad det &amp;auml;r och hur det kan anv&amp;auml;ndas s&amp;aring; &amp;ouml;ppnas helt nya m&amp;ouml;jligheter. En konsekvens av denna egenskap, och att Clojure numera g&amp;aring;r att exekvera b&amp;aring;de p&amp;aring; JVM:en och i en JavaScriptmilj&amp;ouml;, &amp;auml;r att vi kan anv&amp;auml;nda samma spr&amp;aring;k f&amp;ouml;r att uttrycka klientkod, serverkod och den data som flyttas mellan klient och server utan behov av mellanformat s&amp;aring; som JSON eller XML.&lt;/p&gt;
&lt;p&gt;Om du &amp;auml;nnu inte kikat p&amp;aring; Clojure s&amp;aring; &amp;auml;r det verkligen n&amp;aring;got som jag kan rekommendera Bli inte avskr&amp;auml;ckt &amp;ouml;ver att det ser s&amp;aring; annorlunda ut. S&amp;auml;rskilt om du, som jag, har varit helt inne i en objektorienterad v&amp;auml;rld de senaste &amp;aring;ren s&amp;aring; &amp;auml;r det ett fantastiskt s&amp;auml;tt att vidga sina vyer och f&amp;aring; nya perspektiv!&lt;/p&gt;
&lt;h3&gt;Ett urval av l&amp;auml;nkar&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Stuart Halloway - Clojure&lt;/strong&gt;, &lt;a href=&quot;http://oredev.org/videos/clojure&quot;&gt;http://oredev.org/videos/clojure&lt;/a&gt;. En introduktion till Clojure och varf&amp;ouml;r spr&amp;aring;ket &amp;auml;r viktigt, fr&amp;aring;n &amp;Oslash;redev 2009.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Rich Hickey - Are We There Yet?&lt;/strong&gt;, &lt;a href=&quot;http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey&quot;&gt;http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey&lt;/a&gt;. En mycket sp&amp;auml;nnande diskussion om identitet, tillst&amp;aring;nd och tid som p&amp;aring; m&amp;aring;nga s&amp;auml;tt utmanar etablerade sanningar runt tillst&amp;aring;nd och OO, av Clojures skapare.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Paul Graham - Revenge of the Nerds&lt;/strong&gt;, &lt;a href=&quot;http://www.paulgraham.com/icad.html&quot;&gt;http://www.paulgraham.com/icad.html&lt;/a&gt;. En intressant diskussion om programmeringsspr&amp;aring;k, och om det verkligen spelar n&amp;aring;gon roll vilket spr&amp;aring;k man anv&amp;auml;nder. Fr&amp;aring;n den kanske st&amp;ouml;rste Lisp-f&amp;ouml;respr&amp;aring;karen av dem alla.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;sthml.clj  - Stockholm Clojure User Group&lt;/strong&gt;, &lt;a href=&quot;http://groups.google.com/group/stockholm-clojure-user-group&quot;&gt;http://groups.google.com/group/stockholm-clojure-user-group&lt;/a&gt;. Anv&amp;auml;ndargrupp f&amp;ouml;r Clojure i Stockholmsomr&amp;aring;det&lt;/li&gt;
&lt;/ul&gt;
          </description>
          <pubDate>Mon, 19 Sep 2011 12:40:18 GMT</pubDate>
          <guid>http://www.citerus.se/post/502304-varf-r-clojure</guid>
          <link>http://www.citerus.se/post/502304-varf-r-clojure</link>
      </item>
       
     <item>
          <title>Bellmanstafetten 2011</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/blog/bellmanstafetten_2011/rickard.jpg&quot;&gt;
              &lt;p&gt;I &amp;aring;r lyckades vi f&amp;aring; i hop tv&amp;aring; lag med deltagare som i nytryckta Citerustr&amp;ouml;jor avverkade de totalt 25 kilometrarna. Och till skillnad fr&amp;aring;n f&amp;ouml;rra &amp;aring;ret n&amp;auml;r det var kallt och m&amp;ouml;rkt fick vi i &amp;aring;r en t&amp;auml;vling i fantastisk v&amp;auml;der med en sk&amp;ouml;n efterf&amp;ouml;ljande picknick i solen.&lt;/p&gt;
&lt;p&gt;N&amp;auml;sta &amp;aring;r satsar vi p&amp;aring; tre lag i Bellmanstaffetten - &lt;a href=&quot;/jobb&quot;&gt;h&amp;ouml;r av dig om du vill vara med&lt;/a&gt;! Under tiden laddar vi om inf&amp;ouml;r H&amp;auml;sselbyloppet i oktober.&lt;/p&gt;
          </description>
          <pubDate>Sun, 28 Aug 2011 20:56:28 GMT</pubDate>
          <guid>http://www.citerus.se/post/468370-bellmanstafetten-2011</guid>
          <link>http://www.citerus.se/post/468370-bellmanstafetten-2011</link>
      </item>
       
     <item>
          <title>Agila kurser i Västerås och Linköping</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/mikael-boman.jpg&quot;&gt;
              &lt;p&gt;Vi ser att agil/l&amp;auml;ttr&amp;ouml;rlig utveckling vinner f&amp;auml;ste i allt fler organisationer och behovet av att utbilda personer till Scrum Master &amp;ouml;kar &amp;ouml;ver hela landet, s&amp;auml;ger Karin Edstr&amp;ouml;m, VD p&amp;aring; Citerus. Att vara borta fr&amp;aring;n jobbet tv&amp;aring; kursdagar klarar de flesta men med besv&amp;auml;ret kring resor och boende ser vi att det finns en tr&amp;ouml;skel mot att utbilda sig, en tr&amp;ouml;skel som vi nu tar bort f&amp;ouml;r M&amp;auml;lardalen och Link&amp;ouml;pingsregionen. Som ambassad&amp;ouml;rer f&amp;ouml;r agila utvecklingsmetoder &amp;auml;r det min f&amp;ouml;rhoppning att fler f&amp;ouml;retag och m&amp;auml;nniskor ska f&amp;aring; del av f&amp;ouml;rdelarna i form av h&amp;ouml;gre effektivitet och p&amp;aring;litlighet, avslutar Karin.&lt;/p&gt;
&lt;p&gt;Citerus l&amp;auml;rare &amp;auml;r certifierade av Scrum Alliance och de arbetar sj&amp;auml;lva som konsulter med att inf&amp;ouml;ra och f&amp;ouml;rb&amp;auml;ttra l&amp;auml;ttr&amp;ouml;rliga metoder.&lt;/p&gt;
&lt;p&gt;Kurserna erbjuds f&amp;ouml;ljande datum:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;G&amp;ouml;teborg 30-31 augusti&lt;/li&gt;
    &lt;li&gt;V&amp;auml;ster&amp;aring;s 18-19 oktober&lt;/li&gt;
    &lt;li&gt;Link&amp;ouml;ping 22-23 november&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kursinformation hittar du p&amp;aring;:&amp;nbsp;&lt;a href=&quot;http://www.citerus.se/kurser&quot;&gt;www.citerus.se/kurser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r information om kurser:&lt;br /&gt;
P&amp;auml;r Buskas, 0736 - 20 44 80&lt;br /&gt;
&lt;a href=&quot;mailto:par.buskas@citerus.se&quot;&gt;par.buskas@citerus.se&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
F&amp;ouml;r information om Citerus:&lt;br /&gt;
Karin Edstr&amp;ouml;m, 0733 - 225 227&lt;br /&gt;
&lt;a href=&quot;mailto:karin.edstrom@citerus.se&quot;&gt;karin.edstrom@citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Citerus &amp;auml;r ett konsultf&amp;ouml;retag som hj&amp;auml;lper sina kunder att lyckas med mjukvaruutveckling. Sedan 1996 har Citerus utvecklat mjukvara, lett projekt, f&amp;ouml;rb&amp;auml;ttrat utvecklarpraxis&amp;nbsp;och f&amp;ouml;rfinat ledningsmetoder &amp;aring;t f&amp;ouml;retag fr&amp;aring;n m&amp;aring;nga olika branscher. Citerus &amp;auml;r experter p&amp;aring; agila (l&amp;auml;ttr&amp;ouml;rliga) utvecklingsmetoder s&amp;aring;som Scrum, Dom&amp;auml;ndriven design, Kanban och Lean. Citerus uppn&amp;aring;r resultat genom att h&amp;ouml;ja kvalitetsribban, s&amp;auml;tta m&amp;auml;nniskor i f&amp;ouml;rsta rummet och minska byr&amp;aring;kratin.&lt;br /&gt;
&lt;a href=&quot;http://www.citerus.se&quot;&gt;www.citerus.se&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Fri, 26 Aug 2011 08:21:53 GMT</pubDate>
          <guid>http://www.citerus.se/post/465808-agila-kurser-i-v-ster-s-och-link-ping</guid>
          <link>http://www.citerus.se/post/465808-agila-kurser-i-v-ster-s-och-link-ping</link>
      </item>
       
     <item>
          <title>Vad är återblickar?</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/tobias-fors.jpg&quot;&gt;
              &lt;p&gt;L&amp;auml;ttr&amp;ouml;rliga, eller agila, metoder har blivit ett vanligt s&amp;auml;tt att arbeta i mjukvaruf&amp;ouml;retag idag. En central del i l&amp;auml;ttr&amp;ouml;rliga metoder &amp;auml;r fokuset p&amp;aring; l&amp;auml;rande och f&amp;ouml;rb&amp;auml;ttring. Med l&amp;auml;ttr&amp;ouml;rliga metoder bygger vi inte bara produkter av h&amp;ouml;g kvalitet, vi bygger ocks&amp;aring; &amp;ouml;kad kapacitet i v&amp;aring;ra organisationer.&lt;/p&gt;
&lt;p&gt;Jag pratade med en utvecklare p&amp;aring; ett stort produktf&amp;ouml;retag om det h&amp;auml;r med innovation och id&amp;eacute;er. Han hade flera lovande id&amp;eacute;er som han g&amp;auml;rna ville utforska vidare, men fick inget geh&amp;ouml;r f&amp;ouml;r dem. Jag fr&amp;aring;gade honom hur det k&amp;auml;ndes. F&amp;ouml;ga &amp;ouml;verraskande svarade han att det fick hans motivation att sakta dala.&lt;/p&gt;
&lt;p&gt;F&amp;ouml;r att en id&amp;eacute; skulle anammas i f&amp;ouml;retaget kr&amp;auml;vdes att den kom fr&amp;aring;n r&amp;auml;tt, officiellt h&amp;aring;ll. I det h&amp;auml;r fallet betydde det att de skulle komma fr&amp;aring;n en chef p&amp;aring; en viss niv&amp;aring;. Jag fr&amp;aring;gade om han trodde att det fanns fler som satt p&amp;aring; id&amp;eacute;er som inte togs tillvara. Han svarade att han trodde att n&amp;auml;stan varenda en av hans kollegor hade en toppid&amp;eacute; som bara l&amp;aring;g och ruttnade bort i en byr&amp;aring;l&amp;aring;da n&amp;aring;gonstans. N&amp;auml;r man f&amp;ouml;rs&amp;ouml;kt lyfta sin id&amp;eacute; n&amp;aring;gra g&amp;aring;nger och misslyckats gav man helt enkelt upp.&lt;/p&gt;
&lt;p&gt;Hur ser det ut i ert f&amp;ouml;retag? Har ni en mekanism f&amp;ouml;r att f&amp;aring;nga upp id&amp;eacute;er om s&amp;aring;v&amp;auml;l produkt- som processf&amp;ouml;rb&amp;auml;ttringar? Hur g&amp;ouml;r ni f&amp;ouml;r att unders&amp;ouml;ka vilka resultatf&amp;ouml;rb&amp;auml;ttrande &amp;aring;tg&amp;auml;rder era kollegor har t&amp;auml;nkt ut, men &amp;auml;nnu inte f&amp;aring;tt geh&amp;ouml;r f&amp;ouml;r? Hur g&amp;ouml;r ni f&amp;ouml;r att utv&amp;auml;rdera dem, f&amp;ouml;rankra dem och planera f&amp;ouml;r deras genomf&amp;ouml;rande?&lt;/p&gt;
&lt;p&gt;Regelbundna &amp;aring;terblickar &amp;auml;r ett s&amp;auml;tt att tillsammans utv&amp;auml;rdera och f&amp;ouml;rb&amp;auml;ttra verksamheten. Till skillnad fr&amp;aring;n expertdrivna eller toppstyrda f&amp;ouml;rb&amp;auml;ttringar, bygger &amp;aring;terblickar p&amp;aring; att engagera de som g&amp;ouml;r jobbet i f&amp;ouml;rb&amp;auml;ttringarna. Det finns flera positiva effekter av det:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Det bygger engagemang f&amp;ouml;r f&amp;ouml;rb&amp;auml;ttringarna&lt;/li&gt;
    &lt;li&gt;Sannolikheten f&amp;ouml;r att f&amp;ouml;rb&amp;auml;ttringarna genomf&amp;ouml;rs och accepteras &amp;ouml;kar&lt;/li&gt;
    &lt;li&gt;De hj&amp;auml;lper deltagarna att se saker och ting ur olika perspektiv&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hur fungerar en &amp;aring;terblick rent praktiskt? Det kr&amp;auml;vs ingen svartkonst f&amp;ouml;r att lyckas g&amp;ouml;ra &amp;aring;terblickar effektiva, men det kr&amp;auml;vs t&amp;aring;lamod och uth&amp;aring;llighet. Med lite hj&amp;auml;lp kan ni l&amp;auml;tt s&amp;auml;tta ihop ett grundformat f&amp;ouml;r era &amp;aring;terblickar som ni kan anv&amp;auml;nda under till exempel ett halv&amp;aring;r, f&amp;ouml;r att sedan utv&amp;auml;rdera och f&amp;ouml;rb&amp;auml;ttra det allt eftersom ni l&amp;auml;r er mer om vad som fungerar bra f&amp;ouml;r er.&lt;/p&gt;
&lt;p&gt;Den som handleder en &amp;aring;terblick beh&amp;ouml;ver s&amp;auml;tta sig in i vad som f&amp;aring;r en &amp;aring;terblick att bli effektiv. En skicklig handledare fokuserar p&amp;aring; att:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Skapa en milj&amp;ouml; i &amp;aring;terblicken som &amp;auml;r trygg, s&amp;aring; att deltagarna t&amp;ouml;rs s&amp;auml;ga vad de t&amp;auml;nker&lt;/li&gt;
    &lt;li&gt;Engagera gruppen med hj&amp;auml;lp av interaktiva och &amp;auml;ndam&amp;aring;lsenliga &amp;ouml;vningar&lt;/li&gt;
    &lt;li&gt;F&amp;aring;nga upp det som s&amp;auml;gs s&amp;aring; att det inte g&amp;aring;r f&amp;ouml;rlorat&lt;/li&gt;
    &lt;li&gt;Hj&amp;auml;lpa gruppen oms&amp;auml;tta sina id&amp;eacute;er till en konkret och &amp;ouml;verenskommen handlingsplan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ett s&amp;auml;tt att l&amp;auml;ra sig mer om &amp;aring;terblickar &amp;auml;r att unders&amp;ouml;ka om det redan finns n&amp;aring;gon i organisationen som anv&amp;auml;nder dem. I s&amp;aring; fall kan man fr&amp;aring;ga om det g&amp;aring;r bra att delta som, helt tyst, observat&amp;ouml;r vid n&amp;aring;gra tillf&amp;auml;llen. Kanske kan ocks&amp;aring; den som leder de &amp;aring;terblickarna hj&amp;auml;lpa din grupp med handledningen de f&amp;ouml;rsta g&amp;aring;ngerna, s&amp;aring; att ni blir varma i kl&amp;auml;derna. Ett annat s&amp;auml;tt &amp;auml;r att ta hj&amp;auml;lp av en erfaren extern handledare, dels f&amp;ouml;r handledning de f&amp;ouml;rsta g&amp;aring;nger, dels f&amp;ouml;r att hj&amp;auml;lpa   er att ta fram ett grundformat f&amp;ouml;r era &amp;aring;terblickar.&lt;/p&gt;
&lt;p&gt;R&amp;auml;tt utf&amp;ouml;rda &amp;auml;r regelbundna ett effektivt s&amp;auml;tt snabbt oms&amp;auml;tta den kunskap och kreativitet som finns i organisationen till l&amp;ouml;sningar p&amp;aring; b&amp;aring;de sm&amp;aring; och stora problem. &amp;Aring;terblickar &amp;auml;r med andra   ord en bra aff&amp;auml;r rent ekonomiskt.&lt;/p&gt;
          </description>
          <pubDate>Thu, 11 Aug 2011 10:15:04 GMT</pubDate>
          <guid>http://www.citerus.se/post/445089-vad-r-terblickar</guid>
          <link>http://www.citerus.se/post/445089-vad-r-terblickar</link>
      </item>
       
     <item>
          <title>Närproducerat och kravmärkt är bättre!</title>
          <description>
            &lt;img src=&quot;http://www.citerus.se//rendition.small/images/people/karin_edstrom_grey.png&quot;&gt;
              &lt;p&gt;Citerus &amp;auml;r ett exempel p&amp;aring; den typ av konsultbolag som n&amp;auml;mns; vi &amp;auml;r betydligt mindre &amp;auml;n j&amp;auml;ttarna i branschen och best&amp;aring;r till &amp;ouml;verv&amp;auml;gande del av konsulter med 10-15 &amp;aring;rs erfarenhet. V&amp;aring;ra konsulter har dessutom jobbat tillsammans under en stor del av dessa &amp;aring;r. Det g&amp;ouml;r att vi kan erbjuda v&amp;aring;ra kunder ett f&amp;auml;rdigt team som vi inte bara tror &amp;ndash; utan vet &amp;ndash; &amp;auml;r l&amp;aring;ngt mer effektivt &amp;auml;n de flesta team som s&amp;auml;tts ihop tillf&amp;auml;lligt, ofta med en mix av anst&amp;auml;llda och timkonsulter.&lt;/p&gt;
&lt;p&gt;Genom att anlita erfarna konsulter i sammansvetsade team, f&amp;aring;r man inte bara tillg&amp;aring;ng till best practices avseende tekniska v&amp;auml;gval och kodning. Akt&amp;ouml;rer som Citerus har mycket l&amp;aring;ng erfarenhet av hur man jobbar med helheten; fr&amp;aring;n att samverka med verksamheten f&amp;ouml;r att p&amp;aring; s&amp;aring; s&amp;auml;tt utg&amp;aring; fr&amp;aring;n dom&amp;auml;nkunskapen n&amp;auml;r systemet eller funktionen designas, via effektiva kravformuleringsprocesser till att jobba med effektiva metoder f&amp;ouml;r prioritering av arbetet, d&amp;auml;r aff&amp;auml;rsnytta alltid skall ha en framtr&amp;auml;dande plats.&lt;/p&gt;
&lt;p&gt;Hur teamen jobbar med estimering och planering av sitt arbete, samt hur integration av den f&amp;auml;rdiga koden sker, p&amp;aring;verkar i allra h&amp;ouml;gsta grad s&amp;aring;v&amp;auml;l kvalitet som produktivitet. Genom att kombinera standardverktyg f&amp;ouml;r enhetstestning, versionshantering och automatisering av byggprocessen kan man &amp;aring;stadkomma en byggmilj&amp;ouml; som garanterar den tekniska kvaliteten i koden. Vi ser alltf&amp;ouml;r f&amp;aring; f&amp;ouml;retag d&amp;auml;rute som jobbar kontinuerligt och l&amp;aring;ngsiktig p&amp;aring; detta omr&amp;aring;de.&lt;/p&gt;
&lt;p&gt;Samtliga moment i kedjan ovan kr&amp;auml;ver erfarenhet f&amp;ouml;r att beh&amp;auml;rska och en f&amp;ouml;rm&amp;aring;ga att kombinera kunskapen till en helhet. Att h&amp;ouml;ja och str&amp;ouml;mlinjeforma niv&amp;aring;n kring Engineering Practices tar tid, och f&amp;ouml;r varje g&amp;aring;ng team sl&amp;aring;s is&amp;auml;r och s&amp;auml;tts ihop igen kommer nya syns&amp;auml;tt in som ger olikheter i den f&amp;auml;rdiga koden. Det &amp;auml;r inte realistiskt att f&amp;ouml;rv&amp;auml;nta sig av juniora utvecklare som s&amp;auml;tts samman i nya team skall kunna vara produktiva p&amp;aring; en niv&amp;aring; som ens &amp;auml;r j&amp;auml;mf&amp;ouml;rbar med ett samspelt team av erfarna konsulter. Detta har inget med den enskilde konsultens kompetens att g&amp;ouml;ra, vi har f&amp;ouml;rm&amp;aring;nen att varje dag jobba med beg&amp;aring;vade yngre utvecklare. Vi l&amp;auml;r oss av dem lika ofta som de l&amp;auml;r av oss.&lt;/p&gt;
&lt;p&gt;Att adressera missade deadlines i projekten med att &amp;ouml;ka antalet utvecklare i teamen, ger s&amp;auml;llan &amp;ouml;nskad effekt. Att outsorca utveckling till l&amp;aring;gl&amp;ouml;nel&amp;auml;nder fungerar i vissa fall, n&amp;auml;r kraven &amp;auml;r enkla och utrymmet f&amp;ouml;r missf&amp;ouml;rst&amp;aring;nd litet. I de projekt d&amp;auml;r vi &amp;auml;r involverade ser det s&amp;auml;llan ut s&amp;aring;. En kontinuerlig, st&amp;auml;ndig och n&amp;auml;ra dialog &amp;auml;r en f&amp;ouml;ruts&amp;auml;ttning att resultatet skall bli det &amp;ouml;nskade.&lt;/p&gt;
&lt;p&gt;D&amp;auml;rf&amp;ouml;r erbjuder vi p&amp;aring; Citerus ett n&amp;auml;rproducerat och kravm&amp;auml;rkt alternativ till den traditionella outsourcingen; sammansvetsade, erfarna team p&amp;aring; l&amp;auml;ttr&amp;ouml;rliga kontrakt, d&amp;auml;r fokus &amp;auml;r att leverera prioriterad aff&amp;auml;rsnytta - inte att syssels&amp;auml;tta s&amp;aring; m&amp;aring;nga konsulter som m&amp;ouml;jligt!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Karin Edstr&amp;ouml;m&lt;br /&gt;
&lt;/strong&gt;VD, Citerus AB&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Citerus frig&amp;ouml;r kraften i mjukvara &amp;aring;t alla som har en vision&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;L&amp;auml;s mer&lt;/h4&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://computersweden.idg.se/2.2683/1.388865/storst-ar-inte-alltid-bast&quot;&gt;St&amp;ouml;rst &amp;auml;r inte alltid b&amp;auml;st&lt;/a&gt;, ledare i Computer Sweden 7 juni 2011&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
          </description>
          <pubDate>Fri, 17 Jun 2011 09:13:48 GMT</pubDate>
          <guid>http://www.citerus.se/post/368618-n-rproducerat-och-kravm-rkt-r-b-ttre</guid>
          <link>http://www.citerus.se/post/368618-n-rproducerat-och-kravm-rkt-r-b-ttre</link>
      </item>
    
  </channel>
</rss>
