Archive for the ‘Agile’ Category

《程序员》9期:敏捷和工具 – 参考

Tuesday, August 30th, 2011

我写的文章刊登在2011年 《程序员》9期上, 上面参考链接忘放了,在这里补充一下。

参考

  1. 中文敏捷宣言: http://agilemanifesto.org/iso/zhchs/
  2. Redmine: http://redmine.org/
  3. 《Agile ALM》:http://www.manning.com/huettermann/
  4. 持续集成理论和实践的新进展http://www.infoq.com/cn/articles/ci-theory-practice
  5. Jenkins:http://jenkins-ci.org/
  6. Hudson正式更名为Jenkinshttp://www.infoq.com/cn/news/2011/02/jenkins
  7. Oracle proposes to move Hudson to Eclipse:http://kohsuke.org/2011/05/04/oracle-proposes-to-move-hudson-to-eclipse/
  8. Jenkins: The Definitive Guide》:http://www.wakaleo.com/books/jenkins-the-definitive-guide
  9. 李剑翻译的《硝烟中的Scrum和XP》: http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches
  10. Gerrit:http://code.google.com/p/gerrit/
  11. Android的代码审阅: https://review.source.android.com/
  12. 《Git权威指南》:http://www.ossxp.com/doc/gotgit/
  13. 《Maven实战》和许晓斌:http://www.juvenxu.com/mvn-in-action/
  14. 敏捷之旅中国:http://agiletour.cn/

图四网上也没有。

clip_image002

图四:Android的Gerrit代码评审系统截图【11】

希望一起探讨,我会在博客上有更升入介绍。

How to start agile ?

Monday, January 17th, 2011

Let’s start one common “How to start agile ?

imageCompetence buildup

Before any consultant service, you need to find the people inside the organization to have some knowledge on agile, and in current agile industry, Scrum is the suitable framework to start with, so I suggest to take “Certificated Scrum Training” for pioneers first http://www.scrumalliance.org/, just remind you, not everyone can give CSM training, only 50 around people can do this.

And below is the model for competence

Layer 1: 2-5 people who will drive agile and have passion on this area

They should attend CSM public training to get contacts outside of the company and can continue get support outside, it could be part of person training as well.

The people in this layer should continuously learn Scrum/XP/Kanban/Lean, not only the books, but also the learn from others/

This step/layer should be done before any agile pilot.

Layer 2: senior group and all managers for internal scrum training by expert

Senior group (include all managers) should attend official scrum training, depends on investment, it could be done inside organization as well, but it should be trained by at least outside Scrum Expert.

This step could be done little later, like during agile pilot.

Layer 3: general scrum introduction

Everyone should get general scrum training before any agile pilot, it can be 2-3 hours’ training by first layer.

Start pilot

Agile deployment in the beginning should be stepwise, and how fast depends on your competence layer 1, normally

  1. start with a quite mature team with simple features to understand the scrum framework, like how to control the daily startup meeting, how to use whiteboard, …, the team could be interns and feature could be some improvements
  2. choose one mature team in the real development project with simple features to see how to fit in real project
  3. mature team with small challenge features to see how to solve complex issues.
  4. Now it should past 6 monthes, … …

If the manager groups have good competence or have consultants to support you, you may jump to step 2 or step 3 first.

Just remind, don’t let agile deployment hurt the business, it will get lots of resistance from different stakeholders.

Bottom up or Top down

for my experience, it could be done bottom up in the beginning in the team level, it must have great management support for top down if you want to spread into whole organization, since it soon or later will impact organizations, it needs high level thingings.

Summary

Start agile in the company should be careful, and prepare and grow the competence with the time going on, scrum is the good start, since it is common language so far.

Not everyone like agile deployment especially for project managers and some line managers ;-)

book review – Agile ALM (MEAP)

Thursday, December 16th, 2010

image When ebook comes out, I am used to pay more for the books, especially when I receive 50% discount (countdown to 2011 from manning) for this Agile ALM book from manning.

This kind of calendar seems quite popular in Western country, I am not sure when Chinese market will import this as new business ;-) , since we are used to have x-mas now, though it is not traditional holiday.

Ok, back to the book, it worths the pay, and I spend one week to read it completely.

Agile ALM book review

Quick go through

imageGenerally it is an excellent book, since seldom there are books to cover this area, maybe you think it is another busiword for “Agile ALM”, actually it really gives the another angle to think about the ALM (mostly tools inside) to help you to evaluate the tools, mainly he wants to introduce the lightweight tools suite and connect them together.

In Part I, it is kind introduction and strategy thinking.

Michael (author) describes why he introduced Agile ALM and his thinking what it could be, it gives a lot of new thinking on this area why we need ALM and what is the “requirement” for it.

Probably you need to revisit these part after the whole book to understand them more, this is one excellent style for this book, give some theory first, probably you will not understand it quickly, then comes more practical information to tool level, in the end, go back to those theory, you will master it (hopefully).

In Part II, it help you to understand Agile ALM into second levels to start connect with your normal works by describing the scrum (popular agile framework) and task management.

Scrum and Task-based development are two key parts of current ALM trends since all ALM starts with issue management and try to fit for the needs of scrum (planning and release).

Though in MEAP version, Scrum is not well described, but it will be fixed when it is finally released

For the task part, mylyn is quite different approach compare to the normal task management in web sites, it is great it is mentioned here though it is not so detail. (BTW, you can’t expect the book describe everything you want to know, then it is not a book, it is internet ;-)

Part III and Part IV are mostly tool description, it is good there are introduction pages in the beginning to give your the relation with Agile ALM, it touchs building (maven), 3pp management (maven repository), CI (teamcity), release (maven, svn), testing (mock tool/TestNG for unit level and FitNesse/Selenium).

Mostly with those tools introduction, you can understand more for Agile ALM, we really need good tools to support your agile WoW, when you go through all those tools, you can understand more on detail of Agile ALM to see which is important features inside.

Other findings in the book

it is always quite challenge to describe tools in the book (long duration for the book before publish), since it is used to be out of date quickly, therefore keep it in good level is key, fortunately it is good in this book.

Summary

Anyway nice to read it if you are doing agile way of working, and you don’t know how to deal with the infrastruture to the changes, it is the book need to buy.

If you don’t want to see details in tools, you can just download first chapter (which is free) to get introduction for agile ALM, though I really encourage you to buy it and master this.

Others

Michael will also present this in jfokus2011 in Stockholm (http://www.jfokus.se/jfokus/speakers.jsp), be there to know more.

By the way, I like the MEAP book (Manning Early Access Program), it gives your the chance to discuss with author directly, and insight thinking, surely if lucky, you can influence the information inside

ditaa – DIagrams Through Ascii Art –> Why ?

Tuesday, December 14th, 2010

imagewhen I am trying the solution for maven markdown plugins for request, I noticed another interesting project http://ditaa.sourceforge.net/

Generally you write simple text (ascii art), the ditaa tool will help you to generate cute diagram automatically, it is useful for javadoc and wiki or (markdown documents).

Similar things like text2uml http://www.websequencediagrams.com/.

Why people like this text2diagrams ?

from agile/lean point of view, it is less task switch, each switch will cause waste (http://agile.dzone.com/articles/waste-6-task-switching), mostr of developers use at least texteditor as central (not matter IDE or not) to deal with the source codes, it is very time consuming to switch to another tool (also different tool for different purpose).

from programmer point of view, besides it is the hack spirit (quite important to most of developers), and using text, it is easy to tranfer or put into version control system.

ALM solution – Meeting with sales from codebeamer

Wednesday, December 8th, 2010

imageToday, I had a workshop with sales-man from codebeamer’s partner (codebeamer – http://intland.com, its partner – http://cbchina.esast.com), it is a nice product.

Last time, when I visited codebeamer’s demo booth during EclipseSummit2010, and quite interesting for their git usage (in their company) and also this nice product codebeamer, and this time, i had the chance to look into detail.

It is quite similar to JIRA/ScrumWorks Pro version in high level, but in detail it has difficult focus, all those levels ALM solution cover

  • All of them are mainly issues management tool as basic with good authentication (like integration with LDAP server)
  • Good extension, it is possible to open API to integration other products
  • Start to cover agile planning part (e-whiteboard), like GreenHopper for JIRA, ScrumWork Pro surely support Scrum and kanban, ScrumWizard is added for codebeamer as well
  • All are friendly to Mylyn due to mylyn’s good framework.
  • Multi SCM support, all of them are well support to svn/git

What’s nice things I noticed in codebeamer (server side and client side)

  • Strong wiki support with extension (marco) in everywhere
    In other ALM system, like task detail description, it uses html or plain text, it is very difficult to post internal connection, in codebeamer, it can embed useful report and connect to internal system easily using like [TSK:001], it can be automaticly linked to that task
  • Auto release notes generation, in the release notes, it will automatically collected finished requirements (marked in issues management), it is very nice small feature, since most of release notes are copy/paste from somewhere, it is used for forget sth. in report
  • changes in source codes are associated with requirements, it is done in “Eclipse Suite” (codebeamer eclipse plugin), and it is done automaticlly (it detects your current active tasks and fill in when you commit the codes), later from the web, you will be able to see which codes are changed for which requirements, it is excellent for bugs.
  • Some nice integration with hudson in web side, but I forget what it is ;-)
  • Seems good support for external git repositories, since I notice lots of different ways to sync git repositories
  • some workflow are defined inside, seems quite good though I didn’t really follow it, it is key features in codebeamer since they target to lots of business domain (not only software ?)

See official feature list: http://www.intland.com/products/cb/features.html and their comparison http://www.intland.com/products/cb/comparison.html

Somethings I wanted are missed in codebeamer

  • less test case management as default, it is stated to be done in test case management tool side to develop plugin to codebeamer
  • hudson integration in client side

Need time to look into it and find more valuable things.

Since Agile ALM needs to integration lots of things and make it smoothly as much as possible, therefore it needs to practice more to understand each part.

Hopefully the local agile (scrum) communinty can start to look into these areas beside pure process discussion ;-)

Books in my wanted list

Tuesday, December 7th, 2010

I am used to buy some real books (not ebook) every month via local online bookstore http://www.dangdang.com, and this month, I may be possible to order some english books, here are the lists I want to have, those books are all just released (mostly after Oct. 2010)

image

Making the software (http://oreilly.com/catalog/9780596808327/),  and from the contents, it covers lots of interesting area which I didn’t touch before like

Chapter 12:How Effective is TDD ? (most people push for this, I need to take a look inside)
Chapter 15: Opensource Versus Proprietary Software
Chapter 30: Measure productivity (10x means)

imageDriving Technical Change (http://pragprog.com/titles/trevan/driving-technical-change), I am used to have lots of “strange ideas”, which I can forsee it will be value for us, but I loose the management skills to make it happen like how to sell this to the management team, in order to make our R&D sites to lead the software development, I need not only learn this from other sites, but also learn from books, in this book

imageThe Cloud at Your service (http://www.manning.com/rosenberg/) is the area of my interesting for long time, I think I found the way where to start this technology and combine this with our own application now mostly, do I ?

In this book, it covers the business and also practical considerations, it can save me lots of time to google with valuable information

 

imageContinuously Delivery (http://www.amazon.com/gp/product/0321601912) as the title mentioned, it help me to know more about how to deploy our software quickly, it is one of the major part of “software”

I live in one company for long time, i need to change my mind by using this kind of books to see which is the best in IT world.

Hopefully it can give me answers ;-)

image Agile ALM (http://www.manning.com/huettermann/) is another excellent book related with ALM (Application Lifecycle Management), it is related my “ALM” drivement locally, it can help me to understand in this domain.

In this book, it not only cover the theorical part, but also some details in good example, and the author try to find the real value from ALM, for the purpose of ALM, this is something he used for “agile”

And I already bought the MEAP (Manning Early Access Program) ebook, which I can enjoy

I may write my reviews in my blog with my experience.

how to get support for Open source tools ?

Saturday, September 25th, 2010

In Ericsson, we are used to sign agreement for the support from management level, and designers use support contract to get support like Sun (Oracle), it works ok (not excellent) since we got people to claim ;-)

image So when more and more open source tools are introduced into product, people are lost on the tool support when trouble comes.

Since no support “exist”, manager and designers more focus on solving by ourselves, which loose the power of the open source tools

The solution is quite straigtforward, using community way to get support, but make it happen and efficiency is quite tricky.

How opensource support works

Let’s see how open source support normally works

  1. “Official” support channel, almost all opensource tools use mailalis (mailman or google group) or bug report tool for you to contact them, though it is not contract, no promised to solve in time, but it actually works much better.
  2. blogs and news around the tool will help you to understand
  3. consultant service, if the tools grows well, it may generate consultant company around it.
  4. source codes is good, though mostly no one will read the source codes directly, but it could have the chance to find sth.

So why it is tricky, because there are lots of interesting behind it, and if no reply from the community or team group for your questions

It happens often, and as my experience, there several reasons

  • !! Your problem is not identified clearly, no one understand what it means, not like support contract, no one is forced to react your questions, be well prepared with this. People are busy, don’t want to check for details if the problem is not clear to them
  • The community never use this kind of configuration, it is also the indication it is the risky for you to use it in this scenary, the statement in the feature list maybe not 100% verified.
  • The community is not active, this also means the risk to continue for the tools, try to find other alternative as quick as possible

community support is one important fact to judge the 3pp in the beginning, if there is no good community support behind it, be careful. It will be trouble in long term, don’t be attracted by nice features easily.

don’t complain the community, be good to it, and you will get it back later.

Summary

This is my suggestion, if you think some 3pp opensource is important for you, choose a mature community and join the community from the beginning, if you get good repution there, you will get more chance to get support. If you notice the unactive community, you can get remind at once.

Opensource tools change quickly, be inside. Anyway it is still better than most of commercial tools, because most opensouce tools are built for glory, others are built for salary.

Leave Eric Steven Raymond’s suggestion How to Ask Questions the Smart Way for you to think more.

increment vs. iteration – agile development

Monday, September 20th, 2010

Let’s start the increment and iteration concept, then to see what’s the problem and some solutions, probably you will see why we have so many technical debts.

Increment and Iteration

This seems quite confuse people on what is increment and what is iteration though we mention iteration everyday.

Don’t be sad, since it is also confuse for expert, and I googled an excellent blog from Jeff Patton http://www.agileproductdesign.com/blog/dont_know_what_i_want.html, and I repeat his explaination

imageBy incremental development I mean to incrementally add software a time. Each increment adds more software – sorta like adding bricks to a wall. After lots of increments, you’ve got a big wall.

imageBy iterative development I mean that we build something, then evaluate whether it’ll work for us, then we make changes to it.

Mostly when we talk about Scrum Sprint Iteration, we do increment development, at least in my area, it is common.

What’s the problem and solution ?

Misusing the concept doesn’t cause problem, it just lost one nice weapon for one “iterative development”, for my experience

increment development is mostly used for mature development and close to waterfall, like our business development, we mostly know what will happen in the end, so we divided all backlogs into feature A,B,C and implement (design/develop/testing) them in each iteration.

image

While mostly those features are too new to teams, when they finish feature A,B, they start to understand what it is, but they have no time left (from planning perspective) to improve them, then technical debts comes, and also team complain they have less time to develop one feature

image

In opensource world, mostly people use iterative development, where you will see RC1, RC2 or alpha, beta release, the software is finished step by step, for each feature, it gives the time for understanding and improvement, this is most useful approach for us.

Summary

Seems simple, No don’t have that thinking, agile development is always tricky, there is no A or B, mostly they are mixed, understand it and practice it carefully, then you may master some part.

Try to think about real iterative development instead of increment development for your sprint.

Leave some homework for you if we do iterative development

* how about Done definition ?
* how about potentional software development ?
* who should drive this ?

Come to me for more discussion, if I got enough comments, I will write extra post for this.

Reference:

http://samipoimala.com/it/2010/04/16/iterations-and-increments-explained/
http://alistair.cockburn.us/Incremental+versus+iterative+development

How to handle bugs in agile ?

Friday, September 17th, 2010

Lots of people discuss with me on how to handle bugs in agile, shall we create extra team to fix bugs, or let designers who create to fix it

Below are my thinkgs, bugs = trouble report = tr, QD5: quality door for release, GA: official release to customer

image

Trouble Report (TR, a.k.a. BUGS) stays with the software development, and normally we face them in 3 phase

  1. development phase, which are generated by agile feature team itself, we call it Internal TR
  2. design follow up (DFU) phase, normally it is between QD5-GA phase, main development is finished, some extra verification (release like) are executing, we call it DFU TR
  3. After GA release, the TR comes from customer mostly, so name it Customer TR

Then how to handle it in agile software development, I treat them differently.

Internal TR

It is also part of technical debt, mostly team will record them in wiki/excel files, and they should be definitely be solved by the team themselves.

DFU TR

This is slight tricky, since the team mostly move to another new feature development, mostly I suggest to let the original team to handle these TRs by themselves as well.

If there are lots of DFU TR happens, then typical case is that one team members will focus on those tasks with other team members to create virtual TR fix team, hopefully this seldom happen.

Customer TR

Mostly we use maintentance team to focus on customer TR to improve customer satisfaction, since communicating with customer is quite different, and the time pressure is also different.

Surely the competence needs to transfer as well, typical solutions

- move whole development team into maintenance if you really want to have stable team
- swap some team members from development with maintenance team
- involve maintenance team in later development phase to competence build-up

And I like most is treat knowledge build-up in your software development, always involve maintenance team to know what’s the current features and record what is the tricky part

Keep in mind, we are in one big team, if you create sth., always be the first people to support others to fix it, fix it dones’t means to do by yourself always, support, mentor others.

Please share your comments.

Why people select github/google code instead of sourceforge

Friday, August 27th, 2010

I am big fans of opensource development, and sourceforge.net is my favorite before, not now.

When sourceforge is started, it opens the door for lots of designers to share codes, and most of popular tools are host there, now you can notice most of projects are started to host in http://github.com and http://code.google.com , (not touch http://bitbucket.org now), what is the reason ?

Is it because github provides git and google code provides mercurial (hg) ? No, I don’t think so, one reason is that github, google code provides wanted features quickly and nicely.

Let’s start a project

Normally you need request the project and fill something (category) and start to introduce the project (since it is where user will access).

clean homepage and fast access, it is more like iPhone and other phone, yes functionality is almost the same, but the user experience is total difference.

Other features

Let’s show other nice features in github, every feature you can find it in sourceforge, just slow and not user friend.

online edit: When I browse code in github, sometimes I want to make small changes, I can do it in github and it is treated as one commit

online comments: it is kind of quick code review function

support markdown format: show the document easily, it can avoid write information in seperate place, this is a reason most project in github don’t use wiki, see http://github.com/progit/progit/blob/master/en/01-introduction/01-chapter1.markdown

issue track: this is embedded into github, but most of people select google groups

Networkimage feature

This is a most excellent feature in github to encourage sharing codes but still keep the relation and credits to the origin, this feature is quite unique, it exist in github only and based on git.

All the forks in github are related into one network, you can clearly see where it comes from and what’s  change in other place.