Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Often I hear PMs (Project Managers) talk about feature and function. And I'm just so puzzled to differentiate them. Sometimes I think of a feature to be equivalent to a user story. Something like "As a user, Bob should be able to see a list of his payments", and they call it a feature. Sometimes it gets as big as a subsystem, something like "the ability to send SMS via web application". Function on the other hand sometimes gets as small as a task, "implementing digit grouping for number inputs", while there are cases when it gets as big as a whole CRUD operation.

My question is, how can we differentiate feature from function?

share|improve this question
8  
I wouldn't obsess about this so much. They both mean 'the program should be able to do this or that thing'; if a project manager makes a distinction, it's probably personal and you should just read between the lines to extract the intention. –  tdammers Jul 19 '11 at 10:23
7  
Or just ask for their definition of each. Probably they use the two as loose synonyms. –  Péter Török Jul 19 '11 at 10:27
    
Bullet points vs. value –  Erik Reppen Mar 6 '13 at 14:38
add comment

8 Answers 8

up vote 20 down vote accepted

Features are what the sales people sell.
Functions are what the programmers develop.

share|improve this answer
2  
Good, memorable, distinguishable answer. –  Saeed Neamati Jul 26 '11 at 12:56
add comment

Functions don't fit well into the context of a user story and are mostly transparent to a user. They may be a backend process or some kind of unique or common application functionality that enables other features or possibly other functions to be be implemented appropriately.

Tasks on the other hand are individual units of work that must be completed to deliver either a feature or a function.

In my projects I tend not to differentiate between a Feature and a Function and I write user stories for features and add functions or refactoring efforts as Tasks to complete a single feature.

This sometimes makes certain features look needlessly bloated on the project plan but this is okay, because if I need Functions 1 and 2 and Function 3 to be refactored to properly deliver Feature 1 then perhaps my only deliverable for that sprint will be Feature 1, or possibly no deliverables at all.

As long as by the end of the sprint I still have working software then my project is Agile.

share|improve this answer
add comment

Features are what your program can do. Features are a direct result of user requirements, and business objectives. Thus a program's features exist mainly to meet user demands.

Functionality, on the other hand, is how the aforementioned features are actually implemented.

share|improve this answer
add comment

For a PM, "Function" is purpose and "Feature" is a product behavior that a user can interact with. However people often get the two backwards (which I think is the case in your question).

Getting me from place A to place B is a key function of a car. Its the reason (purpose) it exists. The steering wheel is a feature, as is the gear stick. The driver interacts with multiple features to achieve the function of getting somewhere.

"Function" here should not be confused with a programming language function (method) which talks about implementation of a feature software. That is most likely not what a PM would be talking about when they refer to "Features and Functions".

There is not a nice hierarchy to functions and features, as one feature may be used to support multiple product functions.

share|improve this answer
add comment

Function: A core requirement that affects the value of the software dramatically, that the user must have at a specific release. Example: Save function on a text editor.

Feature: A nice to have capability of the software, that adds value to the software but is not an absolute must for the software to function properly and perform its functions. For example, have an undo feature on a data entry form or save a document as gif file for a text editor(wired!).

share|improve this answer
add comment

Behind each feature is the functionality needed to provide the user with the intended purpose of the feature.

Example: A university's registration system would have a "student registers for classes" feature. This task requires quite a bit of functionality as well as access to a database. The design for the feature would involve an understanding of the user's actual task - registering for classes. This would be a prerequisite to the "interaction design" necessary to facilitate the users task. The functionality would be designed to implement the interaction requirements.

Programmers are looking for functions to code. Interaction designers are looking for the best way to deliver this needed functionality through the design of the software's interaction with the user. Understanding of how the user can best achieve his or her objective comes first. Identification of the needed functionality follows.

The above is not scientific, it is only my opinion.

share|improve this answer
2  
Thanks for adding your first post to Stack Exchange Programmers. Please take a look at the FAQ programmers.stackexchange.com/faq for ideas about how to write questions and answers that will receive up votes and improve your reputation. –  DeveloperDon Sep 29 '12 at 14:00
add comment

It is important to remember the distinction between product functions and product features. Functions are the “product’s answer to the set of user tasks”; features are the “user tools” inherent in the product used to perform the functions . Placing a telephone call is a function; the dial tone and the touch-tone keypad are features used to accomplish the function.

share|improve this answer
add comment

I would agree that it is not worth obsessing over since the terms are often used interchangeably in some contexts. Yet in the broader management context I think there are some important points. First, PM can also mean product manager. Someone must take responsibility for deciding what the market will support in price, delivery date and features. I generally find that feature is preferred when you are in a marketing context. The project manager's role is to manage the project such that the desired product is delivered on time and within budget. To the architect and designers, the feature are given and can be thought of as delivered functions in the human organization offering data transformation and storage but must be reified until the design has been reduced to delegate-able units of work that can be assigned to developers. It is often the case that a feature does not cleanly map to a set of functions in the machine system. For example, fast and secure are features desired by consumers but cannot be segregated in the code. These emergent properties are what make non-functional requirements so difficult to satisfy.

share|improve this answer
    
this post is rather hard to read (wall of text). Would you mind editing it into a better shape? –  gnat Mar 14 at 14:50
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.