Lentis/Featuritis

Introduction
Featuritis, or, is the expansion or addition of features to a product that go well beyond the project's original scope or intent. Although this phenomenon of product development can occur in any field, the continuous integration and continuous delivery (CI/CD) practices common to software development often result in featuritis. These practices make the channels that develop and deliver content to the user extremely efficient. As the development of updates becomes faster, the utility of the content within them can become questionable to the end user. This chapter studies the causes and effects of featuritis and offers potential solutions to eliminate it.

Disconnection from User Base
The effectiveness of new features is derived from their utility to the user base. If a developer does not take the time to properly reach out to their users regarding product usage and, then any features that are added run the risk of being useless to the end user. Although developers can make guesses on what the end user will find useful, taking the time to collect user feedback on the performance of existing features and what new features they would like to see greatly decreases the likelihood of a product suffering from featuritis.

Desire to Increase Market Space
As the number of functionalities of a product increases, the potential to appeal to a larger audience increases. If a company wishes to increase the target audience for a product, they may add features that specifically appeal to that market. Although this increases the number of potential customers, it makes the product lose focus on its original user base. Long time users may feel that the product is becoming less useful to them as the features they used in the past become outdated in the efforts to create new features.

This can also be applied in the attempt to maintain users. A company can prevent their current customers from switching to a competitor's product that has different features by including them within their own product. This can be done similarly in order to regain users lost to a competitor. This is dangerous because the desires of the user base of the competitor's product can be slightly different, leading to features that are not particularly useful to those that continue to use the product.

Demand Creation
Features can be added to products in the hopes of creating demand. If the features that are added to new products are deemed useful, or at least interesting enough, by the users, they will be more inclined to buy the newer product regardless of the usability of their current product. As a result, companies can increase the overall lifetime value of their customers by persuading them to buy newer products before they need to through the addition of seemingly useful features. In reality, these features may be nothing more than smart marketing tactics that leave the user with a product that is nearly identical to the one that they already had.

Consumerism
In the current economy, consumers have become greatly accustomed to having new products being developed in a very short period of time. Regardless of the market they are shopping in, customers will be looking to see new products as soon as they can. As a result, they will put pressure on developers to create new functionalities or match the functionalities of different products. While this can help companies easily market and sell new versions of their products, it also puts a great deal of stress on coming up with new features. If developers cannot create new and useful features at the same speed that consumers are demanding new products, they run the risk of having to add meaningless, but easy to implement, changes that can result in featuritis.

Silent Majority / Vocal Minority
With the rise of social media, many software products suffer when developers cater to the vocal minority and ignore the. The silent majority are users who are satisfied with the product as a whole and do not have any incentive to leave their opinion. The unsatisfied vocal minority will most often request new features. From the developer's point of view, it seems like these features are being widely desired by the entire user base, but in reality, it is only a small subgroup of users. As a result, the features that appeal to the silent majority of users may be ignored in order to focus on those that the vocal minority demands.

Short-term Profitability
Consumers will opt for products with more features even if they are aware that the product could be more difficult to use. Companies increase the functionality of their products in order to enhance or differentiate them. Carpenter et. al. (1994) found that brands can differentiate themselves by including meaningless features to their products. However, if core functionality is sacrificed in this process, post-purchase consumer dissatisfaction and lower overall lifetime value results, as user preferences shift from functionality to usability after purchase.

Time Loss
Developer time is not unlimited. As developers spend more time adding features, they focus less on the core functionalities of the product. This can result in or in the loss of core functions. Even more time can be lost if core functionality is affected, as the developer may be forced to halt production until they resolve the issue.

Smartphones have become ubiquitous in recent years, and manufacturers must quickly and effectively develop their products to succeed in the market. Samsung developed a smartphone that could fold in half during 2018. In April 2019, Samsung cancelled the release of the new smartphone after several broke during media testing. The phones were released for sale in September. Because the feature was underdeveloped, the phones became unusable and several months of time were required to solve the issues related to the new features.

Decreased Maintainability
Regardless of the functionality of a code base, maintenance becomes more costly and time consuming as features are added to a product due to increased complexity. It is estimated that more than 50% of software life cycle costs are due to maintenance. Products with an excessive amount of features may suffer from more bugs and issues that require maintenance than those that have few core functions. As the amount of required maintenance increases, developers must devote more resources to maintenance or accept worse performance from the product.

Decreased Usability
As developers add features to a product, the user interface can become crowded and difficult to use. Core functionality can be lost or hindered by secondary functions as locations of features change or become more difficult to navigate. As consumers value usability after purchasing a product, consumers dissatisfaction may result.

The BMW system is the user interface for the computer system that controls the secondary functions of BMW automobiles. It debuted on BMW 7 series automobiles in 2002. The original system received harsh criticism from the public due to its complexity and poor usability. The system employed a single rotating knob on the center console that was used to navigate through the control panel. While the system did eliminate numerous buttons and knobs, users found it difficult to navigate and confusing. One reviewer noted that six steps were required to change the radio station. The system has since been heavily remodeled to provide a better user experience. Current iterations have a smaller knob that controls fewer features, a touchscreen that resembles a tablet, and the ability to recognize voice commands as well as hand gestures for controlling features.

Smart home technology has become commonplace with the proliferation of WiFi-enabled devices. The technology includes devices that can control functions in homes such as lighting, doors, heating and air conditioning, and control of appliances from a mobile device. While the vision of controlling all home appliances with the push of a button has existed since the mid-20th century, the technology has not been widely accepted due to functionality problems. Users complain of difficulties in integration of devices, a steep learning curve, and undesired functions. Many homeowners opt for traditional systems like light switches, standard appliances, and mechanically-locking doors because they perform their intended function reliably and require no learning curve.

Software Bloat
occurs when a product increases in size, memory usage, minimum hardware requirements, etc. without having any measurable difference between previous versions. In extreme cases, newer versions can have performance issues that make it slower than its predecessor. Users may become frustrated with products experiencing software bloat due to the slower performance speeds. Additionally, many of the features being added that contribute to these slower speeds are not useful to them (or a majority of the other users).

Critically Analyze New Features
Project managers can often times get carried away with adding features since fixing bugs in their system is not as flashy and rewarding for the company. This type of mentality accelerates feauritis. Therefore, when considering if a new feature should be implemented there are two important things to consider: how many people will use it, and how often will they use it. For example, if a new feature will be used by all of the users, all of the time, then that is a great feature and should be implemented. On the other hand, if a new feature will be used by few of the users, all or most of the time then that might not be the best use of time. There could possibly be some current features that need improvement or some outstanding bugs that need squashing.

Bug Fixing
As previously stated, implementing new features should take a back seat to bug fixing under certain circumstances. Therefore, a fix-bugs-first methodology should be adopted when trying to reduce feauritis. This methodology focuses on fixing all the bugs in the current feature set first instead of pushing new features with every release of the product. Thereby users are not overloaded with features and instead feel like their feedback is valued, appreciated, and implemented. This methodology will make the core features strong.

Pruning
The idea is to focus on cutting out unnecessary features in the system while enhancing the core ones. In a metaphor, focus on creating a strong root and trunk before creating several branches. Deciding which are core features entails listening to the user base and analyzing their use cases. Then critically analyze features in the same manner as aforementioned to find the core features of the system. After pruning, both of the aforementioned solutions should be implemented to stop or reduce feauritis in the system. Pruning reveals which highly utilized core features are being neglected, and should be improved, while removing underutilized components. The main takeaway is on the main components of the product and perfecting them.

Modularization
In a similar manner to pruning, modularization is about splitting the system into its main components and then having additional add-ons. This way, users can add to the software or product as they need or want instead of being overloaded all at once. The extra features that were removed during pruning could turn into additional modules. The user then has a much more customized experience and can use add-ons as needed or as expertise increases. Therefore, the complexity that the user builds does not appear to be feauritis because the user is comfortable with each addition to the system. An example of this in Computer Science is the idea of frameworks. For example, React Native is an open source framework created by Facebook for building native mobile apps. Facebook focuses on supporting and maintaining the framework while developers around the world create libraries, or add-ons, that can be imported and used in the framework. Therefore, at the core of every React Native app it is using the same framework but the components, add-ons, or features built on top of it are all completely different.

Configurable User Modes
Similar to modularization except add-ons are group together and preset by the system. There are certain software or technologies that need to have a plethora of features in order to support the vast, almost endless, use cases. In these scenarios, developers can implement user modes that show and hide different features. This allows the user to change between modes based on their experience with the system. Therefore, a new user can start at a beginner mode and switch into other modes as they get more comfortable and gain expertise. This will reduce the feature overload of a first-time user being put essentially in expert mode right out of the box.

is a computer-aided design software package that allows users to configure the interface to their needs. Instead of displaying the twenty available ribbons at once, the default screen shows the seven most essential ribbons and an "Add-ins" ribbon that contains the remaining specialty ribbons. There are numerous hidden toolbars that can be accessed by clicking in the appropriate location. The side windows can be minimized and re-positioned. These functions allow the user to tailor the interface to their work and provide all desired features when required, and illustrate how configurable user modes can enhance the usability of feature heavy software.

Conclusion
Featuritis develops from the interaction of the competing agendas of the consumers, product developers, and marketing teams. In accordance with, the most complex solution is often not the best solution. As demonstrated by the case of the Samsung foldable smartphone, too much emphasis on new features will cost the developer serious amounts of time and money if core functionality is not maintained. Product features may be revolutionary, but consumers will only invest if the product is as reliable as previous versions and easy to use. Further work on featuritis may include the further study of the long term effects additional product features on profitability, how user feedback affects developer decision-making and practice, and the effectiveness of agile product development.