tag:blogger.com,1999:blog-13398584433821679772023-11-16T12:32:14.192+01:00Thommy's KMblog - Moved to http://agileinoslo.comMoved to - http://agileinoslo.comThommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.comBlogger53125tag:blogger.com,1999:blog-1339858443382167977.post-2611431353307195622009-09-06T12:38:00.002+01:002009-09-06T12:40:22.206+01:00New site is up!<a href="http://agileinoslo.com">http://agileinoslo.com</a> is the new site for my blog! Remember to change your bookmark and RSS reader!<div><br /></div><div>All posts and comments are already moved to the new site.</div>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-36389296218360090382009-09-04T21:02:00.008+01:002009-09-04T21:55:48.819+01:00Being a coach is more than listening and giving advice<a href="http://en.wikipedia.org/wiki/Socrates">Socrates</a> is one of my heroes from the history of philosophy. The idea of asking questions instead of giving the answers or well meant advice, has always been an inspiration to me. It might be my curious nature and that I want to know more about people and their thoughts on the world. But I have found that asking questions works really well.<br /><br />"<span style="font-style: italic;">To solve a problem, it would be broken down into a series of questions, the answers to which gradually distill the answer you seek.</span>" [<a href="http://en.wikipedia.org/wiki/Socrates#Socratic_method">Wikipedia: Socratic Method</a>]<br /><br />The importance of questions is often mentioned in popular coaching methods and it often has the purpose of understanding a challenge or problem that someone has. It often opens up the conversation and you become an active part in the conversation instead of only being passively listening. Although this is a good conversation it is often important to ask the questions in a way that it is not possible to answer them with a simple yes or no. In this way you do not close the conversation and the person you are asking will often need to think more and differently before answering. This pulls the person out of the blind alley they were in.<br /><br />If I am the one being asked the questions I feel inspired by it. There is a person that is actually listening to what I say. That person challenge me to go even deeper in my thoughts on the subject by asking all these questions that I am not able to answer with a simple yes or no. I'm forced to think and someone told me once that thinking is important.<br /><br />Next time you feel compelled to give advice, maybe you should ask a question instead.Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-70983342184090970532009-08-15T13:21:00.004+01:002009-08-15T13:39:23.640+01:00Visibility is important for motivationPeople always say that visibility is important, but often they fall short when asked to give examples.<br /><br />I thought I'd give you an example that is fairly obvious and can easily be tested. That's if you have a newer kin of Nokia mobile phone..<br /><br /><a href="http://sportstracker.nokia.com">http://sportstracker.nokia.com</a> <br /><br />The sportstracker gives you a few data about your training trips, but it also give you motivation trough it's functionality.<br /><br />You can have your own training buddies connected and then you can actually see what your friends have done. The application is actually quite simple using your GPS on the mobile phone and registering speed and altitude in your workout (cycling/running/walking++).<br /><br />More important is the web site that creates the link between your buddies and you. This creates a sense of competition between you and your friends. I find it inspiring to see that a friend of mine has done a 10km track in an hour last night. I suddenly find myself wanting to do some running.<br /><br />Maybe this can inspire you to do some of the things you do at work visible to others as well. Maybe it creates a small sense of competition and fun. Maybe it motivates you and your co-workers?<br /><br />It surely motivates me! Too bad you can't use the mobile phone when swimming..Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-20696342417518962132009-08-10T16:46:00.003+01:002009-08-10T18:01:14.089+01:00Maintenance - Repay the debtIt's time to repay some of that <a href="http://en.wikipedia.org/wiki/Technical_debt">technical debt</a> you have accumulated. The project has been running for a few years and often the code gets smelly. The code smells of complexity and bugs.<br /><br />What do you do to approach such a problem? You clean it up of course!<br /><br />Now I will tell you how you can choose what areas in the code you want to clean. For this you need a couple of tools. First one to calculate complexity and then you need something that tells you about changes in your codebase.<br /><br />I have used <a href="http://martyandrews.net/resources/complexian.html">Complexian</a> and <a href="http://www.statsvn.org/index.html">StatSVN</a> in this example, but you may find other tools that does the same job just as well.<br /><br />I started with Complexian and found that a few classes had a complexity above 21, which I consider as high risk. Then I combined those data with what we can get from StatSVN and came up with more that suggested that we should focus on the classes that has high complexity and many revisions. This because I reckon that a class with high complexity that is changed a lot must mean trouble. There is a lot of different approaches you can use, but this one proved to be sufficiant in my case.<br /><br />From Complexian<br /><span style="font-style: italic;">Register.java: Complexity is 38</span><br /><br />From StatSVN<br /><span style="font-style: italic;">Register.java : Lines of code: 2273</span><br /><span style="font-style: italic;">Register.java : Revisions: 32 (4th place)</span><br /><br /><br />Here you can of course add all the static code analysis you want, but for me this is sufficient to tell that there is something wrong with this class. In this way it is also easy to persuade the project manager that this is a risk that needs to be taken care of.<br /><br />Then I dive in to the class to find if's and else's that needs a refactoring.. At the same time I notice that the class is in the wrong package as well. My goal is to reduce the risk in this class. Never refactor without a goal. Refactoring makes no sense if you do not do it to achieve something better. If the class never gets changed and you have no bugs that you know of in there, leave it alone. It would probably not show up as a candidate either since there would not be many revisions of that file.<br /><br />Write some tests for those methods that have high complexity is hard, but rewarding. In this way you deal with risk in a professional manner instead of just "feeling" where to do you cleaning.<br /><br />Hope this gives someone inspiration and a way to start repaying that technical debt they have accumulated during the years.Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com1tag:blogger.com,1999:blog-1339858443382167977.post-54750653457685709132009-07-08T13:02:00.005+01:002009-07-08T13:27:33.360+01:00The Importance of Removing ImpedimentsWhat is an impediment?<br /><br />I do not actually know, because it is such a difficult word. But what I do know is that the time I have to wait for a build to finish is not productive for me. It even costs the customer money. This is for me an impediment.<br /><br />If the time it takes to build the application is too long it starts imposing challenges on me. When it takes too long I do not want to build too often.. If i do not build too often, the tests is not run often and I will not commit code very often. This leads to finding bugs much later than I normally would have if I had ran the build more often. So I use more time fixing the bug because I have produced much more code since i made the bug somewhere in the huge codebase.<br /><br />Did you get it? If not let's run som numbers on it instead. Lets say that it takes 8 minutes to build and that you use most of the resources on your computer while doing it. The best you do is drink a cup of coffee or read up on some documentation while you wait. Let's say you do the cup of coffee and wait for 8 minutes to see if the tests fail or pass. Its not only you in the project, but ten people that does the same thing. We all do it 2 times a day, because it takes so much time and we dont like coffee that much. We do it every day of course. So the numbers become:<br /><br />8 minutes x 2 times x 10 people x 5 days = 800 minutes = 13.3 hours<br /><br />Not only does it take you 16 minutes a day to build, but it takes the whole project 13.3 hours to build a week. Let us then say that you work 40 weeks a year and your project runs for 2 years.<br /><br />13.3 hours x 80 weeks = 1064 hours<br /><br />So during the lifespan of your project it has been used 1064 hours for running the build. What if those hours could have been used to implement more functionality because you have so much good code that your build did not take any noticable time at all. Imagine that the cost where 1000 NOK per hour that would amount to 1064000 NOK used on build/coffee during the project.<br /><br />1064 hours x 1000 NOK = 1064000 NOK<br /><br />That is not just an impediment to me, but to the customer. Build time matters! So remove those impediments while you still have time left to do so. If you are not busy building the application of course...Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com3tag:blogger.com,1999:blog-1339858443382167977.post-56449970344879019352009-06-19T01:00:00.001+01:002009-06-19T01:00:05.412+01:00Smidig 2009: Påmeldingen er åpnetPåmeldingen er åpnet for Smidig konferansen! Jeg tror årets konferanse kommer til å være like fantastisk lærerik som i fjor!<br /><br /><a href="http://twitter.com/smidig">Smidig på twitter</a><br /><a href="http://smidig2009.no/">http://smidig2009.no</a>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-66979356756560972622009-06-18T17:25:00.004+01:002009-06-18T18:19:24.843+01:00Do the rights things at the right timeYesterday I attended the <a href="http://xp.meetup.com/13/">oslo xp-meetup</a> with an expectation of hearing some inspiring thoughts on software developing using xp and agile techniques. What I did get was a very good presentation of lean startups and how to do the things that matter the most at the right time (like in xp and lean).<br /><br />It was <a href="http://www.threeriversinstitute.org/blog/">Kent Beck</a> who presented his new ideas on what he defined as "the flight of a startup". The analogy used the different phases an aeroplane is in before it's cruising at 30.000 feet.<br />1. taxi<br />2. takeoff<br />3. climb<br />4. cruise<br /><br />Kent emphasized the need to be careful about spending cash (if it was limited) in the taxi and takeoff phase. The most important issue that I noticed from my perspective was during takeoff where you actually remove functionality thats not being used because you want to get better scalability. I'd call it reduce the risk of cluttering up your good ideas with the bad ones. But as Kent said, removing features are not easy and often we tend to let them stay in there. Another interesting statement from the re-inventor of TDD was that you should ALWAYS track usage in you applications.<br /><br />I will start to do just that. I will start putting in functionality for tracking usage in my applications. This to be able to get actual feedback on what is being used in the application and what is just waste. Then we have an actual map of the used functionality and with this we can start doing some real work. Removing functionality thats not being used will be removing code that slow us down.<br /><br />If he is doing this talk somewhere near you, take the trip and listen in on the ideas. It's good stuff.<br />Another very nice post on startups <a href="http://blog.asmartbear.com/blog/too-small-to-fail-how-startups-can-grow-in-recessions.html">here</a>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com1tag:blogger.com,1999:blog-1339858443382167977.post-90280674810487054532009-06-11T09:22:00.002+01:002009-06-11T09:26:49.743+01:00I have a brain!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvXGirkuNqJyDbN3Io-sCBSUVkk6m9IHSRDvcEtg-0G0xnf4T06cYcCPWFiQHo0E5kbYFYjTReKSUA09N10WO-buiMRhxcqeTkTZ-pGC5cZ0_2WYYwXW2GMmvpSA0_Lt2W0c0BU38COpcG/s1600-h/myBrain2.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 277px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvXGirkuNqJyDbN3Io-sCBSUVkk6m9IHSRDvcEtg-0G0xnf4T06cYcCPWFiQHo0E5kbYFYjTReKSUA09N10WO-buiMRhxcqeTkTZ-pGC5cZ0_2WYYwXW2GMmvpSA0_Lt2W0c0BU38COpcG/s320/myBrain2.JPG" alt="" id="BLOGGER_PHOTO_ID_5345983544099237090" border="0" /></a><br />A friend of mine is writing his masterthesis on frequences in an MR machine. This machine scans your brain. Yesterday he asked me to help him out with his last scan for his thesis.<br /><br />Do you have a brain? Use it! :)Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-50976249480652531432009-06-08T07:15:00.000+01:002009-06-08T07:15:00.805+01:00Communication and ContextWhat about it? We all know that communication is important and most of us also know that the context of where or what the communication is about is just as important.<br /><br />Consider some of the pictures i took while in China. They show a will to communicate with you as an english speaker, but they do not always make sense. Anyway here are a few of them:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCPG2q3MHYiiLahZp0n8abe-ezJThI7LXtELoCMhrozCtRNbe7d5-82O2WyUcDOVvYD4HbnDE93F_MtdPT4XXTHZlBnDEXG11OxWb03GpWs1OPDDNbPE1IIef5F_eao2kTewYnYF74LeLX/s1600-h/china_signDetour.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 256px; height: 296px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCPG2q3MHYiiLahZp0n8abe-ezJThI7LXtELoCMhrozCtRNbe7d5-82O2WyUcDOVvYD4HbnDE93F_MtdPT4XXTHZlBnDEXG11OxWb03GpWs1OPDDNbPE1IIef5F_eao2kTewYnYF74LeLX/s320/china_signDetour.png" alt="" id="BLOGGER_PHOTO_ID_5344617527846811618" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsFwNtVcSn9fpwPE3eSGOJ6_CgkG2KwEOkdSul7WoTXaxW0i63r7cx7aNN7tEeiZGaoV7wB8V6Ol3DHGcNvOsRtqYwHyfqzQgFCC6XenNlXAJTRZWWhfDsTOVONgkkRIQETlSYVRL-jeXE/s1600-h/china_signConverse.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 148px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsFwNtVcSn9fpwPE3eSGOJ6_CgkG2KwEOkdSul7WoTXaxW0i63r7cx7aNN7tEeiZGaoV7wB8V6Ol3DHGcNvOsRtqYwHyfqzQgFCC6XenNlXAJTRZWWhfDsTOVONgkkRIQETlSYVRL-jeXE/s200/china_signConverse.png" alt="" id="BLOGGER_PHOTO_ID_5344618131861156626" border="0" /></a><br />The next one is harder to understand the meaning of.. Mingtien means tomorrow, so maybe they mean tomorrows language café? or language coffee?<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg0qrUfcST-e-vwBYnBHVOTxR0Yaz79i5BCL3jiK0vcx6MZZDmrLQjIjj4EN0XiJIMxl6Jcsh8pqqlobuQOIWIlHA9K_2CUdc3P3RUG0OZsJdmaxxdjEhwWzeHT8Nm1l6szKbbt2BLY-sF/s1600-h/china_signCoffee.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 120px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg0qrUfcST-e-vwBYnBHVOTxR0Yaz79i5BCL3jiK0vcx6MZZDmrLQjIjj4EN0XiJIMxl6Jcsh8pqqlobuQOIWIlHA9K_2CUdc3P3RUG0OZsJdmaxxdjEhwWzeHT8Nm1l6szKbbt2BLY-sF/s200/china_signCoffee.png" alt="" id="BLOGGER_PHOTO_ID_5344618792177404210" border="0" /></a><br /><br />Think about the context when you communicate with someone. They might not understand what you are trying to communicate even though they understand the language.Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-33445224926913441612009-06-07T13:09:00.003+01:002009-06-07T13:16:22.073+01:00Motivation and AttitudeMost of our life we stick to some basic values. Sometimes we do things we would usually not do because someone or something motivated us to do so. Its the attitude to be open to change that is one of our most important traits.<br /><br />It is time to start motivating for change. Its your life and it should be you who decide what you want to do with it.<br /><br />Have a look at this movie from the HOME project. It speaks of motivation for change on a global scale.<br /><br /><a href="http://www.youtube.com/homeproject">http://www.youtube.com/homeproject</a>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-69392494434512894212009-06-04T19:13:00.007+01:002009-06-04T20:06:29.774+01:00Mockups, what is it good for?Some people like to think in terms of text and others prefer diagrams or drawings. I am a huge fan of drawings. But I prefer drawings that do not draw too much attention to details that are not important in the context. When looking through some old favourite blogs I found this post about <a href="http://headrush.typepad.com/creating_passionate_users/2006/12/dont_make_the_d.html">the level of detail in a demo</a>. Its a great summary of what not to do when you want to show ideas and get creative feedback.<br /><br />And guess what? I've been in a discussion with someone about this before. In the discussion someone mentioned a tool that gave you the possibility to make mockups fairly quick with a look of a sketch. I've now tested and even bought the tool for my self to use at work when making backlog elements for further specification. Since my drawing skills are rather lacking the tool helps me to make some really nice sketches. The tool (<a href="http://www.balsamiq.com/">Balsamiq</a>) is really easy to learn and I use less than 5 minutes on the sketch below.<br /><br /><div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWhR6YbzuClZmvISib1R-VfoAtBXPwxhyphenhyphenHEWz7Fz48wFR25cVqWbYBjT0XIgjJqOLhNORwfA1fEISyvclx-eFYsv0GjSnHKvmnCZMwTbTlCWqlzw-kKTAa-Rlo870sCX9AWnUqucKQTv-n/s1600-h/mockup.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 298px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWhR6YbzuClZmvISib1R-VfoAtBXPwxhyphenhyphenHEWz7Fz48wFR25cVqWbYBjT0XIgjJqOLhNORwfA1fEISyvclx-eFYsv0GjSnHKvmnCZMwTbTlCWqlzw-kKTAa-Rlo870sCX9AWnUqucKQTv-n/s320/mockup.png" alt="" id="BLOGGER_PHOTO_ID_5343540032419627106" border="0" /></a>The level of detail enables us to communicate on the content instead of the details of the dialog window like colors and text size.<br /><br />And as Kathy mentioned at CPU; it does not give the customer the idea that we are almost done with implementing it, because it looks almost finished on the openoffice slide!<br /><br />This is because the details that really doesn't matter right now is not there. I would go as far as to say that this is good enough for specification purposes in most cases. It will get changed later in the development iteration anyway, when the customer sees the real screen during development he will then ask for new or altered functionality. The important part here is that this sketch often contains enough information to start developing the desired functionality. This removes the waste of making too much spesification. And did I say that this sketch is so much easier to change than a photoshop picture?<br /></div>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-61077263126904646422009-05-07T21:28:00.003+01:002009-05-07T23:44:04.679+01:00BalanceYou need to have balance.<div><br /></div><div>If you want to do things right you need to be in balance. Being in balance in taiji (tai chi) means that you have practiced doing the movement many times and you are able to have control through the whole exercise, thus never loosing balance. It does also imply that you have the mind in balance.</div><div><br /></div><div>But what does it mean to be in balance in a project? I would say it is the same thing. The project should have practiced doing things slow enough to gain full control and enable the people to be in balance. If you run fast and you do not normally run that much, what do you think will happen? You either run too fast and not be able to finish the round because you are exhausted or you are maybe running so fast that you loose your footing and fall? These are the visible problems we easily notice if you are not fit enough to run that fast, but there are others that are more subtle indications like your running style. Maybe you are running in a hurtful way and if you continue to run in this way you will harm your body, but not see it before you have been running for a long time.</div><div><br /></div><div>To run fast you have to run well. To run well you have to practice. To practice well you have to practice slow. Did the sprint go bad? Maybe you ran too fast? Slow down and be in balance whereever you are. When in balance you are always able to change your direction.</div><div><br /></div><div>When a project is in balance it adapts to whatever comes down the road. It runs well and it runs fast.</div>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com2tag:blogger.com,1999:blog-1339858443382167977.post-87608214320526373202008-11-29T11:15:00.002+01:002008-11-29T11:22:25.436+01:00VacationI am sorry for the lack of posts these last months, but time has been too quick to pass on me. The reason for this post is to inform you that I will be going on vacation for the rest of the year. Maybe there will be some posts during my backpacking in China, but I do not know.<br /><br />I have a lot of ideas for great blogposts in the new year, one is an experience I just had in a project that suddenly had new stakeholders and I got some opinions on coaching in the agile environment (+even on being your own coach). But all this will have to wait till next year if I do not get bored down in the far east.<br /><br />Merry Xmas and a Happy New Year to you all!Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-90888071632432085982008-11-17T14:58:00.002+01:002008-11-17T14:59:44.169+01:00Video from Smidig2008The videos are here! http://smidig2008.confreaks.com/<br />It's in Norwegian I'm afraid, but its all about agile. I promise!Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com4tag:blogger.com,1999:blog-1339858443382167977.post-79883232438729406092008-09-10T18:56:00.004+01:002008-09-10T19:10:08.189+01:00Smidig 2008, 9-10 OctoberSmidig 2008 is soon here! <a href="http://smidig2008.no">http://smidig2008.no</a><br /><br />Last years conference was a great success and I had good experience with the openspace discussions that I attended. This year it is even better! Since I had such a great time last year I thought that this year I could help out with the organizing. And I am!<br /><br />This year we will have a even better location with more space for discussions and mingling. For you guys out there that does not understand Norwegian, do not despair. I will give you some of the lightning talks wrapped in my perspective after the conference..Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-90764382353480849802008-07-23T22:19:00.002+01:002008-07-23T22:27:45.954+01:00More on Age of Conan and priorityIt looks like someone at Funcom has found that communicating with the "product owners"/customer is a good thing. <a href="http://forums-eu.ageofconan.com/showthread.php?t=69567">Here</a> you can read about a Funcom employee asking for a list of bugs and new ideas.<br /><br />Lets hope they keep things like that going and make AoC a great gameThommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-35662077711543801662008-07-18T09:08:00.002+01:002008-07-18T09:09:55.089+01:00Maintenance project?<div style="text-align: justify;">In <a href="http://en.wikipedia.org/wiki/Software_engineering" title="Software engineering">software engineering</a>, <b>software maintenance</b> is the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment.”(ISO/IEC 14764). [<a href="http://en.wikipedia.org/wiki/Software_maintenance">Wikipedia</a>]<br /></div><br /><div style="text-align: justify;">I have been bugged by the term maintenance project for a long time and it is time to vent the frustration here. The project I am working with has two parts, one for development and another for maintenance. While the project is called a maintenance project we actually do produce a lot more new functionality than correcting fault and adapt the product. Many projects are in the same environment and it is unfortunate that they are called maintenance project when they actually should be rid of the term maintenance. We do maintenance as well, but not to the extent that it should be reflected in the name.<br /><br />The reason I bring this up is because maintenance is not a popular word and people start to get all kind of ideas when they hear the term. People often say that maintenance projects does not use any new technology, they do not do anything exciting (from a developers perspective). Well this is in our case wrong. We do new functionality every day and we make use of some of the newest technology out there. Our code grows and adapts with new technology.<br /><br />Let me mention some of this years improvements to the code and environment:<br />New platform: Moved from IBM Websphere to JBoss.<br />New JDK: Moved from IBM JDK 1.4.2 to Sun JDK 1.5<br />EJB2.1 to EJB3<br />.Net1.1 to .Net2<br />New EpiServer version<br />RAD to IntelliJ<br />..and a lot more!<br /><br />I think one of the important tasks in a project is using new technology, not for the sake of having new toys, but to be able to move forward. The changes we made in the project have made new functionality possible in new and better ways for our customer.<br /><br />So my suggestion is to stop using the term maintenance when the project delivers more than 70% new functionality instead of maintenance as defined at the top of this blog. Make room for new technology in you project not only for your own motivation, but also for the sake of your customer.<br /></div>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com1tag:blogger.com,1999:blog-1339858443382167977.post-83385195406312873082008-06-24T08:58:00.004+01:002008-06-24T09:47:21.178+01:00Priority and Age of ConanWhat is priority?<br /><br />It is often easier to ask people about what they want first instead of asking them about priority. This often shows when you ask the product owner about what is important and they say that all is important. Then you might try to ask for what is the most important functionality. Then they normally have problems choosing which task it is, because they are all important. They all have high priority.<br /><br />Here is a trick; Ask the product owner what they want first. What do they want in the next delivery? They usually pick the most important for them. If you have multiple product owners, then let them pick their different functionality and add it all together in to the sprintlog.<br /><br />Now over to something I just recently noticed about priority and product owners over at the discussionboards for Funcom's new <a href="http://forums-eu.ageofconan.com/forumdisplay.php?f=8">MMORPG: Age Of Conan (AoC).</a> The game has been in the stores for about a month and hundreds of thousands have bought it already. If you read the posts on the forum you will quickly see that many of their customers are not satisfied about the product. Even though one should be careful to believe everything on discussion boards there is one thing that really is obvious. Many of the posts talk about priorities of bug fixes and new functionality. I wonder if Funcom listen to their product owners, who in my opinion is the customers that play the game. The last patches has been critisized for not delivering the bug fixes that are important to the product owners. There have been posts about new functionality that have no value for the product owners.<br /><br />To have hundreds of thousand product owners is no easy task I can imagine, but I ask myself what would I do? It seems to me that they really need to involve the product owners and actually deliver value. I propose to make it possible to vote for issues on the discussion boards and make it visible that these are the most important issues. Then when the new patch arrive they actually deliver what the product owners thought most important.<br /><br />Make a list (backlog).<br />Vote on items from the list (1 week or until next patch).<br />Put the items on the list in prioritized order.<br />Start at the top and work you way down.<br />Rince and repeat.<br /><br />Any comments?Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com2tag:blogger.com,1999:blog-1339858443382167977.post-71213687276024823542008-05-14T16:20:00.004+01:002008-05-14T16:26:35.228+01:00Visibility #2<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgneryAv-inQiaEDaWiTmnykOYx0pxmeC60E11VWemVYbe9TyMHSpfDnfOEkimN3EFhl5pr-JpZx98VIkdHvFR5HFUTe1KpMsuRvbl5evdcvdlDru5x689YKBhCAdBRuPLFs9s83CQKpiPd/s1600-h/Image112.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgneryAv-inQiaEDaWiTmnykOYx0pxmeC60E11VWemVYbe9TyMHSpfDnfOEkimN3EFhl5pr-JpZx98VIkdHvFR5HFUTe1KpMsuRvbl5evdcvdlDru5x689YKBhCAdBRuPLFs9s83CQKpiPd/s320/Image112.jpg" alt="" id="BLOGGER_PHOTO_ID_5200254212240732498" border="0" /></a><br />As promised, here is the picture of the new screen! At the moment it shows our builds, news from the wiki. tests and test coverage. We downloaded the add-on for firefox that gives us a slideshow of the different tabs.<br /><br />People might think that this would be great for your own screen, but the resolution is not nearly as good as a monitor.Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com2tag:blogger.com,1999:blog-1339858443382167977.post-46397727329559135032008-05-03T14:10:00.005+01:002008-05-03T14:31:18.440+01:00Visibility<div style="text-align: justify;">I have just ordered a 32" flatscreen for our project! I plan to use it to increase the visibility of the continous integration status. By this I mean the build status, the Cobertura test coverage data and the JUnit report.<br /><br />This means that when we have the daily meeting, the screen will be very visible and as scrum master I want to increase focus on our test coverage. More coverage will enable us to make changes without the fear of breaking the application.<br /><br />The last week I have used several hours to remove broken and useless tests from the codebase. This has been tedious work and the result is a lower test coverage than earlier, but now we have only tests that are running and not giving us an error (not the same as failure). We have made tests during our workshops and these tests now shows brightly on the JUnit report (-sky) as passed tests. Hopefully this will be motivation to actually go in to old code and bring it up to better standards with tests. We do all these changes one small step at the time and it actually seem to be working!<br /><br /><br />I will be back with some pictures when the screen has arrived.<br /><br /></div>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com1tag:blogger.com,1999:blog-1339858443382167977.post-17456511126399594802008-03-09T09:37:00.003+01:002008-03-09T10:08:02.362+01:00Certified Scrum MasterYep. It's true! I'm now a certified scrum master.<br /><br /><div style="text-align: justify;">This week I attended "Agile Project Coaching and Project Management with Scrum Certification" which was teached by <a href="http://www.scrumalliance.org/profiles/50-martine-m-devos">Martine Devos</a>.<br />The course was more a workshop than a lecture and I really enjoyed it even though I knew most of the theory from before. The way she spoke about her practical experience in regards to getting things done, the pragmatic approach to teach us about the different techniques of agile was great. It was highly influenced by questions and people got really good answers supplied with examples and stories from the real world.<br /></div><br />She talked about the importance of showing progress and <a href="http://alistair.cockburn.us/index.php/Earned-value_and_burn_charts">visibility</a> in the team, part of the solution there is <a href="http://www.xprogramming.com/xpmag/BigVisibleCharts.htm">big charts</a>!<br /><br /><div style="text-align: justify;">Another important issue she brought up was agile planning. Yes, there is actually more to this than just an iteration (sprint). We did an exercise and put together three sprints and made a release plan for this. The first sprint was more detailed than the second and it was more detailed than the third sprint.<br />The idea is not to waste your time in details of later sprints as the customer or even the world may change its course before you actually are to implement it. Maybe you even learned of a better way to do it. But you need to know something of whats coming up the road. Things like, is it big, medium or small? Is it complex? Does it involve others or only your team?<br />Take things into account, but don't use all your precious time on the details. Use common sense.<br /></div><br />With all this in my backpack I'm looking forward to Wednesday where Mike Cohn is talking about agile estimation and planning. See you at <a href="http://xp.meetup.com/13/calendar/7355873/">xp.meetup</a>!Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-22133142736245552002008-02-13T20:33:00.004+01:002008-02-13T21:06:00.850+01:00Getting things done..You have heard it before and I am saying it again. When you got a lot of things to do it's easy to loose focus. As a project manager its imperative that you have focus on the prioritised tasks.<br /><br />I'm what you can call a "yes" person. When people ask me for help or wants me to do something for them I tend to say yes. This keeps me interested in work and it often puts me in positions where I can learn new things, meaning that being a yes person is great. But sometimes the amount of things I have said yes to gets too big. Thats when I start to loose focus on what I need to do, especially what to do first. When this happens we ask ourselves questions like, <span style="font-style: italic;">what is the most important task</span> or <span style="font-style: italic;">which task has the nearest deadline</span>. These questions are important, but what you need to do first is to actually know what tasks you have said yes to.<br /><br /><br /><span style="font-weight: bold;">Make a list!</span><br /><br />It's often as simple as that. Just make the list and things becomes much more clear. Then add deadlines on the tasks and prioritise it.<br /><br />As a professor at the university I knew said, when you know what to do there is only two more things: <span style="font-weight: bold;">First thing is to start and the next is to continue!</span><br /><br />Not that different from scrum now is it?<br /><br />Some inspiring webpages on GTD and the like:<a href="http://www.davidco.com/coaches_corner.php"><br />Coaches corner</a><br /><a href="http://www.allthingsworkplace.com/">All things Workplace</a>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-27484122942535354202008-02-10T15:22:00.000+01:002008-02-10T15:58:51.923+01:00The value of search enginesBefore we were able to find solutions to our technical problems by asking people at work or to read a manual. In the last 15 years the search engines have taken over this responsibility. I'm a huge fan of engines like google.com to help me when I'm stuck on a technical problem.<br /><br />Often that is my first respons when people ask me about a technical problem.<br />"Have you tried to google it?".<br /><br />This brings me to another side of the search engines. It can really be hard to find the answer you are looking for if you do not know how to make your search good enough.<br /><br />Take this problem I just had on my lovely Dell XPS m1330. Dell have been really stupid and added their own software thats connected with one of the buttons on the keyboard. So for me that have Ubunbtu Linux installed instead of the prepackaged windows, it creates a huge problem. When I press the button, the laptop cannot start the operating system again.<br /><br />There is virtually no documentation of how the Dell Media Direct program works or even how it is installed. Because when pressing a "special" button on the keyboard the laptop tries to start Dell Media Direct. This crashes my normal ubuntu install and destroys what is called a MBR. This MBR is what enables me to actually start any operating system on a pc.<br /><br />After reading alot of forumposts and various blogs I finally find one that helps me out.<br /><span style="font-weight: bold;"></span><span style="font-size:85%;"><br /><span style="font-style: italic;">If I accidentally hit the MD key, my partitions gets fudged and I have to repair them manually.</span><br /><span style="font-weight: bold;">Response:</span><br /></span> <span style="font-style: italic;"><span style="font-size:85%;"> Have you tried pressing the button a second time? I notice if I press it it ruins my partitions as well, but if I press it again everything is perfect again... Not sure what it actually does...<br /></span><br /></span>This solves my problem and voilá I can boot into ubuntu linux again.<br /><br />To find this forumpost, I had to tweak my search and narrow down the findings to an amount that I could actually be able to read. It took me about one hour to find this little piece of information.<br /><br />But at the same time as doing this I read a lot of other interesting things too. Maybe the search engines not only helps us with the problem at hand, but helps us to know more in general? It reminds be of the work we are doing in the company on <a href="http://en.wikipedia.org/wiki/Semantic_Web">semantic web</a> and the use of <a href="http://norheimd.wordpress.com/">this technology to find information</a>.<br />I wish there was an easier way to tell the search engine what I am looking for.<br /><br /><span style="font-style: italic;"></span>Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0tag:blogger.com,1999:blog-1339858443382167977.post-16946886809982551982008-01-27T19:52:00.000+01:002008-01-27T20:27:56.169+01:00Work EngagementIn my <a href="http://tb-kmblog.blogspot.com/2008/01/workshop-legacy-code.html">last post</a> I talked about fear as an obstacle to be productive in development of a software project. Knowledge can conquer this fear, but there is also something else that can make people forget their fear. <a href="http://www.management-issues.com/2008/1/9/research/the-many-faces-of-employee-engagement.asp">Engagement</a>!<br /><br />If you are really interested and motivated in your work you might just not be afraid of the huge codebase and the possibilities of errors and bugs when you do a change to it. In my opinion a motivated person often learn faster and are quicker to pick up on positive changes in their environment.<br /><br />I often feel an "energy" when doing something interesting and it keeps me motivated. I read different blogs and I buy both management and system engineering books. This keeps me interested because I am constantly learning something new. But it is not what makes me actually tick, what does it is the actual tryout of an idea. Even if you only read it in a book or a blog. Does it work? If it does work it spurs me further in to the idea and I get motivated to continue to try new ideas.<br /><br />How does one motivate others in the same way? To some extent I think it happens automatically when they are close to, or are working together with a person that has this energy. But is it enough?<br /><br />My advice is to bring your colleagues or friends to the spot where you get your motivation from! Be an enabler and the motivator. Do not be afraid to bring new things to the table. Enable for others to bring new ideas into the work environment.<br /><br />A day that nothing new is tried out can be a wasted day.. Can work be performed better for you and your company in any way?<br /><br /><br />Some of my favourite places to get ideas and inspiration:<br /><a href="http://www.thepracticeofleadership.net/">The Practice of Leadership</a><br /><a href="http://www.managementblog.org/">Management Skill Blog</a><br /><a href="http://managementcraft.typepad.com/">Management Craft</a><br /><a href="http://agileleadership.blogspot.com/">Agile Leadership</a><br /><a href="http://xp.meetup.com/13/">XP Meetup</a><br />*Technical*<br /><a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings">Uncle Bob</a><br />(++)Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com2tag:blogger.com,1999:blog-1339858443382167977.post-89778033268834903182008-01-16T19:49:00.000+01:002008-01-16T20:34:14.898+01:00Workshop: Legacy CodeIt's true. We got it! We got legacy code..<br /><br />To best describe legacy code I turn to one of the guru's on the subject, Michael Feathers:<br /><br /><span style="font-style: italic;">[After all, there is an emotionally neutral definition of "legacy code." Legacy code is code from the past, maintained because it works. But, for people who deal with it day in and day out "legacy code" is a pandora's box: sleepless nights and anxious days poring through bad structure, code that works in some incomprehensible way, days adding features with no way of estimating how long it will take. The age of the code has nothing to do with it. People are writing legacy code right now, maybe on your project.<br /><br /></span><span style="font-style: italic;">The main thing that distinguishes legacy code from non-legacy code is tests, or rather a lack of tests.] ( full <a href="http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf">article</a> and <a href="http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052">book</a> )</span><br /><span style="font-style: italic;"><br /></span><span>We now have more than 180 000 lines of java code in my project. To me that is a lot of code. How can you have knowledge of the code to safely say that your change will not break any existing functionality? You can't!<br /><br />There are many reasons to why you can't know for sure. Let me give you an example. One of the classes is almost 10 000 lines long and has methods that contains more than 500 lines of code. If we get a bug report and go in to that class to change something you can be sure that there is something in there waiting for you to mess it up. The class is impossible to change and it will take forever to fix this bug. And by fixing the bug you may actually introduce another , because someone was expecting that specific value in another part of the application.<br /><br />The reason for expecting the bugged value can be many, but you can't know for sure if it will break something. Without a test, we can never know if that other functionality break when we change something.<br /><br />Even with tests you can't be sure not to break anything. But at least your tests will lower the risk of not finding the bug you created with your change.</span><span style="font-style: italic;"><br /></span><br /><br />The tests help us have actual knowledge of the application. Not only can we read the tests, but we can actually get feedback from them when we do something to the code. This helps us to know more of the dependencies and the relations in the code. It helps us to understand the code better. But when you have 180 000 lines of code, do you really want to add another 100 000 in tests? No. But I do want to have tests around the changes i make and take <a href="http://blog.crisp.se/henrikkniberg/2008/01/03/1199386980000.html">small steps</a> to create a safer place to work. Because it is fear that keeps us from attacking this monster class with our refactoring and our changes. Get rid of your fear by learning more about the code with tests.<br /><br />In this spirit we have scheduled a small workshop for tomorrow to handle that fear. We will delete unused code and we will write tests for the code we are moving out of one of our biggest classes. We will discuss and learn about our code. With this knowledge of how to handle legacy code I hope that we will conquer our fear of changing code in horrible places.<br /><br />This is knowledge in action!Thommy Bommenhttp://www.blogger.com/profile/02386501747333360774noreply@blogger.com0