Software Development and Creativity

What is Creativity

Lightbulb

Lightbulb (flickr: yikerlarooni )

Don’t think. Thinking is the enemy of creativity. It’s self-conscious, and anything self-conscious is lousy. You can’t try to do things. You simply must do things. – Ray Bradbury

A hunch is creativity trying to tell you something.Frank Capra

What does creativity have to do with software development – actually a lot. Software development is the process of creating software solutions that have never before been created. If your solution has already been created, then you shouldn’t be doing it because you are either plagiarizing, or you are needlessly reproducing work that you should be reusing.  Not only should your work be original, it should also be useful. Clearly if you are creating something that has never before been created, you are well… doing something creative, and thus knowing how to be creative is clearly a good thing. But before discussing creativity as it applied to software we must first set a foundation and define what creativity is.

Creativity is more than just being different. Anybody can be plain weird; that’s easy. What’s hard is to be as simple as Bach. Making the simple, awesomely simple, that’s creativity.Charles Mingus Read More »

Posted in Agile, Project Management, Software Development, Teams, Technology | Tagged , , , , , | Comments closed

How To Build A High Performance Agile Team

An Outlier

An Outlier (Flickr - Christian Beirle González)

High Performance People

“Imagination is more important than knowledge.” Albert Einstein

Software development is an inherently human endeavour. It is not a process (although process helps), and it is not a science (although science also helps). If it simply were a process, then anyone could in a very short period of time learn to do it. If it were a science, you could give the same problem to a dozen programmers to solve and you would get the same results from each of them. Experience tells us that neither of these things is in fact true. If it is not a process, and it is not a science, then what is it? Before answering that, consider that no two software solutions are ever alike – or at least they shouldn’t be. If you find that you are creating a software solution that is exactly like something else that already exists, you should seriously reconsider what you are doing because either you are either a) infringing on someone else’s copyright or patent or b) wasting time and money solving a problem that someone else has already solved. Implicitly this means that for each new project you begin, you must “create” a new solution. In other words, you are dreaming up a new way to solve a problem. This means that to “create” a new solution, you need – well… creativity. Creativity is an intangible. It is highly unique to each individual. It cannot be measured and for the most part cannot be taught. We often refer to this intangible as art. Read More »

Posted in Agile, Project Management, Software Development, Teams | Tagged , , , , , , , , | Comments closed

Occam’s Razor and the Art of Software Design

The Simplest Solution is Almost Always The Best Solution

Art Gallery of Ontario Staircase

Art Gallery of Ontario Staircase (Flickr - paccpass)

Everything should be made as simple as possible, but not simpler.” – Albert Einstein

Who the heck is Occam and what do he and his razor have to do with software design– oh… and creating software is a science, not an art – right?

There is much written about the varying levels of productivity of programmers. Research has shown that productivity differences between two programmers of nearly identical experience and education can easily vary by an order of magnitude (10x) and differences in debugging productivity can vary by a factor of 25x. The very productive ones write simple, elegant, easily understood code that accomplishes a lot with very little. These “Star” programmers “get it” in a way that most people can’t even comprehend. That being said, there are things that Mere Mortals can do to elevate their own productivity levels to approach that of the Star. In part, the Star programmers accomplish more by doing less. This is at first counter-intuitive, but if you consider that if a programmer spends time writing unnecessary code, or has to continually refactor code because the design doesn’t easily handle changing requirements they will have less time to produce the “needed” code and thus be less productive. The effectiveness of the top produces can be achieved in part by embodying the principles of Occam’s Razor and doing less. Read More »

Posted in Agile, Software Development | Tagged , , , , , , , , , , , , , , , | Comments closed

Estimate How Long It Will Take To Complete Your Agile Project

Are We There Yet?

Are We There Yet?

Are We There Yet? (Flickr - Lorant Zsabo)

Are we there yet? – Donkey from Shrek 2

If you are a parent with kids any older than three or four years of age you’ve heard it: “Are we there yet – How much farther is it?” If you’ve ever developed software, you’ve heard the same questions, but this time, rather than coming from your four year old in the back seat of the car as you are driving to Granny’s house, it’s a stakeholder wondering when your project will be finished. You likely know the answer to the question from your four year old, but chances are, you will have a very tough time answering the project stakeholder’s question with any degree of accuracy. The answer to this simple question is extremely important because product launches, project funding, marketing initiatives, budgeting, staffing and so much more all depend on this seemingly simple question.

Why are 21% of companies experiencing schedule overruns exceeding one year, and why are 11% overrunning their budget by more than US $1 million? As I have mentioned in several of my previous articles, estimating how long it will take to complete software projects is extremely difficult. In my view, it is the single most challenging part of the entire software development process. How can we do better? This article builds Read More »

Posted in Agile, Project Management, Scrum, Software Development, Technology | Tagged , , , , , , , , , , , , , | Comments closed

Calculating the Velocity of Your Agile Projects

A Simple Way to Calculate the Velocity of Your Agile Teams and Projects

Speed

Speed (flickr - Sean Tubridy)

Whenever the work is itself light, it becomes necessary, in order to economize time, to increase the velocity. Charles Babbage

What is Agile Velocity?

The calculation of Velocity in physics is pretty straightforward, and if memory serves me correctly, it is the first formula I learned. Simply put:

Velocity = Distance / Time

In truth, Velocity is a vector and requires a directional component to fully qualify as a Vector. Velocity without a directional component is Speed – a Scalar. What we have in the above formula and what we will actually be measuring is a Scalar – the speed of the team. Velocity as a term has, however, become so widely used in the Agile community that it makes no sense for me to refer to it as Speed. So with apologies to Sir Isaac Newton for the misused term, and for my liberal interpretation (as you shall see) of his first two laws of motion, we shall accelerate into the topic. Read More »

Posted in Agile, Project Management, Scrum, Software Development, Technology | Tagged , , , , , , , , , , , , , | Comments closed

Estimate Story Size by Playing Agile Planning Poker

Developing Accurate Effort Estimates By Playing Games

Counting (flickr - marina moia)

Background

The poker player learns that sometimes both science and common sense are wrong; that the bumblebee can fly; that, perhaps, one should never trust an expert; that there are more things in heaven and earth than are dreamt of by those with an academic bent.  (David Mamet)

If you’ve read my previous post (recommended so that the following will make sense) you now have a mechanism for sizing the Effort of your Stories. But how do you actually come up with the numbers for Complexity and Size? Over the years that I’ve been leading software development projects, I’ve used a number of methods including comparison of projects of similar size and complexity, Microsoft Project, Function Point Analysis or even simply guessing. There have been a few other trendy and perhaps oddball approaches thrown in for good measure. Curiously, regardless of method, the results have tended to be pretty much the same. There has, however, been one exception. I’ve gotten noticeably better results with Agile methods using Agile Planning Poker.  Poker? Yes poker – well not really poker. It’s actually a process that is gaining in popularity as a means for sizing Agile Stories. Read More »

Posted in Agile, Project Management, Scrum, Software Development, Technology | Tagged , , , , , , , , , , , | Comments closed

Estimating Effort For Your Agile Stories

Determining the Effort required to complete an Agile Story
Wrong Way - Go Back
Wrong Way – Go Back (flickr – naz’s stuff)

The best we can do is size up the chances, calculate the risks involved, estimate our ability to deal with them, and then make our plans with confidence. (Henry Ford)

The greatest of all gifts is the power to estimate things at their true worth. (François de la Rochefoucauld)

The Problem

Estimation is the calculated approximation of a result which is usable even if input data may be incomplete or uncertain. (Wikipedia)

Estimating the size, effort, complexity and cost of software projects is possibly the most difficult task in all of Software Development and Project Management. Even estimating the time required to complete seemingly small and straightforward tasks can be annoyingly, or even dangerously difficult to do. Software Project Success is determined in large part by the ability of the team to meet stakeholder expectations. To be predictive, you need data and most prediction models typically use historical data as the basis of their forecasts. Stock market analysis and weather forecasting are classic examples. In spite of mountains of historical data, advanced algorithms and supercomputers to perform the calculations, weather forecasters are accurate less than 50% of the time. There is even more historical data, incredibly sophisticated algorithms and and nearly the same computing power available to market analysts. In the markets, success is somewhat better for some than others, and fortunately, to be successful in the stock market, you need only be right more often than you are wrong. Some win very big, but most, however, struggle to hit that 50% mark.

There are aspects unique to software development that makes software estimation inherently difficult and different from other forms of forecasting. Some of the reasons for this are obvious while many are not. When I set out to write this essay, I planned to speak in depth about the reasons for this, but soon realized (not without a bit of irony) that I had seriously underestimated the scope and complexity of the task. This topic alone could easily be the basis of an entire book, and there is a lot of information available on the web if you are really interested. So instead of focusing on why we fail so miserably at estimating software development effort, I will simply focus on a purely pragmatic view of how we can do a better job of it in Agile projects. That being said, here are just a few of the factors that can impact the accuracy of your estimates: Read More »

Posted in Agile, Project Management, Scrum, Software Development, Technology | Tagged , , , , , , , , | Comments closed

Transcending Geography and Generations With Social Media

Cheryl McKinnon: Social Media for Professionals

Silcon Halton Group 22-Jun-2010

Waiting For Cheryl's Presentation (click on image to enlarge)

At the June 22nd meeting of Silicon Halton @SiliconHalton, we were privileged to have in attendance Cheryl McKinnon CMO (Chief Marketing Officer) at Nuxeo and the former Director of Enterprise 2.0 at OpenText. Cheryl provided the meeting’s keynote presentation wherein she illustrated how professionals can use social media to promote both themselves and the companies for which they work. The key point of her presentation was that social media helps to break down the barriers of geography, culture and generations to connect you with the individuals and communities that are important to both you and your company. In her presentation she gave a real world example of how her use of social media and the online presence she had created through her role at OpenText landed her current job as CMO of Nuxeo. Read More »

Posted in Social Media | Tagged , , , , , | Comments closed

Agile Coach Camp Canada 2010

An Open Space Conference for Agile Coaches

Adding Topics To The Grid

Adding Topics To The Grid (click on image to enlarge)

Background

On June 11th and 12th I was fortunate to be able to attend Agile Coach Camp Canada 2010 in Waterloo Ontario. The event was held in the William G. Davis Computer Research Centre (“DC” building) at the University of Waterloo. I was invited to the camp by Declan Whelan who is a well recognized Agile Coach and one of the primary organizers of the camp. I checked out the site and saw already signed up were a couple first rate Agile Coaches Michael Sahota and Gil Broza whom I already know as well as a lot of other well known Agile Coaches whom I wanted to meet, so I figured it would be worth attending. I was not disappointed. This blog entry contains my observations as well as some photos and video I shot during the day and a half long event. Read More »

Posted in Agile, Project Management, Scrum, Software Development, Technology | Tagged , , , , , , , , , , , , , | Comments closed

Agile Program Risk Management

Managing Risk Across Multiple Agile Projects

Black Cat

(From flickr: gagilas)

All human endeavours involve Risk. Software development projects as evidenced by their high failure rates are certainly no exception. A successful project is not the result of luck, but of anticipating, understanding and managing the Risks of the project. A successful portfolio of projects is therefore the result of anticipating, understanding and managing the cumulative Risk of all of the projects in your portfolio.

In my previous post “Five Simple Steps to Agile Risk Management”, I presented a method for Agile Risk Management. Experience has shown me that the approach works well for almost any type of project as well as for projects of pretty much any size. It is, however, a rare organization that has a single project underway at any given time, so while managing Risk in your individual projects is a good thing, we clearly need “more good”. “More good” is to have a comprehensive, consistent and up to date view of Risk across all projects. This article outlines a process for aggregating the Risks associated with a portfolio of projects so that Risk across multiple projects can easily be identified, reported, tracked and managed. Read More »

Posted in Agile, Project Management, Risk Management, Software Development, Technology | Tagged , , , , , , , , , , , , , | Comments closed