Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Feed aggregator

Project Success: It Is A Balancing Act

Any framework reflects a balance.

Any framework reflects a balance.


When I asked a sample of my blog readers and podcast listeners whether being on-scope, on-schedule or on-budget defined project success, it was an exercise designed to understand personal biases. Understanding individual and team tendencies is important. However as we have discussed, the choice of a single attribute without context is just an intellectual exercise. All projects work to find a balance between all three attributes based on their specific business needs and context.

In well-run projects, decisions are not made in a vacuum. The balancing act between the scope, budget and schedule is fraught with difficulties. For example, I recently talked to a friend who was working on a project that included a feature promised to a major customer for their holiday season. The team determined that they were not going to make the delivery date unless some of the scope was jettisoned (adding more team was not an option at that point). In this case decisions about scope, budget and schedule exceed the product owner’s decision-making authority, even though she was a senior leader. Any solution would affect marketing and sales plans, revenue projections and potentially earning reports. Many voices had to be heard before a path forward was found. All three attributes had to be manipulated to find a solution. In this case scope was deferred, release dates shifted and additional budget provided. It was not a perfect solution, but it was feasible and focusing on a single attribute would have resulted in more problems. The size and importance of any project will affect how large a circle needs to be involved in decisions if the balance of on-scope, on-schedule and on-budget get out of balance.

Some potential combinations of scope, budget and schedule are impossible. As Fred Brooks observed, adding people to a late project will just make it later. When impossible teams are asked to deliver a with impossible constraints they will invariably cut corners, make mistakes, incur technical debt or flat out ignore one of the levers (and then ask for forgiveness).

There is a classic project saying, “on-time, on-budget, or on-scope, pick one.” It has been said that good project managers can deliver two of the three and everyone struggles with delivering all three. Real life projects represent a compromise between all three components. When time is critical, the team might cut the scope or pursue additional resources. On-scope, on-budget and on-schedule can be thought of as three dials with customer and management satisfaction providing feedback based on how they perceive progress. [HUH?] Project teams constantly adjust each dial to elicit positive feedback and to deliver the maximum value possible.

Categories: Process Management

FsiBot: Assorted Tweets

Phil Trelford's Array - Sat, 09/20/2014 - 17:23

FsiBot is a cloud hosted bot that evaluates F# expressions in mentions, built by Mathias Brandewinder. Underneath it uses the Twitter API, F# Compiler Services all hosted on Azure.

In the beginning the F# community put a lot of effort into bringing it down testing it’s security. Nowadays it’s become more of a creative outlet for code golf enthusiasts showcasing all sorts from ASCII Art to math.

Christmas Tree

Tomas’s tree first appeared before @fsibot was cool or for that matter even existed:

@tomaspetricek " ++ ++++ ++++0+ +++0++++ ++0++++++0 +0++++++0+++ 0++++++0++++++ [...]

— fsibot (@fsibot) August 25, 2014


An early attempt at ASCII art, the trick in Twitter is to use characters that are roughly the same width:

@ptrelford " ────█──── ──█████── ─███████─ ─███████─ █████████ ─███████─ ─███████─ ──█████── ────█──── "

— fsibot (@fsibot) August 31, 2014


Along similar lines this expression uses a bitmap to produce an ASCII invader:

@brandewinder "─────── ─█████─ █──█──█ ─██─██─ ─█─█─█─"

— fsibot (@fsibot) September 1, 2014

FSharp Logo

Here Mathias uses the same technique to generate a logo:

@brandewinder "└┐ ██████└┐└┐██└┐██└┐ ██└┐└┐└┐██████████ ██████└┐└┐██└┐██└┐ ██└┐└┐└┐██████████ ██└┐└┐└┐└┐██└┐██└┐"

— fsibot (@fsibot) September 6, 2014

Bar chart

This expression charts Yes vs No in the recent vote on Scottish Independence:

.@ptrelford " NO ████████────────2001926 YES ███████─────────1617989"

— fsibot (@fsibot) September 19, 2014


The hailstone sequence:

.@ptrelford [17; 52; 26; 13; 40; 20; 10; 5; 16; 8; 4; 2; 1]

— fsibot (@fsibot) September 19, 2014


Interesting Pi approximation using dates:

@ptrelford 3.141592654

— fsibot (@fsibot) September 8, 2014


Evaluating an F# expression inside an F# expression:

.@ptrelford 2

— fsibot (@fsibot) September 8, 2014

Rick Roll

The thing about a rick roll is that no-one should expect it:

@ptrelford "never gonna give you up"

— fsibot (@fsibot) August 30, 2014

Magic 8-Ball

Based on magic 8-ball here's a somewhat abridged version:

@ptrelford "Go for it!"

— fsibot (@fsibot) August 30, 2014

Have fun!

Categories: Programming

Technical Performance Measures

Herding Cats - Glen Alleman - Sat, 09/20/2014 - 16:59

We're preparing for a Webinar on 25 September 2014, now titled Using Techncial Performance to Inform Earned Value, which addresses the disconnect in EAI-748-C between two statement

  • Page 2, 5 bullet - Objectively assess accomplishments at the work performance level.  
  • §3.8 - Earned Value is a direct measurement of the quantity of work accomplished. The quality and technical content of the work performed is controlled by other processes.  

Two reconcile these two statement, we need to have a process of informing Earned Value (BCWP) with the Techncial Performance of the products being built. After the Webinar, we'll post the link. 

In the mean time here's a list of resources gathered to support this topic.

  • Technical Performance Measurement - A Program Manager's Barometer: DCMA Pilots a Modified Approach to TPMs, Mike Ferraro, Program Manager, November-December, 2002
  • Technical Performance Measures, Jim Oaks, Rock Botta and Terry Bahill, BAE Systems.
  • Technical Measurement: A collaborative Project of PSM, INCOSE, and Industry, Garry Roedker and Cheryl Jone, 27 December 2005, INCOSE-TP-2003-020-01.
  • Technical Performance Measurement Earned Value, and Risk Management: Integrated Diagnostic Tool for Program Management, Commander N. D. Pisano, SC, USN, PEO Air SW and Special Mission Programs.
  • CPM-500-C/D/E: Integrated Systems Engineering with Earned Value Management, Partick K. Barker, Paul Solomon, November 2009, Alexandria, VA
  • CPM-500: Principles of Technical Management, Lesson D: Implementing Technical Performance Measurement, Mike Ferraro, IPMC 2002.
  • Technical Performance Measures Module: Space Systems Engineering Version 1.0, NASA.
  • Technical Performance Measurement - Systematic Approach for Planning, Integration, and Assessment, Part 1, Kathyyn A. Kulick.
  • Technical Performance Measurement - Kinking Technical Performance to Cost and Schedule, Part 2 Kathyyn A. Kulick.
  • Technical Performance Measurement - Assessment Techniques and Earned Value Calculation, Part 3, Kathyyn A. Kulick.
  • Leading Indicators for Systems Engineering, Sixth Annual NASA Project Management Challange, Dr. Donna H. Rhodes, MIT, Feb 2009.
  • The Difficult Problems of Establishing Measures of Effectivenss for Command and Control: A Systems Engineering Perspective, Noel Sproles, Systems Journal, Volume 4, Number 2, 2001.
  • Coming to Grips with Measures of Effectiveness, Noel Sproles, Systems Journal, INCOSE 2000.
  • Formulating Measures of Effectiveness, Nole Sproles, Systems Engineering Volume 5, Number 4, 2002
  • Systems Engineering at NASA: Selected Topics, Jim Andary, NASA Goddard Space Flight Center, Nov 5, 2009.
  • Space and Missile Command, Systems Engineering Primer and Handbook
  • NASA Systems Engineering Handbook
  • Engineering Complex Systems with Models and Objects,David W. Oliver Timothy P. Kelliher James G. Keegan, Jr., McGraw Hill.
  • Engineering Complex Systems, Douglas O. Norman and Michael L. Kuras, The MITRE Corporation
  • National Aerospace System - Systems Engieering Manual, FAA
  • MITRE Systems Engineering Guide, Collected Wisdom from MITRE's Systems Engineers.
Related articles Is There Such a Thing As Making Decisions Without Knowing the Cost? More Uncertainty and Risk Agile as a Systems Engineering Paradigm
Categories: Project Management

Project Success: Context

Trying to read the context...

Trying to read the context…

Many people poke fun at consultants because they invariably use the phrase “it depends,” even when discussing lunch. “It depends” is code for the context of the situation matters to the answer. When I asked a sample of my readers and listeners to weigh in on whether being on-budget, on-scope or on-schedule was the most important attribute of project success, most answered without using the dreaded “it depends”. An excerpt for a recent Twitter conversation in response to the essay about being on-budget, emphasized that in real life the definition of success will be influenced context.

UntitledIn the sample I surveyed, being on-schedule was the most important attribute with on-scope a close second and on-budget a distant third. If I had added constraints to the mix the answer would probably have been different. One respondent, while explaining why they felt that scope was the key attribute of success, made a strong argument for context (without calling it out directly), “Budgets and schedules can be modified when justified, and functionality can be phased in over time.” The statement could easily be interpreted as as a statement that success criteria, at least in the short run, depends on the goals of the business and the context of the project.

We can all conceive of scenarios where a specific context lead one attribute to be viewed as the most important in project success ASSUMING the software does what it is supposed to do and in an adequate manner. As an example of context, one respondent noted that in his environment and for some projects, “regulatory requirements that say it MUST deploy on a specific date.” Failure to meet the date can result in fines or penalties. In a similar vein, another respondent stated, “Projects are often tied to an organization’s business milestones or regulatory requirements so missing the date is not acceptable.” In both cases the context of a project could lead a project team to focus on one attribute over another.

Why did I ask the question without context? As I have noted in earlier essays, we are all subject to cognitive biases. These bias act as filters and shortcuts that help us interpret data. The context of a project will provide information about the goals and constraints of the project. Our cognitive biases are usefully in helping us interpret project context. Which is why project teams with diverse perspectives tend to make better choices when sorting out which attribute is most important. Is one attribute truly more important than another? It depends!

Categories: Process Management

Project Driven Organizations

Herding Cats - Glen Alleman - Fri, 09/19/2014 - 21:09

There is a popular notion that Projects are some how not needed to develop software. Just fund the Team and the business outcomes needed to fulfill a strategy and deliver value to the balance sheet will appear. 

This may work in  domains where the project team, the business and its processes and the funding sources are in fact all the same - a small startup for example. When the business moves beyond this self-contained startup mode, other  processes become needed to Govern the use of funds - Stewardship of Funding. 

Here's how to approach the process, once the firm moves beyond a collection of individuals personally all interacting with their customer based. These processes, data, and outcomes belong to the realm of Governance. In IT, Governance †

  • Clarifies business strategies and the role of IT in achieving them.
  • Measures and manages the amount of funding spent on the value received from IT.
  • Assigns accountability for the organizational changes required to benefit from new IT capabilities.
  • Learns from each implementation and becoming more adept at sharing and reusing IT assets.

Lifecycle from Glen AllemanIT Governance: How Top Performers Manage IT Decision Rights for Superior Results, Peter Weill and Jenne W. Ross, Harvard Business School Press. Related articles Delivering Needed Capabilities Staying on Plan Means Closed Loop Control The Purpose Of Guiding Principles in Project Management Performance-Based Project Management(sm) Released What Do We Mean When We Say "Agile Community?"
Categories: Project Management

Get your app in the Google index - and be ready for the future of Search

Google Code Blog - Fri, 09/19/2014 - 19:15
Last October we worked with a small number of developers to launch App Indexing, the ability for Google to index apps just like websites. In June, we opened App Indexing to all Android developers, giving you the ability to add app deep links to search results, helping users find your content and re-engage with your app after they’ve installed it.

Today, we’d like to highlight two videos to help you set up App Indexing. Check them out below. You’re only a few steps away from driving re-engagement and unlocking new avenues of discovery for your app.

1998 all over again

In 1998, Google set out to index the web and make content easily accessible and discoverable.

Today mobile app adoption is growing rapidly. Similar to the early days of the internet, it can be frustrating for users to search through their device to find what they need, since the content within apps typically exists in silos. By implementing App Indexing, you can re-engage your users from search results.

Consider the scenario of users looking for details about a great place for some Spanish food. Users might already have a great mobile app for restaurant details installed, but they typically still rely on a search engine to pull up information about local places to eat. Wouldn’t it be great if they could jump straight into your app from those search results? App Indexing is all about connecting users with the best content, whether it’s in-app or on the web. You can add it to your app very quickly -- simply add deep linking to your app, and then verify your website with Google. To enable re-engagement with your users, you can generate query autocompletions in the Google app using the App Indexing API.

Learn More

To learn more about App Indexing, and how you can use the API for your apps, check out this DevByte from Lawrence Chang, Senior Product Manager for App Indexing at Google.
For an in-depth look at App Indexing, demonstrating the technology, and the opportunities available with it, watch this session from Google I/O 2014: “The Future of Apps and Search.”
We’re at the beginning of a new wave of how people find and interact with content, and it often starts with search. Is your app in the index? If not, follow the steps in this post, and get ready for the future of Apps and Search!

Posted by Laurence Moroney

Laurence is a Developer Advocate at Google, working on Google Play services for Android. When not having fun with this, he's also a best-selling author of several Young Adult novels and dozens of books on computer programming.
Categories: Programming

Stuff The Internet Says On Scalability For September 19th, 2014

Hey, it's HighScalability time:

Galactic bolt-hole or supermassive black hole, weighing as much as 21 million suns?
  • Quotable Quotes:
    • @debuggist: Chief takeaway from #velocityconf for me: failure happens so monitor for the ones that are important albeit in systems or culture & fix them
    • @Carnage4Life: The real tech bubble is valuations of Google, Facebook & Twitter are inflated by app install ads from unprofitable startups 
    • Jay Parikh: Android has 2x as many users as iOS. However, iOS average revenue per user is 4x higher than Android. 
    • Joe Armstrong: We’ve made a mess. Need to reverse entropy. Quantum mechanics sets limits to ultimate speed of computation. We need Math. Abolish names and places. Build the condenser. Make low-power computers - no net environmental damaged.
    • @reneritchie: iOS 8 is a beefy update. The internet is feeling the strain of millions of downloads. If it’s slow or stuttering, just give it some time.
    • @vishyp: Quip is big on disconnected clients and clients as write-thru caches. Like it! Uses C++ for x-platform. @btaylor #atscale2014
    • @csabacsoma: Instragram: we use Postgres for almost everything now, some Redis and Memcached #AtScale2014
    • @rfberry: "To maximize throughput, we needed an integrated approach to backpressure." #AtScale2014
    • @sharonw: I asked this Facebook / Instagram panel about image upload. Key changes: retry aggressively, and resize and encode on device. #AtScale2014
    • Igor Zaika: Most of the developers who work on Microsoft Office are younger than the codebase. 
    • Chris Marra: There are about 10k different device models accessing Facebook. Designing for high-end smartphones does not cut it.
    • @Carnage4Life: Apple spends $100m on a U2 album you don't want. Microsoft spends that on ads you don't like. Amazon spends it on free shipping #Marketing
    • @beerops: Laziness as a multiplier: train other people to do what you can do to remove yourself as a bottleneck #velocityconf
    • @xaprb: "Failure is a feature of complex systems." - #velocityconf
    • @dalmaer: "Our mobile app is a write through cache (SQLite) to the source of truth (MySQL on AWS)" -- @btaylor #AtScale2014
    • @herminghaus: @BenedictEvans Designed an 11.4TB patent retrieval system in 1993 with slow WORM robots. Cost $140m. Now <$1000.- at BestBuy.
    • @BenedictEvans: You can't ask people to decide on a trade-off when they have experience of one side but not the other.

  • Caching at Scale. There's a need to better manage caching, especially under failure conditions. Solutions are generally in the form of a proxy layer above memcached. Along these lines Box created Tron, Twitter created TwemProxy, and Facebook created a value meal in McRouter. Database people have always countered, why have a separate cache, just build a cache into the database? This hasn't worked for various reasons, mostly because a database always cares more about being a good database rather than being a good cache. Vitess wants to fix that. Vitess is an open-source system written in Go used at Youtube that: challenges the paradigm of treating caching as a separate layer by directly addressing the issues of database scalability and by modifying the handling of SQL queries.  

  • Talk about your Chaos Godzilla. Facebook Turned Off Entire Data Center to Test Resiliency. Before flipping that switch there must have been a little pause, perhaps thinking this wouldn't be prudent, but damn the torpedoes and full speed ahead. Apparently some issues were found, but it went fairly smoothly. Hazaa for the chutzpah.

  • Best LAN party ever? Researchers twist four radio beams together to achieve high data transmission speeds. The researchers reached data transmission rates of 32 gigabits per second across 2.5 meters of free space in a basement lab.

  • This is an understatement. iOS 8, thoroughly reviewed. An amazing job. A big take away for me is Apple is systematically removing reasons not to buy an iPhone. Bigger phone. Check. Configurable keyboard. Check. Extensions that display in the today view and allow app cooperation. Check. Another take away is Apple is abandoning simplicity for configurability, which is embracing complexity, which is a potential experience killer.

Don't miss all that the Internet has to say on Scalability, click below and become eventually consistent with all scalability knowledge (which means this post has many more items to read so please keep on reading)...

Categories: Architecture

Change is Learning: No Silver Bullets or Quick Fixes

Way back when I was a developer, my professors taught me structured design and design by contract. Those were supposed to be the silver bullets for programming.  You see, if you specified things enough, and structured things enough, everything would all work out.

I thought I was the only idiot that structure and specification didn’t work for. Why did I have to iterate and increment?

At my first job, we had design reviews and code reviews. I learned a lot. I worked on a government contract, and the government mandated those reviews. They were useful, and they were supposed to be a silver bullet. Because we implemented features (yes, back in the ’70s, we implemented features), the reviews were helpful in the small.

But, I worked on a program. There is just so much design by contract can do for a program. I was in Boston. I had questions for my counterpart in New Mexico. I was not allowed to talk to that person. (To this day, I don’t know who that person was. That person was part of another subcontractor.) I had to send my questions up through the project management layers to the program team and down the other side. My questions never did get answered. I left that company before I knew if my code worked with the entire system.

I transitioned into project management, program management and people management. I have seen my share of fads, bullets, and fixes for the software departments.

As a director in the early ’90’s I got sent to TQM school (Total Quality Management). My company thought it would change the way we managed, and revolutionize our organization. It would be our “silver bullet.” I’m pretty sure those were somebody’s words. They weren’t mine.

I got a certificate for my five days of intensive training (powerpoint and calculations). I might still have it somewhere.

I became excellent at calculating many costs: the cost of quality, the cost of not doing things right,  the cost of technical debt, even what we might consider the cost of delay. I dutifully explained these costs to my senior management. Was I able to persuade my company of the cost of not doing the right thing, even though I was a middle manager, a program manager, and had been TQM’d?

No. My management was too concerned that doing things “right” would prevent us from making money. I had data—yes, data—that proved them wrong. But their belief systems overcame my data.

Later, after I started my consulting business, many of my clients fell into the ISO 9000 and the CMM/CMMI quick fix/silver bullet traps. The ISO joke made the rounds: “You could specify a cement life jacket with ISO, as long as you define the right process for creating it.” Well, no. But the jokes still persisted. (Many people find value in ISO. Some do not.)

And, with the CMM/CMMI? Oh, my clients had binders full of documentation, but they weren’t releasing software. They hired me on the side, because their silver bullet of CMM/CMMI process wasn’t working. Somehow, my approaches of timeboxes and increments, and iterations, and thinking about their projects was. (Many people find  value in using CMM/CMMI. Some do not.)

Now we have agile. If you read my work, you know I lean towards agile and lean. At the same time, I say that agile is not for everyone. Agile is not a silver bullet.

We have no silver bullets in software.

We have difficult problems to solve. We must think about our approaches, each and every time. We must consider our context. That why I wrote Manage It! Your Guide to Modern, Pragmatic Project Management. Because every single project is unique. That’s why I’m writing Agile and Lean Program Management: Collaborating Across the Organization. That book is a principle-based approach to program management, to scaling agile past one or two teams. Not a one-size fits all approach to program management.

And, because we have no silver bullets in software, and because we have no quick fixes, my management myth this month is We Need a Quick Fix or a Silver Bullet.

It’s very tempting to think that transitioning to agile might be a quick fix or a silver bullet. Transitioning to agile or lean might help you. It won’t be quick.

Any transition is a change. Change takes time. Change is learning. Developing software is learning. You can help yourself learn faster with some approaches: make value obvious instead of tasks, get feedback often, visualize your work, etc. For many of you starting your agile journey, these are cultural changes.

The more you challenge the culture, the longer the change takes because people need to learn what to do and how to work. Cultural change is not a silver bullet. It is certainly not a quick fix.

Read Management Myth 33: We Need a Quick Fix or a Silver Bullet.

Categories: Project Management

Installing Oracle on Docker (Part 1)

Xebia Blog - Fri, 09/19/2014 - 12:56

I’ve spent Xebia’s Innovation Day last August experimenting with Docker in a team with two of my colleagues and a guest. We thought Docker sounds really cool, especially if your goal is to run software that doesn’t require lots of infrastructure and can be easily installed, e.g. because it runs from a jar file. We wondered however what would happen if we tried to run enterprise-software, like an Oracle database. Software that is notoriously difficult to install and choosy about the infrastructure it runs on. Hence our aim for the day: install an Oracle database on CoreOS and Docker.

We chose CoreOS because of its small footprint and the fact that it is easily installed in a VM using Vagrant (see We used default Vagrantfile and CoreOS files with one modification: $vb_memory = 2024 in config.rb which allows the Oracle’s pre installer to run. The config files we used can be found here:

Starting with a default CoreOS install we then implemented the steps described here:
Below is a snippet from the first version of our Dockerfile (tag: b0a7b56).
FROM centos:centos6
# Step 1: Setting Hostname
# Step 2
RUN yum -y install wget
RUN wget --no-check-certificate -O /etc/yum.repos.d/public-yum-ol6.repo
RUN wget --no-check-certificate -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
RUN yum -y install oracle-rdbms-server-11gR2-preinstall

Note that this takes awhile because the pre installer downloads a number of CentOS packages that are missing in CoreOS.
Execute this in a shell:
vagrant up
vagrant ssh core-01
cd ~/share/docker
docker build -t oradocker .

This seemed like a good time to do a commit to save our work in Docker:
docker ps # note the container-id and substitute for the last parameter in the line below this one.
docker commit -m "executed pre installer" 07f7389c811e janv/oradocker

At this point we studiously ignore some of the advice listed under ‘Step 2’ in Tecmint’s install manual, namely adding the HOSTNAME to /etc/syconfig/network, allowing access to the xhost (what would anyone want that for?) and mapping an IP address to a hostname in /etc/hosts (setting the hostname through ‘ENV HOSTNAME’ had no real effect as far as we could tell). We tried that but it didn’t seem to work. Denying reality and substituting our own we just ploughed on…

Next we added Docker commands to the Dockerfile that creates the oracle user, copy the relevant installer files and unzip them. Docker starts by sending a build context to the Docker daemon. This takes quite some time because the Oracle installer files are large. There’s probably some way to avoid this, but we didn’t look into that. Unfortunately Docker copies the installer files each time you run docker -t … only to conclude later on that nothing changed.

The next version of our Dockerfile sort of works in the sense that it starts up the installer. The installer then complains about missing swap space. We fixed this temporarily at the CoreOS level by running the following commands:
sudo su -
swapfile=$(losetup -f)
truncate -s 1G /swap
losetup $swapfile /swap
mkswap $swapfile
swapon $swapfile

found here:
This works but it doesn’t survive a reboot.
Now the installer continues only to conclude that networking is configured improperly (one of those IgnoreAndContinue decisions coming back to bite us):
[FATAL] PRVF-0002 : Could not retrieve local nodename

For this to work you need to change /etc/hosts which our Docker version doesn’t allow us to do. Apparently this is fixed in a later version, but we didn’t get around to testing that. And maybe changing /etc/sysconfig/network is even enough, but we didn't try that either.

The latest version of our work is on github (tag: d87c5e0). The repository does not include the Oracle installer files. If you want to try for yourself you can download the files here: "> and adapt the docker file if necessary.

Below is a list of ToDo’s:

  1. Avoid copying large installer files if they’re not gonna be used anyway.
  2. Find out what should happen if you call ‘ENV HOSTNAME’.
  3. Make swap file setting permanent on CoreOS.
  4. Upgrade Docker version so we can change /etc/hosts

All in all this was a useful day, even though the end result was not a running database. We hope to continue working on the ToDo’s in the future.

3 Questions for Peter Morville about Intertwingled

NOOP.NL - Jurgen Appelo - Fri, 09/19/2014 - 09:44

Recently, I read the book Intertwingled, by Peter Morville. I liked it a lot! This was my tweet-size review:

Loved the stories and insights. It’s not only about information. It’s about life.

Peter’s book raised a few questions for me, and I decided to ask Peter for the answers.

The post 3 Questions for Peter Morville about Intertwingled appeared first on NOOP.NL.

Categories: Project Management

Project Success: On-Schedule




Understanding the project team’s definition of success is important because it helps us understand how the team will behave in crunch time. And yes, crunch time still happens. Recently I asked a selection of podcast listeners and blog readers to weigh in on whether being on-budget, on-scope or on-schedule was the most important attribute of project success. A majority answered that on-schedule was the most important attribute. One of the respondents summed up their rational for choosing on-schedule by saying, “Given the high-paced world we find ourselves in, I think on-schedule is what many now use to judge project “success.”

Dates are projected when a project is conceived. A project will begin on x date and end on y date. These dates create an anchor that will be used to compare performance. Both the business and IT plan based on these dates. A simple example illustrates the cascade effect caused by a project going longer than anticipated. If an e-commerce project has to add two extra, two-week sprints to complete a minimum viable product, the teams working on the project cannot then start the other project they were schedule for when the basic site was completed. That project is now delayed for four weeks, impacting the business and other stakeholders. The rollout of the new site will also have an effect both from an operational and marketing perspective. Plans will need to be adjusted. Because the site is late the anticipated revenues will be delayed and ROI calculation for the project will be impacted. Finally, if the project is large enough, the delay may impact earnings making life uncomfortable for managers and executives. While there are often many reasons for missing the schedule, the schedule miss will be a drag on the perception of success. As another respondent noted, “Oftentimes, I find that the driver of most projects is time…after all, everyone wants things done quickly. These drivers influence successful partnerships or solicitations.”

The news media of all types, popular or technology, continually reminds us that we are living in a very dynamic era. New technologies and businesses rise and fall in a metaphorical blink of an eye. Software and technology are seen as a critical enabler to support the pace of change. Therefore, there is an expectation levied on projects to meet the need for new and changed functionality. Agile methods, which either deliver functionality quickly or continuously, fit well into environments that are dynamic. On respondent suggested that the pace and the focus on being on-schedule was because, “IT projects are no longer simply supporting back office functions.  They are responsible for driving the customer experience.” Customers expect change and systems must evolve to meet that expectation.

The Project Management Institute’s define a project as a temporary endeavor  with a start and end date. Plans are made by the business as well as on a more tactical level within development organizations. When projects don’t happen when they are planned, other projects and events are impacted. Change causes a ripple effect. Methods and techniques like Agile change the playing field by doubling down on the concept of on-schedule. Agile and continuous delivery techniques promise delivery of potentially implementable functionality either as a continuous flow or based on a short known cadence. The customers expectation for when they will get functionality gets set that when we provide a date. Teams tend to pursue the commitments they make, the schedule is often the most obvious of those commitments.

Categories: Process Management

Management Innovation is at the Top of the Innovation Stack

Management Innovation is at the top of the Innovation Stack.  

The Innovation Stack includes the following layers:

  1. Management Innovation
  2. Strategic Innovation
  3. Product Innovation
  4. Operational Innovation

While there is value in all of the layers, some layers of the Innovation Stack are more valuable than others in terms of overall impact.  I wrote a post that walks through each of the layers in the Innovation Stack.

I think it’s often a surprise for people that Product or Service Innovation is not at the top of the stack.   Many people assume that if you figure out the ultimate product, then victory is yours.

History shows that’s not the case, and that Management Innovation is actually where you create a breeding ground for ideas and people to flourish.

Management Innovation is all about new ways of mobilizing talent, allocating resources, and building strategies.

If you want to build an extremely competitive advantage, then build a Management Innovation advantage.  Management Innovation advantages are tough to copy or replicate.

If you’ve followed my blog, you know that I’m a fan of extreme effectiveness.   When it comes to innovation, I’ve had the privilege and pleasure of playing a role in lots of types of innovation over the years at Microsoft.   If I look back, the most significant impact has always been in the area of Management Innovation.

It’s the trump card.

Categories: Architecture, Programming

Principles Trump Practices and Processes

Herding Cats - Glen Alleman - Thu, 09/18/2014 - 17:05

5 Immutable PrinciplesA new Book The Incremental Commitment Spiral Model: Principles and Practices of Successful Systems and Software, is now out.

From another source The right principles trump practices everytime - Dean Leffingwell.

This notion that practices and processes can be put forward in the absence of testing them against  principles has become popular.

The most visible of course is that decisions can be made in the absence of estimating the cost and impact of that decision. The principle of MicroEconomics of Software development was first stated by Dr. Boehm. Early in that #NoEstimates discussion was a comment that all those ideas are old and no longer applicable. Of course that ignores the principle of Microeconomics along with most every other principle of managing projects while spending other peoples money. 

As well there are other principles of project success

  • What does done look like in units of Effectiveness and Performance?
  • What is the Plan to reach Done on the needed date for the needed cost?
  • What are the resources required to reach Done?
  • What impediments will be encountered along the way that must be handled?
  • How are we going to measure progress toward Done in units of measure meaningful to the decision makers?

Here's how to develop the answers to those Principles questions.

Principles and Practices of Performance-Based Project Management® from Glen Alleman
Categories: Project Management

Making Agile Work

Software Requirements Blog - - Thu, 09/18/2014 - 17:00
I’ve spent the past several months on an Agile project at a company that is going through the process of switching from an entrenched waterfall software development process to Agile. And while I’m still not going to claim to be an Agile guru, I’ve learned a few things from watching the process unfold. Here are […]
Categories: Requirements

Write a Tagline – Win a Book!

NOOP.NL - Jurgen Appelo - Thu, 09/18/2014 - 13:11

We recently improved the story that explains what Happy Melly is all about. We’re curious what you think! Read the story, and email your summary in 10 words or less to (deadline is Saturday, 20 September).

We’ll put the taglines to a vote! Two winners will be chosen: most popular and Happy Melly choice. Winners will receive a copy of the eBook “Introduction to Agile Methods” authored by Sondra Ashmore & Kristin Runyan – and donated generously by InformIT!

The post Write a Tagline – Win a Book! appeared first on NOOP.NL.

Categories: Project Management

Full width iOS Today Extension

Xebia Blog - Thu, 09/18/2014 - 10:57

Apple decided that the new Today Extensions of iOS 8 should not be the full width of the notification center. They state in their documentation:

Because space in the Today view is limited and the expected user experience is quick and focused, you shouldn’t create a widget that's too big by default. On both platforms, a widget must fit within the width of the Today view, but it can increase in height to display more content.


This means that developers that create Today Extensions can only use a width of 273 points instead of the full 320 points (for iPhones pre iPhone 6) and have a left offset of the remaining 47 points. Though with the release of iOS 8, several apps like DropBox and Evernote do seem to have a Today Extension that uses the full width. This raises question wether or not Apple noticed this and why it came through the approval process. Does Apple not care?

Should you want to create a Today Extension with the full width yourself as well, here is how to do it (in Swift):

override func viewWillAppear(animated: Bool) {
    if let superview = view.superview {
        var frame = superview.frame
        frame = CGRectMake(0, CGRectGetMinY(frame), CGRectGetWidth(frame) + CGRectGetMinX(frame), CGRectGetHeight(frame))
        superview.frame = frame

This changes the super view (Today View) of your Today Extension view. It doesn't use any private Api's, but Apple might reject it for not following their rules. So think carefully before you use it.

Become high performing. By being happy.  

Xebia Blog - Thu, 09/18/2014 - 03:59

The summer holidays are over. Fall is coming. Like the start of every new year, a good moment for new inspiration.

Recently, I went twice to the Boston area for a client of Xebia. I met there (I dislike the word “assessments"..) a number of experienced Scrum teams. They had an excellent understanding of Scrum, but were not able to convert this to an excellent performance. Actually, there were somewhat frustrated and their performance was slightly going down.

So, they were great teams, great team members, their agile processes were running smoothly, but still not a single winning team. Which left in my opinion only one option: a lack of Spirit.   Spirit is the fertilizer of Scrum and actually every framework, methodology and innovation.  But how to boost the spirit?

Screen Shot 2014-09-17 at 10.43.43 PM Until a few years ago, I would “just" organize teambuilding sessions to boost this, parallel with fixing/escalating the root causes. Nobel, but far from effective.   It’s much more about mindset en happiness and taking your own responsibility there.   Let’s explain this a little bit more here.

This are definitely awkward times. Terrible wars and epidemics where we can’t turn our back from anymore, an economic system which hardly survives, a more and more accelerating and a highly demanding society. In all which we have to find “time” for our friends, family, yourself and job or study. The last ones are essential to regain balance in a more and more depressing world. But how?

One of the most important building blocks of the agile mindset and life is happiness. Happiness is the fuel of acceleration and success. But what is happiness? Happiness is the ultimate moment you’re not thinking, but enjoying the moment and forget the world around you. For example, craftmanship will do this with you. Losing track of time while exercising the craft you love.

But too often we prevent our selves from being happy. Why should I be happy in this crazy world?   With this mentality you’re kept hostage by your worrying mind and ignore the ultimate state you were born: pure, happy ready to explore the world (and make mistakes!). It’s not a bad thing to be egocentric sometimes and switch off your dominant mind now and then. Every human being has the state of mind and ability to do this. But too rarely we do.

On the other hand, it’s also not a bad thing to be angry, frightened or sad sometimes. These emotions will help enjoying your moments of happiness more. But often your mind will resist these emotions. They are perceived as a sign of weakness or as a negative thing you should avoid. A wrong assumption. The harder you're trying to resist these emotions, the longer they will stay in your system and prevent you from being happy.

Being aware of these mechanisms I’ve explained above, you’ll be happier, more productive and better company for your family, friends and colleagues. Parties will not be a forced way trying to create happiness anymore, but a celebration of personal responsibility, success and happiness.

Project Success: Runner Up – On-scope

Looking Back

Keep on-scope.

When I recently asked a selection of readers and listeners of the Software Process and Measurement podcast and blog what they perceived as the single most important attribute that determines project success. Everyone that answered had and expressed an opinion on the topic. In order to focus those opinions, I constrained the respondents by asking them to choose from between the classic on-budget, on-scope and on-schedule triangle. In Project Success: An Overview went through the results at a high-level, and on-scope was clear, but strenuously argued second place finisher (far ahead of on-budget). Respondents rationalized the importance of being on on-scope as a connecting/satisfying their customers and as an attribute they had influence over given their span of control.

One respondent stated the augment for on-scope in a very straightforward manner, “I try to remind myself that the business requirements are most important, even if it results in a less-than-technically elegant solution.” The value of any project is tied closely to functionality being delivered. In a similar vein, another respondent suggested that cutting scope hurts the people that need to use the system (paraphrased). If the software or the interface between users of all types does not address the need of the business, it has little value. Scope, whether documented as requirements or user stories, represents a common understanding between customer and developer.

As projects evolve, the scope changes, whether through the adding stories and reprioritization of the project backlog or via change requests in classic project management methods. The processes of accepting change and determining how that change is implemented is usually a negotiation between the team and stakeholders. One of the respondents put it succinctly: “a clear definition of scope and a transparent understanding between our business customers and IT is what makes a project successful.” Involvement in the discussion of what is in scope and how the implicit business discussion is required for transparency and confers importance to the on-scope attribute. If we compare the perceived level of importance of on-scope to on-budget we see the impact of involvement. Budgets are set typically from outside the team’s span of control and act as a constraint for the project team, therefore practitioners see the attribute of on-budget as less important than on-scope.

One response suggested that being on-scope infers meeting functional and performance requirements. While this might not be exactly true, in the hard light of a project the connection between scope and requirements establishes a link between the development team and their customers. The linkage between the team and the customer’s needs makes the relationship between the two groups more intimate and provides the team with motivation therefore the perceived importance of the on-scope attribute.

Categories: Process Management

Episode 210: Stefan Tilkov on Architecture and Micro Services

Micro services is an emerging trend in software architecture that focuses on small, lightweight applications as a means to avoid large, unmaintainable, monolithic systems. This approach allows for individual technology stacks for each component and more resilient systems. Micro services uses well-known communication schemes such as REST but also require new technologies for the implementation. […]
Categories: Programming

gcloud-node - a Google Cloud Platform Client Library for Node.js

Google Code Blog - Wed, 09/17/2014 - 21:18
This post originally appeared on the Google Cloud Platform blog 

Today we are announcing a new category of client libraries that has been built specifically for Google Cloud Platform. The very first library, gcloud-node, is idiomatic and intuitive for Node.js developers. With today’s release, you can begin integrating Cloud Datastore and Cloud Storage into your Node.js applications, with more Cloud Platform APIs and programming languages planned. The easiest way to get started is by installing the gcloud package using npm:
$ npm install gcloud
With gcloud installed, your Node.js code is simpler to write, easier to read, and cleaner to integrate with your existing Node.js codebase. Take a look at the code required to retrieve entities from Datastore:
var gcloud = require('gcloud');

var dataset = new gcloud.datastore.Dataset({
projectId: 'my-project',
keyFilename: '/path/to/keyfile.json' // Details at

dataset.get(dataset.key('Product', 123), function(err, entity) {
console.log(err, entity);
gcloud is open-sourced on Github; check out the code, file issues and contribute a PR - contributors are welcome. Got questions? Post them on StackOverflow with the [gcloud-node] tag. Learn more about the Client Library for Node.js at and try gcloud-node today.

Posted by JJ Geewax, Software Engineer

Node.js is a trademark of Joyent, Inc. and npm is a trademark of npm, Inc.
Categories: Programming