Function points and story points are similar, but different. Like the different kinds of eggs.

What is the difference between story points and function points? Both function and story points are a measure of size, but they are derived by different means. The big difference is that story points are a measure of size determined by the team, while function points are a measure of size based on a standard set of rules[1].  There is not a perfect analogy, but one that I use is that the difference is like measuring the distance between New York and Chicago in miles or the number of rests stops I’d need if I was driving. Both are predictable, however only one is understandable outside of my team.

Function points (see What is a function point?) are a measure of the functionality delivered by the project or application.  All of the different types of function points are based on a set of rules that can be applied consistently by any trained practitioner.  Size is generally reflective of a count of a set of components (External Inputs, External Outputs, External Inquires, Internal Logical Files and External Interface Files).  The size of each component is judged based on attributes like fields, files and groups of data.

Story points are based on the team’s perception of the size of the work.  The determination of size is based on level of understanding, how complex and how much work is required compared to other units of work.  For example, one team might feel that developing a new service to insert customer records in a database is complex and large, while another team might perceive the same piece of work as less difficult. Scales for story points vary, however the two most common are the Fibonacci sequence and Cohn’s numbers.

Both function points and story points can be used to gauge how much work can be accomplished in an iteration or release.  The difference between the two sizes is generally who is involved in making that determination: the project team or an estimator. Another difference between the two measures of size can be seen in the how story points and function points can be used in organizational measurement programs.  Simply put, since story points are a reflection of the perception of a specific team they can’t be used to compare performances across teams, nor can they but summed up to generate organizational metrics.

Story point and function points represent size.  Story points are created by a specific team based on the team’s cumulative knowledge and biases.  The result of developing story points is useful to help the team plan, but not useful outside of the team.  Function points are a reflection of size based on a standard set of rules, rules not developed by the team therefore less intuitively understandable, but more useful at an organizational level.  If the question then becomes, “Which measure of size should I use?” The answer, as always, is it depends on what you need the information for.  If you are collecting organizational metrics, using parametric estimation or have dynamic team structures (common in matrix organizations) then function points make sense.  If size is used by a team for its own use and the team structure fixed then story points can be very useful.

[1] There are several international function point standard including IFPUG, COSMIC and NESMA.