Posts Tagged ‘Agile’

Benefit from git – still one branch ?

Wednesday, January 26th, 2011

One branch is typical setup in the company when we were deploying agile way of working, since in old days, people are used with CVCS (Central Version Control System) and merging is really headache work at that time.

imageIn Scott’s “why git is better than X”, it is also subversion-style workflow.

When one branch is introduced, it is a hot topic, and the solution we said is keep it local if it can’t be compiled or unit test successfully, but for prototype work and some architecture changes it is really challenge work for them, and in the end, mostly they use separate branch, but it looks break the rule for one branch.

We phase out the old version control system and towards the git system, but we didn’t benefit from git a lot yet, we really need to look into git to benefit from DVCS, powerful branch and flexible workflow are things we can use

Solution

Now when Git is introduced and improvement of CI technology, probably we could change our thinking to open for multi branch again, because it is the feature of Git and this is another reason we choose git !!

Surely don’t mess it up, it doesn’t mean everyone has branch and merge in the end.

It could be used in follow cases.

- prototype or changes with lots of impact will be done in seperate branch, and only passed by CI can be merged back to master branch
- only finished feature (like click “Done” in ALM system) will be merged into master branch, since sometimes unfinished features are useless for other teams.

In Manuel’s blog why ditributed ci is the logic next step, he even gave more thinking behind it, initial a private CI build, and CI build will automatically merge it to master branch if CI is sucessful, and also these should and could be done automatically.

Surely initial a local private CI build is not so simple, since maybe the build process last longer time (1 day), but why not ask questions like below

I want to have a private CI to make sure my changes are safe, and how I can do it in one hour?

Anyway, this is just the rough solution, but hope it can trigger some thinking when we go to git, the game is just started.

Summary

When a new tool is introduced, after the warming-up period, we need start to use its feature to maxium benefit from it, otherwise we loose the benefit for changes.

Reference

- Manuel: http://qualityswdev.com/2010/12/15/why-distributed-ci-is-the-logical-next-step
- Vincent: http://nvie.com/posts/a-successful-git-branching-model/
- Scott: http://whygitisbetterthanx.com/#any-workflow

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

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.

ALM – Code2Cloud

Friday, December 3rd, 2010

imageLet’s take a look Code2Cloud ALM solution from tasktop http://tasktop.com/connectors/code2cloud.php, though the product is not released yet, the discussion is already spread out, and now I have the time to look in detail

- Video introduction: http://tasktop.com/connectors/code2cloud.php
- the interview @ infoq http://www.infoq.com/interviews/tasktop-kersten-choksi

CodeCloud is the new way thinking of ALM, and it is working result by cooperation between tasktop (mylyn) and VMware’s, so there are something inside related

  1. task management is based on mylyn, but it also moves to server side and possible to moving your issues from one server to another server smoothly (mentioned in the interview), surely this part will not be available in first release, since there are too many integration work, and to make it smoothly needs lots of efforts
  2. cloud is the buzz words, and this comes from VMWare, but not so much technology behind, it simply to put bugzilla, git repository management tool (probably gerrit), hudson, spring server into one virtual machine, so developers can get what needed from one resource, it can save lots of deployment time and integration cost, worth doing it. But without it, probably we can do it by ourselves.
  3. App runtime is mostly the buzz words as well here, and it comes from springsource (division of VMware now), it embed Spring Application server probably and also some tools like Spring Roo? (http://www.springsource.org/roo), therefore if it is not based on springframework, probably we need extra settings.

Summary

CodeCloud currently is just a prototype and good vision in the long term, the most challenge

For developers : Whether developers can be used to enjoy task focused development model (mylyn)
For tasktop: whether they can smoothly integrate everything inside (hudson,git). (I see successful story from sonatype and codebeam), and whether they can quickly integrate external system

Anyway, let’s waiting for the first release to see what will happen, to really use it needs longer time, probably happen in Q3, 2011

let’s start try to use mylyn and be used to it first.

EclipseSummit2010 – Day 2 (2)

Thursday, November 4th, 2010

It is quite nice in the eclipse summit, I can find my another favorite area, ALM and Agile.

See whole table: http://www.eclipsecon.org/summiteurope2010/table/table?date=2010-11-03

Key notes: Mission-Critical Agility

imageThis is the best presentation I ever seen in my life, so fantastic, not only the slides, but also the ideas, presentation skills, he master it. http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&id=1955

image  image

Dr. Jeff Norris is the supervisor of the Planning Software Systems Group at the NASA Jet Propulsion Laboratory, his points for agility is to have 3 attributes

  1. Vision
  2. Risk
  3. Commitment

Which are great to do the software development.

f2f discussion

Professional scrum developer

Fortunately I notice the company andrena who is doing this thing, http://andrena.de/leistungen/professional-scrum-developer, since in ScrumGathering2010 shanghai, I heard this, the background is mainly.

Currently CSM (certificated scrum master) two days training focus on scrum process only, people are request to have more real skills besides the process, so the idea is to create "CSD” (Certificated Scrum Designers"), and it is also five days’ training,

I chat with the designer for 30 minutes more, and give my comments, it is a good start to bring agile with needed competence for designers.

It is just started, let’s see what happen, they should be the partner with scrum.org for this activity

sonatype professional

sonatype is famous as maven expert, not only on the maven competence, but also the maven repository tool – nexus, and it seems they want to expand their business to more ALM,

I asked for extra demo for their sonatype professional (not free), which provide excellent hudson integration,  see the hudson jobs in eclipse, and click it to open failed test case directly in eclipse, and it should be possible for them to have nexus plugin to easy use.

I need to look into other hudson eclipse plugin to see the difference.

They didn’t publish in their webpage, please wait.

Others

I attended the “feature of code coverage for eclipse” as well, it is nice, jacoco.

The jasforge session is not so promised, though they try to integrate with JIRA, hudson and others, but the web interface is really ugly, I didn’t see a good value there.

That’s all for the day 2, nice and tired with some thinkings.. close to 22:00, hopefully you enjoy it and continue for the Day 3

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.

agile development skills – thinking from Certified Scrum Developer

Monday, June 7th, 2010

In ScrumGathering 2010, I heard the Certified Scrum Developer program http://www.scrumalliance.org/CSD from ScrumAlliance, and below is the feedback for the first CSD course http://dnicolet1.tripod.com/agile/index.blog?entry_id=2020614, see more @infoq Reactions to the First Certified Scrum Developer Course

It is interesting topic to me, since when I give the introduction to the designers for agile, most of them wants to know more practical ways to go forward after playing with agile for a while (like 6 months).

Tools matters for agile for agile development

image While in the company, most of java designers had no time to look deeper in those areas, and used to use old tool, which cause low efficiency.

And also for those C++ (or other old company language) designers, when they start to deploy agile, they face more challenges, I’d like give them chance to see how those problems are solved in java world, then it can give them new ideas, most of core concepts are not language related, while when start the agile journal, we all notice java is much easier to let designers to start agile.

If I have time, I want to create 5days (40hours) training to cover this area

day 1: establish the agile environment: version control (svn), maven, hudson CI , eclipse. nexus
day 2: TDD, junit with coverage
day 3: TDD, quality control : PMD, FindBugs, coverage, SONAR
day 4: collaboration with mylyn (trac), frequent release, package: maven respository more
day 5: ???

When using most efficiency tools, I try to introduce those TDD, CI, Refactory… agile practices.

How do you think about it ?

knowledge management – Coding workshop

Wednesday, May 26th, 2010

Inspired with Code Camp – share competence in community., I am used to host coding workshop in my company, becauseimage I always treat coding workshop is one of the good practice for knowledge management.

And the benefits I think are

  • Improve the designer’s competence by coding
  • Let people know with each other from different product to create reuse base
  • Align the knowledge focus by providing predefined workshop
  • Great stages for designers to improve soft-skills by being a teacher (presentation, influence skills …)
  • Visible the senior people by being a teacher to live them up
  • Improve the organization skills for core members
  • It is another way to try Google 20% time.

Give you some hints below for our 8th coding workshop, the topics are

  • Cloud computing with Hadoop
  • Software load balancer @ Linux 
  • Xen virtualization
  • XSLT in Java
  • Good slides for technical presentation
  • NoSQL – Cassandra
  • Hudson in CI
  • HTML5: the next generation of web

normally >50% topics are related new technology, it doesn’t mean we will use it soon, it just let designers open their mind to changing their thinking, people are usually too focus on existing skills, the world change quickly.

You may not use Scala/Hadoop, but you must understand how Functional language and Cluster computing works

and I am happy with the current running since by short iteration (one month) and repeat work make the process (organization work) is less extra work

The only think I have to pay a lot of attention here is to always coach the teachers to focus on coding (practice) instead of presentation.