Showing posts with label process. Show all posts
Showing posts with label process. Show all posts

January 20, 2012

change management - agile, continuous delivery, ITIL, CABs

Jez Humble's work blog: Continuous Delivery and ITIL: Change Management

Many large organizations have heavyweight change management processes that generate lead times of several days or more between asking for a change to be made and having it approved for deployment. This is a significant roadblock for teams trying to implement continuous delivery. 

.... it’s possible to follow ITIL principles and practices in a lightweight way that achieves the goals of effective service management while at the same time enabling rapid, reliable delivery.

.... Normal changes are those that go through the regular change management process, which starts with the creation of an RFC which is then reviewed, assessed, and then either authorized or rejected, and then (if authorized) planned and implemented.

Standard changes are low-risk changes that are pre-authorized.

....the approval can be made by somebody close to the action – it doesn’t need to work its way up the management chain.

.... Often CAB approval can be a lengthy and painful process. However it certainly doesn’t need to be. The ITIL v3 Service Transition book specifies both that CAB approval can be performed electronically, and that not everybody in the CAB needs to approve every change (pp58-59). Getting agreement on exactly who needs to authorize a given type of change, and making sure those people know in advance the information they need to decide whether to approve it, can mean a fully compliant authorization process that can be performed in seconds in a just-in-time fashion.

.... We can see that ITIL provides several mechanisms which enable lightweight change management processes:

  • Standard changes that are pre-approved.
  • CAB approvals that are performed electronically, rather than at face-to-face meetings.
  • Arranging in advance which subset of CAB members are required to approve each type of change.

.... ITIL follows the common-sense doctrine that each change must be evaluated primarily in terms of both its risk and value to the business. So the best way to enable a low-ceremony change management process is to reduce the risk of each change and increase its value.

....

In a traditional delivery lifecycle, even with agile projects, the delivery cadence looks rather like figure 1. The first release can often take some time: for really large projects, years, and even for small projects typically at least six months.

.... In the world of continuous delivery, .... projects will provision their production environment as part of project inception, and begin releasing to it as early as possible in the delivery process – potentially long before the service is actually made available to users. Further changes are made as frequently as possible

.... Project managers will focus on optimizing for cycle time, ensuring that changes to the system get put live as rapidly as possible. 


.... early and iterative release process also exerts a strong pressure to ensure that the system is production ready throughout its lifecycle.

.... The value proposition of continuous delivery – keeping systems in a working state throughout their development and operational lifecycle – is threefold.

.... allows the customer much more fine-grained control over what is delivered, and perhaps even to discover more radical changes that need to be made to the service in order to make it even more valuable. Second, incremental releases from earlier on are much less risky than a big-bang release following an integration phase. Finally, it allows project and program managers real data on the progress of the project.

.... [pre-approved] standard changes should be much more widely used than they are. 

.... sufficient level of automated testing at all levels before a build ever gets towards operations-controlled environments. That means implementing a deployment pipeline which includes unit tests, component tests, and end-to-end acceptance tests (functional and cross-functional) that are run in a production-like environment. Worried that pressing the “deploy” button might break stuff? That means your automated testing and deployment processes are not up to snuff.

.... Once all this automation in place, it is possible to kick off a positive feedback cycle. 

September 10, 2010

On Lean And Agile (Gil Broza from Agile 2010 panel)

Gil Broza Article: Lean And Agile — Roommates, Married Or Twins?
Our panelists were all experienced Agilists who incorporate deep Lean thinking: Mary Poppendieck, Jim Shore, Alan Shalloway and Jean Tabaka.
....
Mary led with a quick definition: “Lean is delivering constantly increasing customer value for continually decreasing effort, leveraging energy and creativity”. The panelists all agreed that Agile is really a subset of Lean.
....
While Lean thinking can certainly improve the value flowing out an Agile team, its strong suit is in wider-scale application to the business and the whole value chain, “from concept to cash”. We have to pay attention to metrics that traditionally sat on the business side, as Agile lacks discipline around business methods. Teams must understand the business justification — and focus on delivering its promise.
Some people claim that “you can't improve what you can't measure”. But we manage things that we can't measure all the time. .... Lean will help us improve stuff even if it's not measurable.
Lean has us pay attention to throughput and value flow; it encourages having mechanisms for flow control. Agile's mechanism is the iteration ... Kanban's mechanism is the work-in-progress (WIP) limit
....
[the most common mistakes when implementing Lean?] Emphasizing practices over principles and culture; taking Scrum roles as gospel; not realizing the true nature of change (believing the only thing that needs to change are the programmers).
I was surprised by the panel's answers to the question, “What should teams be trained in?” Jean answered: “Reflection” — so the team can even take in the rest of the training, and apply continuous improvement. The other three all said, “Writing testable code!” They all emphasized the point of having great technical skill and writing acceptance-driven, defect-free code.

September 4, 2010

Defect Driven Testing: Your Ticket Out the Door at Five O'Clock

are you not doing TDD yet? start with DDT...

Defect Driven Testing: Your Ticket Out the Door at Five O'Clock:
Test automation is not a controversial topic in most circles. Even developers who don't write automated tests agree it's a great idea. They just don't have time to work on it very often.
....
DDT is a fairly simple concept. When you find a bug, add a test.

Why take this approach?

First, no one can dispute the need for the test. If an issue was found, then it had been missed earlier. Perhaps the developer missed it and QA spotted it. Maybe it slipped past everyone and it was reported by your customer. Whenever it's reported, it needs to be fixed in a way that will prevent it from reappearing.
....
DDT is a gradual approach.
....
Over time you'll find that DDT creates an extremely effective test suite that targets the most problematic parts of your code base. Run your defect driven tests inside of a continuous integration system and you'll find your code running more cleanly every day.

August 27, 2010

Dennis Stevens: We are Doing QA All Wrong

A few interesting things from an article by Dennis Stevens, very loosely quoted...

  • We Don’t Understand Quality Assurance
  • We Don’t Understand the Cost of Rework
    • Rework from failed QA tests are extremely expensive to flow. Sending work back into development interrupts work in process. This has a dramatic effect on cycle time across the system – which results in increased cost of every item in the system.
  • the cost of setting up testing environments is much lower
  • Quality Assurance needs to be part of the development team and process. We need to change our thinking around this. So we need to integrate Quality Assurance very early in the process.
  • We have the Wrong Expectations
    • We Expect Perfection - Not Improved Value
    • We Expect Local Optimization - Not Flow
  • Enable value, flow, and ongoing improvement
Dennis Stevens » Blog Archive » We are Doing QA All Wrong 

From the comments:
  • One thing: No one can assure quality. Can I convince you to change the reference to “Quality Assistance?” (Jon Bach)
  • I prefer ‘testing’ and ‘tester’ to ‘quality assurance’ and ‘QA engineer’ or whatever. But these are nits. The message of Dennis’s post is the point – focus on value, improvement, delivering a better product. (Lisa Crispin)
  • I introduce myself to teams as the “public health nurse” for their project, and then subtly place ‘quality assistance’ in my email signature. (Adam Geras) 
  • testing is a complex, organic, cognitive activity, rather than a rote, bureaucratic, clerical one. (Michael Bolton)  

Blogged with the Flock Browser

February 23, 2010

so you haven't seen complaints about maven?

have you only heard good things?  i'm surprised...

here's some stuff to balance it out.

first, a couple of common complaints:
  • too complex
  • too rigid
  • too buggy
  • too opaque
  • difficult and time-consuming to debug problems
then, a couple of links:
Howard @ tapestry, maven vs ivy
a collection of links on negative maven experiences


February 18, 2010

Separate Estimating from Committing

Don’t let your estimates become commitments. Remember the difference between an estimate and a commitment and keep the two activities separate, educating management and customers as necessary.
Separate Estimating from Committing | Mike Cohn's Blog - Succeeding With Agile®
Blogged with the Flock Browser

January 27, 2010

building from scratch is mind-bogglingly easy compared to changing something

Building something with a single purpose from scratch is mind-bogglingly easy compared to changing something that already exists. 
....
The real cost of complexity increases exponentially.
....
One guy wrote eBay in a day -- one guy, one day! When they built version 2, the project took the same guy many weeks. Version 3 took many years. There can never be a version 4
....
why does each version take longer -- even if replacing the system in full? The answer is that small amounts of increases in perceived complexity (e.g. each new requirement) expands the real complexity of the system exponentially. Want examples? Take a hand-built web-site and add internationalization / localization. Add accessibility support. Add support for other devices, such as an iPhone. Add scale-out. Add high availability. Add security. If you know someone that thinks it's easy, then whatever you do, don't hire that person, fire them if they already work for you, and quit if you work for them.
/dev/null : Weblog
Blogged with the Flock Browser

January 19, 2010

BugsVoice - turn bugs into opportunities

BugsVoice is ... serving friendly error pages and saving the exceptions and feedbacks on your account.

So if you get a trapped exception in your application (or in your web server), this will print out the script copied from your BugsVoice account, display the friendly error page to your customers, and collect their eventual feedback. All this will be saved in your account, and you can access any time to inspect the bug, feedback the customer etc. :-) .
BugsVoice - turn bugs into opportunities
Blogged with the Flock Browser

November 19, 2009

exception handling, bug reporting

Then when an error occurs, try to only ask the user questions you can't answer programatically. Ideally, your exception handling should already track their current action (saving an invoice), current context (invoice screen), the entity being acted upon(invoice #10013), and all the exception info from the program. If you can't capture this and retrieve it remotely, feed it to your web form (in URL params or whatever) when the user clicks 'report this issue'. Ensure you pay attention to any sensitive data requirements.

Then you should only need to ask your users the human questions like - 'How can we best contact you about this issue?' (method / times / etc.), and give them an idea of how long it'll take for them to get a response from a human.
What is the best way to cater for users reporting bugs ? - Stack Overflow
Blogged with the Flock Browser

November 18, 2009

SVN, Git

AMO = addons.mozilla.org team...
Moving away from SVN

We moved AMO into SVN in 2006 and it’s treated us relatively well. Somewhere along the line, we decided to tag our production versions at a revision of trunk instead of keeping a separate tag and merging changes into it. It’s worked for us but it’s a hard cutoff on code changes, which means that while we’re in a code freeze no one can check anything in to trunk. As we begin to branch for larger projects this will become more of a hassle, so I’m planning on going back to a system where a production tag is created and changes are merged into it as they are ready to go live.

Most of the development team has been using git-svn for several months and, aside from the commands being far more verbose, we haven’t had many complaints. We’ve discovered Git is a much more powerful development tool and we expect to use it directly starting some time next year. As of now, we expect to maintain the /locales/ directory in SVN so this change doesn’t affect localizers but we’ll keep people notified if there are any changes to that process.
All Night Diner : AMO Development Changes in 2010

so... should we consider Git instead of SVN?

production tag and merging stuff in when stable sounds like a nice process...
Blogged with the Flock Browser

August 24, 2009

Flock Browser - Flickr Service Outage - Status and Explanation | Flock

interessant å sjå flock si handtering av branch- og bug-problematikk...
Why do browser updates take so long?

Making an update or applying fixes to the Flock browser is sometimes quick and sometimes not. Regardless of how easy to fix, we still have to take all new versions of Flock through a rigorous testing process to ensure that we deliver stable, reliable code to our loyal community.

When our Flickr integration broke, we were already partway into the process of putting together Flock 2.5.1, which includes some key fixes: some rather troublesome Twitter bug fixes, some broken Facebook Chat functionality, and a bunch of other items that are negatively affecting many Flockstars.

At that point the choice was fairly clear: if we stopped work on 2.5.1 and created a new version of Flock that *only* fixed the Flickr integration, we'd double the amount of testing we had to do...and we would delay the release of the 2.5.1 improvements, hurting the folks who aren't affected by the Flickr issue but are affected by Twitter and Facebook Chat issues. By including the Flickr fix in 2.5.1, we're saving time and getting you a whole bunch of fixes sooner.
Flock Browser - Flickr Service Outage - Status and Explanation | Flock
Blogged with the Flock Browser

agile design...

I advocate and practice a responsive style of design. I emphasize the importance of requirements uncertainty
....
No design style can simultaneously minimize cost, maximize revenue, and maximize options in both the short-term and the long-term. Choosing which constraints to resolve early and which to defer results in a style of design whose values and process are clear and easier to communicate. Being clear is the beginning of the conversation about design.
Three Rivers Institute » Blog Archive » The Design Dilemma
Blogged with the Flock Browser

July 12, 2009

Software Development Today: Why specialization in Software development is bad for business

Specialization in software development hurts our business! I'm not talking about the kind of specialization that leads to spend some more time in one area than in others. I'm talking about the specialization that leads us to have ... programmers that don't do anything else!
....
This is not to say that we don't need people with particular strengths in some areas (called "generalizing specialists").
Software Development Today: Why specialization in Software development is bad for business
Blogged with the Flock Browser

July 6, 2009

questions for daily stand-up

this is from a pdf on a different topic entirely (PDF: Dr Holt's CCPM Games - Sixes Game), but in the middle (p.8) is a few questions that could be used for a quick daily stand-up:
1. Did you complete the Active Task Yet?
If not: 2. How Much Time is Remaining?
If not: 3. What are you awaiting?
If not: 4. What can we do to help you?
no. 1 and 2 is in effect info om MIT(s), the Most Important Task(s).
no. 3 and 4 is in reality info on what i call BPP (SPP in Norwegian): Biggest Potential Problem.

this could also be used along with a kanban board, especially if you limit yourself to only one Active Task most of the time.

positive effects of asking/ providing this daily:
  • people will recognize the urgency of completing tasks
  • people will disconnect the due date from the actual completion of the task
  • giving time remaining leads to a better daily view of actual project buffer status
  • having a list of BPPs/ "what's holding up our process" is extremely valuable for process improvement and planning
  • "how can i help" may actually provide help to lingering tasks
NB: ask the 4 questions daily, without much discussion, without penalty, with assistance as needed

July 1, 2009

rapid, "throw-away" prototyping is the crucial and neglected stage in project design

a problem I think is endemic in the industry these days [is] the inability or unwillingness to engage in rapid prototyping. Every successful project I've ever worked on (and I've worked on some fairly large enterprise-sized projects), we started by designing and coding a quick "throw-away" skeleton of the application, that let us look at how the thing worked, where the unseen warts were, and where the vendors had lied about their APIs, etc. This is the crucial and neglected stage in project design, one that most modern design paradigms ignore or actively discourage.
The Hacker Ethic - Harming Developers? - O'Reilly Radar
Blogged with the Flock Browser

June 16, 2009

March 11, 2009

program manager (joel ++) vs product owner (scrum)

Having a good program manager is one of the secret formulas to making really great software.
....
a program manager would ... Design UIs ... Write functional specs ... Coordinate teams ... Serve as the customer advocate
....
One of the best things a program manager can add to the software design process is a second opinion as to how things should be designed
....
A good program manager will come with her own ideas for how the UI should work, which might be better, or worse, than the developer’s idea. And then there’s a long debate.
....
To make sure that the debate happens respectfully and on a rational basis of facts, it’s absolutely critical that the program managers and developers be peers. If developers report to the program manager, at some point during the debate the program manager is going to get sick of the whole thing and just say, “OK, enough talking, now we do it my way.” When they’re peers, this can never happen.  It’s a little bit like courts of law: we don’t allow a lawyer for one side to be the judge, and we work on the theory that the truth is most likely to be uncovered through a process of debate between equals. The debate can only be a fair one if neither side has an unfair advantage.

This is an important point ....  Now pay attention. Programmers can’t report to program managers which means, among other things, that the development lead, or the CTO, or the CEO, can’t be the person who writes the specs.

The number one mistake most companies make is having the manager of the programmers writing the specs and designing the product. This is a mistake because the design does not get a fair trial, and is not born out of conflict and debate, so it’s not as good as it could be.I learned this the hard way.
How to be a program manager - Joel on Software


on another note, product manager seems closely related to product owner in scrum...

Product Owner
The Product Owner represents the voice of the customer. They ensure that the Scrum Team works with the right things from a business perspective. The Product Owner writes user stories, prioritizes them, then places them in the product backlog.
....
The product backlog is property of the Product Owner. Business value is set by the Product Owner. Development effort is set by the Team.
....
The sprint backlog is property of the Team. Estimations are set by the Team.
Scrum (wikipedia)


a couple of links on the comparison between product manager and product owner... and a critic of the product manager role...
Blogged with the Flock Browser

September 11, 2008

automatic testing - challenges

"practice of testing .... turned our art into engineering, introduced process-models, come up with best-practices, and developed tools ..."
Google Testing Blog: Automating tests vs. test-automation

downsides, problemer:
  • "Scripting your manual tests this way takes far longer than just executing them manually.
  • The UI is one of the least stable interfaces of any system, so we can start automating quite late in the development phase.
  • Maintenance of the tests takes a significant amount of time.
  • Execution is slow, and sometimes cumbersome.
  • Tests become flaky.
  • Tests break for the wrong reasons."
men: "advantages of automation still outweigh the cost. .... accept some of these problems as 'the price of automation'"

og der er workarounds:
  • "It takes long to automate a test—Well, let's automate only tests that are important, and will be executed again and again in regression testing.
  • Execution might be slow, but it is still faster than manual testing.
  • Tests cannot break for the wrong reason—When they break we found a bug."
nokre poeng frå artikkelen (mi utheving):

"...a system exposes different interfaces to the environment—e.g., the user-interface, an interface between front-end and back-end, an interface to a data-store, and interfaces to other systems—it is obvious that we need to look at each and every interface and test it. ... also avoid testing the functionality in too many different places."

"...how this system looks inside.
  • Is there a database? If so, the verification should probably not be performed against the UI but against the database.
  • Do we need to interface with a supplier? If so, how should this interaction look?
  • Is the same functionality available via an API? If so, it should be tested through the API, and the UI should just be checked to interact with the API correctly."
"Applying these simple questions will allow us to:
  • write many more tests through the API, e.g., to cover many boundary conditions, ....
  • start earlier with testing the system, as we can test each interface when it becomes 'quasi-stable',
  • makes maintenance of tests and debugging easier, as the tests break closer to the source of the problem, ...."
"To summarize, I figured out that a successful automation project needs:
  • to take the internal details and exposed interface of the system under test into account,
  • to have many fast tests for each interface (including the UI),
  • to verify the functionality at the lowest possible level,
  • to have a set of end-to-end tests,
  • to start at the same time as development,
  • to overcome traditional boundaries between development and testing (spatial, organizational and process boundaries), and
  • to use the same tools as the development team."


August 12, 2008

It's common sense, stupid: Tips to Write a Good Bug Report

Writing is easy, but writing clearly is hard.
It's common sense, stupid: Tips to Write a Good Bug Report

Do's

1. Clear title - the developer should be able to grasp the essence of the bug report from the title alone.

2. One bug per report - no more, no less. reason: confusion, duplication, may be overlooked.

3. Minimum, quantifiable steps to reproduce the problem

4. Expected and observed results

5. which version of the software

6. references - like related issues

7. Pictures-- A picture is worth a thousand words!

Dont's

1. Don't write generic titles
2.
Don't just chat - document personal communications, so that the knowledge won't be lost
3. Don't assume that the developers can read your mind