Product Maintenance vs. New Development on Web Sites, Mobile Apps and Other Digital Products

maintenance

Maintenance of a digital business product (e.g. a Web site, mobile app, or software) refers to the work that includes modifications made after delivery to production to fix bugs, address compliance/security issues, or improve scalability/performance These modifications can be to the product’s software code, configuration, documentation, hardware, or surrounding network.

Maintenance is often contrasted with the development of new features and functionality to enhance or increase the capabilities of the product.

The distinction between maintenance vs. new feature development comes up in both internal and external contexts. In the external context, it pertains to a maintenance contract with an outside vendor. A vendor is likely to define maintenance in strict and narrow terms to minimize costs the vendor has to incur. In the internal context it is helpful in analyzing staffing and resourcing capacity of an organization which is needed to understand the bandwidth available to work on new initiatives.

The purpose of this article is to help answer questions such as: What do you mean by maintenance work? What should we consider maintenance vs. new feature development? Is there an industry standard definition? What’s our selection criteria? Can you give some examples? Other questions that often accompany these are: What ratio of maintenance vs. new features development work is considered best practice for our industry? How does our organization’s situation compare with that? These latter two questions require analysis specific to your organization and a set of reference organizations to answer.

The following illustrates some typical attributes of maintenance vs. new features.

Maintenance

New Features

Consequences of not doing Often maintenance work is not optional, i.e. the consequences of not doing maintenance range from the gradual decline of the product to complete breakdown of the product. Not doing maintenance often causes legal, security and other compliance issues. Implementation of new features, functionality and services is often optional. The negative consequences of not implementing new features typically include loss of competitive advantages, loss of market share, and decrease of relevance.
Financial impact The financial value of an asset decreases in the absence of maintenance. Maintenance work helps maintain the value of the product, but typically does not substantially increase it. New features and functionality increase the financial value of an asset.

Types of Maintenance Done on Web Sites and Mobile Apps

Learning from the The International Standards Organization and International Electrotechnical Commission’s ISO/IEC 14764 specification, we define maintenance of a digital business product such as a Web site or mobile application into the following four categories:

  • Corrective maintenance: Reactive modification of the software, configuration or infrastructure powering a Web site or mobile app performed after delivery to correct discovered problems. E.g.
    • Bug fixes
    • Fixing design compatibility (HTML/JavaScript/CSS) issues with Web browsers that have been around for a while.
    • Install security patches to address existing security/privacy holes.
  • Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment. E.g.:
    • Modifying a Web site to work with an newly emerging Web browser like a recently released version of Google Chrome.
    • Modifying a mobile app to comply with changes made by third parties, e.g. new terms of service from Facebook or Twitter, a new API released by Google+.
    • Increase capacity to handle increasing traffic on a Web site.
  • Perfective maintenance: Modification of a software product after delivery to improve performance or maintainability. E.g.:
    • Changes to servers or network to make the Web site serve quicker.
    • Refactoring the software code to make it less expensive to maintain and modify.
  • Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults. E.g.:
    • Y2K :-) fixes made on or before December 1999. Remember that? When we had to install patches and test software on the Web sites in the 90s.

The following are some examples of maintenance work contrasted with new features development.

Maintenance

New Features

Fixing bugs in existing software. Developing new Web applications or mobile apps. Adding major new features and functionality to existing apps.
Modifying software code on a Web application to comply with changes to Facebook’s application programming interface (API). Adding new software code to add support in a Web application for a new social network, e.g. Google+.
Rewriting parts of a Web application to handle increased usage (E.g. more users, users storing more data, growing traffic.) Developing a complete new Web application to replace an existing application to address the shortcomings the previous one has.
Routine work like generating, analyzing and publishing periodic reports. Designing, developing and automating a new report that has not existed before in the organization. Adding significant and major new features to an existing report.

In certain cases, the distinction between maintenance and new development can be blurry. For example, when rewriting (rebuilding) major parts of an application to overcome its shortcomings, at what point do we consider it a replacement (new development)? In such cases, it may be subjective based on how the output of the work is classified, branded and marketed. If it is being announced, launched and sold as a great new product to replace the old, it would be new development. This can cause issues when a customer has a maintenance contract with a vendor and doesn’t want to pay for the new version that doesn’t add substantial new functionality. That, however like all contracts, becomes matter of trust, relationships and reputation.

In the cases where an external vendor has a maintenance contract with a customer, the vendor is likely to not classify certain maintenance activities as maintenance since doing so would incur significant and unexpected costs the vendor would become responsible for. For example, a vendor may not include many adaptive types of maintenance in the contract. A vendor may want to charge the client more to handle increased usage.

Ratio of Maintenance vs. New Development

There is no “magic number” answer to this question. Ratios like 80/20, 70/30, 60/40 or 50/50 are specific to an organization in a specific phase. In today’s dynamic and hyper-competitive environment, seeking a best practice ratio for an industry may be misleading. A company or project in the startup phase typically has a lot more new development than maintenance happening than a organization with a mature product. Even within a particular company, the ratio changes as new projects start, are worked on and are completed. Decommissioning obsolete products also lowers the maintenance.

Related observations

Going down to maintenance mode for specific products does make good sense in certain circumstances. For example, when you are working on a major new version of the Web site or product, you can put the current (soon to be replaced) version in maintenance mode.

Sometimes, in times of financial hardship, companies try to hunker down to maintenance mode where they shed the new development work and do only the work required to “keep the lights on” to ride out the storm. This type of horizontal cutting of all products may initially seem like a good approach but in most cases, it is not a wise practice. In most circumstances of financial hardship, it is often wiser to cut products vertically. In other words, focus on doing a fewer number of products well rather than keep doing the same number of products poorly. Stopping new development and product innovation enables existing competitors to gain a huge lead over you. It creates opportunities for new competitors to your business and leads to the decline of your brand.

My article titled Trinity Method of Technology Management makes a case for decommissioning products the way Google does seasonal cleaning by ending products that no longer suit the company’s revised strategy.

References

 

How to Avoid Duplicate Search Results when using Apple Mail.app with Gmail

I use Gmail’s IMAP feature with my Apple Mac OS’s built in Mail.app program. Mail.app keeps local copies (on all my personal Macs) of all my email messages that I’ve kept (since 1994). It enables me to:

  • Effectively work offline with all my emails (searching, reading and composing), when my computer is not online. That’s sometimes the case when I’m traveling, especially in places where Internet access is unavailable, unreliable, slow, insecure or too expensive.
  • Regularly back up all my saved emails using Apple’s Time Machine. It is also a precaution in case I someday no longer have my Gmail account and/or move to another email service. With email account theft rampant these days, it is important to have up to date backups of all your emails.
  • Send digitally signed and encrypted emails when needed.
  • Compose greeting cards and other visually rich emails with pictures on Mail.app’s stationary.

The Problem:

When you initially set up Mail.app to use Gmail via IMAP, you will observe that when you search your mail using Apple’s built in Spotlight feature, the search results will show duplicate (or more) copies of your email. This is because Gmail’s labels and special views (like “All Mail” or “Starred”) appear as separate IMAP folders in Mail.app. Messages in these seemingly “separate IMAP folders” appear to be duplicates to Mail.app and Spotlight search.

The Solution:

To solve this problem, I suggest showing only essential Gmail special views and labels as IMAP folders to Gmail and then telling Spotlight search to only index the master copies of the messages in Gmail’s “All Mail” folder. To accomplish this, I did the following.

Note: I do the labeling of my messages via the Gmail Web interface and do not need to see the labels applied to messages when I’m using Mail.app. My solution below hides all my custom Gmail labels from Mail.app and that’s fine with me.

In Gmail (via the Web interface)

Go to “Settings > Labs” and activate “Advanced IMAP Controls“. After enabling it, go to “Settings > Labels” and uncheck “Show in IMAPfor each custom Gmail label you have created. Also uncheck it for “Starred” since Mail.app shows to do flags in messages in other folders.

Leave “Show in IMAPchecked yes for “Inbox“, “Sent Mail“, “Drafts“, “All Mail” and “Trash” since these are system folders and Apple Mail.app should be configured to use them. Also leave it checked yes for a label folder called “Apple Mail To Do” which is an Apple Mail system folder.

On your Macs

Go to “System Preferences > Spotlight > Privacy“, exclude the following folders from appearing in search results. Where it says [email protected] below, use your Gmail account name.

~/Library/Mail/IMAP-[email protected]/INBOX.imapmbox

~/Library/Mail/IMAP-[email protected]/[Gmail]/Sent Mail.imapmbox

Also, if you are displaying your starred folder via IMAP, exclude:

~/Library/Mail/IMAP-[email protected]/[Gmail]/Starred.imapmbox

Now when you search messages in your Mac’s Mail.app, only results from your Gmail All Mail folder will appear.

Software Products: Own vs. Rent & Create vs. Get (Incorrectly Called Build vs. Buy)

Understanding the issue

Technology executives are often asked about their preferences on build vs. buy. This question would be better articulated as two separate questions: 1. own vs. rent and/or 2. create vs. get.

Why? The usual problems a company is trying to solve when they ask this are:

  1. How can we have the products, features and/or functionality we want sooner?
    • This is a create vs. get question, i.e. Will it take longer to build it or to get an existing product then install, integrate and configure it?
  2. How can we have a product that not only meets current requirements, but is also more likely to continue to develop to meet future requirements (foreseen and unforeseen)?
    • This is a own vs. rent question, i.e. Who do we think is more likely to innovate, continue to invest and do better future upgrades to the products: us, or a vendor?
  3. Which is the more economical and cost-effective option?
    • This is a create vs. get question, i.e. Which option has better ROI, in-house or a vendor?
  4. Which option will give us more business flexibility?
    • This is a own vs. rent question, i.e. Which option will give us a product that we can later decide to use for other purposes (e.g. sell or license to others)?

Building and buying are often part of the same concept of owning. For example, Google (the company) bought Android, Blogger and YouTube. Android, Blogger and YouTube programmers (builders) became Google employees. As a direct result of Google purchasing (buying) and thus owning YouTube, Google now builds and maintains it. In this example, buying and building are the same thing!

When people ask about companies buying software, they are almost always referring to licensingleasing or renting software.

So instead of calling the debate build vs. buy, which is inaccurate, ambiguous and confusing, we should consider it in two dimensions: own vs. rent and/or create vs. get. Even these distinctions aren’t complete, however, because there are different types of ownership (e.g. owning a product vs. owning a license to use it) and different types of rental or leasing agreements.

Owning a product is different from owning a license to use it. For example, you don’t own Microsoft Word (unless you are Microsoft). You own a license to use it on a certain number of computers. Another example: While you may own the physical DVD disk, you don’t own the movie on it: the rights holder1 does. You only own a license to play the movie for personal, non-commercial purposes. You are not allowed to play the DVD in a theater where you charge people to watch it. Nor are you allowed to distribute the film via a file sharing service. You are also not allowed to copy a long scene from the movie and use that video footage to create an advertisement for a product you are selling.2 These examples are relevant to the incorrectly named “build vs. buy” decisions, because the type of ownership governs what you can do and cannot do with the product. That has consequences for the future of your business.

Open Source Products

When asking the own vs. rent question, using open source products falls in the own side, because open source licenses permit you to do as you please3 with your copy of the open source software and no one can take it away from you. Open Source software licenses grant you rights similar to those you’d have if you owned it.4 Open source makes owning even better. It enables owning and sharing at the same time, which benefits the community at large.

When considering create vs. get, however, open source products fall in the get side because just like paid products, open source products are developed by someone else; are already made; and they can be implemented and supported by third-party vendors.

The popularity of open source products is another reason why build vs. buy is not the right question. Open source products are both “build” and “buy”, in the ‘own’ and ‘get’ senses respectively.

Having a preference is a good thing

Sometimes technology executives try to answer this question in a way to avoid seeming biased. They claim they have no preference towards either owning or renting software. However, a preference (a good thing) is not the same thing as a bias (a bad thing). When a person provides such a noncommittal answer, it might indicate they lack leadership, vision and a clear philosophy, or the courage to give an honest answer.

I generally prefer owning over renting. This applies not just to software, but to other things in my life like owning a home and owning a car. There are other people who prefer to rent apartments and lease cars. Neither philosophy may be better in general than the other, but one of them is always better depending on the circumstances. That’s where leadership comes in. A leader has learned from experience and from others and thus has preferences, principles and a philosophy. Good leadership is based on evidence, research and science. Leaders who prefer either one of owning or renting can be equally successful in the same organization and circumstances.

The nine main reasons I often prefer my organization to own the software it uses for its core business functions are:

  1. Competitive advantage via exclusivity, if desired.
    • You have an advantage over others who don’t have your software. They can’t just buy the products and services from the same vendor as you.
    • When an employee leaves your company to join your competitor, they can’t do the same thing they did for you there without your software.
  2. Business flexibility. When you own the software you use, you can:
    • White-label and license the products and/or services implemented using it to other companies, generating revenue.
    • License some of your software itself to other organizations, generating revenue.
    • Open source it, giving back to the community (a charitable thing to do)
  3. Economy and cost-savings when growing. When you own the software you use, you can use it without buying additional licenses for:
    • Companies that you acquire in the future
    • Implementing new products
  4. Control over your data.
    • When a vendor manages your core business data, in most cases you have practically relinquished control of your data even though your contract may say on paper it is yours.
  5. Superior integration and Time to market
    • When you own the products you use, it is often easier and cheaper to integrate with your other systems.
  6. Faster time to market
    • Your timelines are less at the mercy of outside vendors whose interests may or may not be aligned with yours at any given point in time.
  7. Superior integration
    • When you own the products you use, it is often easier and cheaper to integrate with your other systems.
  8. Choice. When you maintain a great software engineering team in-house:
    • You keep your vendors on their toes, knowing that they are not your only option.
    • You have the in-house expertise to evaluate the vendor products, solutions and claims. The in-house folks’ interests are best aligned with your company’s.
  9. The most successful companies have great software engineering teams that develop their core software.
    • Google, Facebook, Twitter, LinkedIn, Netflix, etc.: They all have great software engineering teams who build their core products.

The practice of renting too much of its software used for core business functions has run many companies into trouble.5 There are numerous examples of vendor solutions in search of problems. A vendor will often wow a team of executives with a product presentation and demo. The company will agree to rent the software not anticipating the cost increases over time. Later, the company will find it wasn’t worth the investment.

Vendor Evaluation Checklist (Starter)

When you do decide to use a vendor, consider using the following checklist.

When you meet a vendor trying to sell you a product or service, you must manage the meeting, instead of letting the vendor manage it. Ask the vendor the following questions.

  1. What business problem does your product solve?
  2. Who are your competitors?
    • If they claim they have no competitors, be cautious since it is unlikely to be an honest answer. Never assume that have no real competition like they claim. Do your own research on this regardless of how they answer the question. Compare their answer with your own findings.
  3. Please give us a live demo.
    • Do they use another customer’s data in their live demo? If yes, did they have permission from the customer to show it to you? If not, it implies they are callous about data privacy and how can you trust them not to show your data to others in a demo or even use your data for other purposes?
  4. We’d like to try before we buy but with no obligation to buy. Are you willing to do a test implementation (spike) with us at no or minimal cost to us?
  5. Explain your pricing in detail.
    • Ask for this at the first meeting.

This is a just a starter checklist. I plan to write a more thorough vendor evaluation checklist in a future article.

Caveats

My preference to own applies only to software products for the company’s core business functions. For non-core back-office functions like corporate email, human resources, financial management, etc., I prefer to license software instead of owning it.

The future shape of software is changing.6 With Web-based applications and utility computing (“cloud” computing) becoming popular, even home users may increase the practice of renting software on a pay-per-use basis. I may write on that subject in the future.

[Authors Note: I expanded this post in July 2013 to provide more detail, but I purposely didn’t “update” it in the sense of making it current with respect to the times because I want to preserve this as a record of the philosophy I had back in 2007. To reflect the evolution of my thinking on this topic, I may write a separate article in the future.]

  1. usually a studio []
  2. …except as allowed as fair use under copyright laws. []
  3. within reason []
  4. except the right to restrict its use by others []
  5. E.g. Vendor Lock-In https://en.wikipedia.org/wiki/Vendor_lock-in, Abandonware https://en.wikipedia.org/wiki/Abandonware , etc.  []
  6. Konary, Graham & Seymour; 2004; The Future of Software Licensing: Software Licensing Under Siege http://www.softsummit.com/library/white_papers/futureofsoftwarelicensing_idc.pdf  []

I now use WordPress publishing software for this site (Product Review)

Managing blogs and news content with WordPress is a Zen-like experience. The inner-beauty of a product is felt when it becomes almost unnoticed, allowing the site authors and editors to focus on publishing content and providing useful interactive functionality to their readers and customers.

I say this as someone who has been immersed in web content management for major news media companies since 1995. I have spent over a decade leading teams evaluating, implementing, maintaining and developing content management and publishing systems, including some industry award winning ones. My teams (including me personally) have been working closely with writers, editors, designers, photo/multimedia staff, sales and marketing folks at companies whose livelihoods depend on publishing content. I’ve also maintained my personal web sites since 1994.

It is impressive how well WordPress has worked as a CMS for the blogs and pages on this site. It is simple to use and painless to configure, manage and upgrade. It minimizes overhead and maintenance work.

WordPress plays well with others. It doesn’t require you to convert all your static content and pages powered by other CMS systems and custom scripts into WordPress. This allows you to conveniently migrate content to WordPress over time, preserving the URLs and keeping your site functional.

No wonder so many non-technical people and technologists alike use it for their sites: I switched to WordPress inspired by reading the personal blog of a colleague and CTO at another major media company who had also switched to WordPress. It is one of the best solutions for personal web sites and small to medium size organizations.

WordPress also powers the blogs of several major media companies with millions of daily page views. It has an well-designed architecture that makes it an excellent choice for large-scale use. It is used by a large and growing number of sites, including CNN, Fox News, Wall Street Journal, Yahoo, General Motors, Southwest Airlines, People Magazine, Apple Computer, Sony PlayStation US, C|Net, NY Times, Ziff Davis, Xerox, Delta Airlines and many others.

WordPress is a great choice because

  • Simple to use for writers and editors
  • Quick and simple to install, maintain and upgrade for systems administrators
    • E.g. automated daily backups to remote systems using a plugin
  • Good architecture for programmers to extend functionality if needed
  • Search engine-friendly and people-friendly URL structure
  • Dynamic publishing model of content managed in and served from a relational database. Content management and delivery are seamlessly integrated.
    • Presentation, as in design, is well separated.
    • This is a superior approach compared to other blog / CMS systems that recommend publishing static files.
      • In the file publishing model, those files are then served directly by the web server or processed by a web application server / CMS. That architecture, used by other blog platforms does not scale well and has been found to be error-prone, especially under heavy publishing/editing/commenting use.
    • If needed, external caching1 can be used that provide all the benefits of static file publishing without the drawbacks.
  • Excellent content management in a relational database
  • Rich feature set for advanced web publishing needs
  • Large and growing user base, well-supported and actively developed by the community
  • A large and growing number of plugins that add functionality to WordPress
    • WordPress is used by so many people that it is often likely that someone has developed a good solution for what you require. The WordPress directory is teeming with plugins, themes and other extensions developed and given by the community.
    • For example, support for OpenID as a client and server, site usage tracking with web analytics.
  • Plethora of third-party commercial support options available if needed
  • Free of license costs. Simple to operate and operate. Low total cost of ownership. An economical solution.
  • Reliable. Good performance. Scalable. Secure.
  • Open source

What WordPress currently lacks

  • A simple, standard way to place a widget in the main content area of a blog post or WordPress page. Currently plugins that need to place a widget there require putting in some special markup whose syntax varies with each plugin. Many use an HTML <!–comment–> syntax in the Code editing mode. Some use a syntax of [commands in braces] in the Visual editing mode.
    • A good solution would be for wordpress to allow widget placement and manipulation completely within the Visual content editing mode. Behind the scenes, in the code view, all plugins would use consistent markup syntax and it would be editable using a menu option in the Visual editing mode.
  • A way for certain widgets to only appear in the sidebar(s) of particular WordPress Pages or particular blog posts.
    • A good solution would be to have the ability to place a widget only on certain URLs that match a regular expression. Also, the edit form should have an option to include a widget only on a particular post or Page.

Alternatives

Another excellent choice for a blogging CMS is MovableType. I’ve had extensive experience with it and like it a lot too. MovableType and WordPress are the two leading products in their category.

If you are looking for a full-fledged content management system, consider Drupal or Plone. After a successful run for many years, my own Java-based Cofax is heading towards retirement.

If you need to build your own custom CMS, build using frameworks like Python with Django, Ruby on Rails or Groovy with Grails.

[rating:5/5]

  1. E.g. content delivery network like Akamai, an accelerator/cache like Squid or Varnish []

List of Open Source or Free Software for Home and Business Use

Here is a list of some open source or free desktop software that you can use for personal use at home or at your business. Using open source software can save you thousands of dollars that you’d spend buying proprietary software. I’ve chosen software here that is comparable in ease of use, maintainability and upgrades to similar pay-for software. Keep in mind that the total cost of ownership includes more than just license fees. There will always be costs in time and/or money to install, maintain, reconfigure and upgrade the software over time.

Useful for most computer users:

  • OpenOffice.org – Productivity suite competing with Microsoft Office, includes word processor, spreadsheet, presentations, database and drawing software
  • Grisoft AVG Anti Virus (free for personal use only, not open source)
  • Mozilla Firefox – Web browser
  • Mozilla Thunderbird – Email client
  • GIMP – GNU Image Manipulation Program, an alternative to Adobe Photoshop. Also consider GimpShop and CinePaint.
  • 7-Zip – Decompresses and compresses files and folders. An alternative to WinZip.
  • JEdit – A powerful text editor

For relatively technical users:

The Free Software Foundation’s GNU Project has a large collection of open source software in a variety of categories. You will find things ranging from business productivity software to games there.

A web site called Open Source Alternatives helps you find open source software alternatives to well-known commercial software.

This list was inspired by my friend Karl Martino’s list of some software he uses.

Google Web Toolkit: Develop and Test in Java, Deploy as AJAX

I’m building a pull-down-menu navigation for the rajiv.com site using the Google Web Toolkit (GWT) and I’m impressed by this Google product.

It allows you to create user interface (UI) widgets and dynamic functionality for your web app using the Java programming language. You develop and debug your app in the Eclipse Integrated Development Environment, just like you do any other Java app. When you are done, GWT translates the Java app into AJAX technologies: JavaScript, HTML, CSS and XML. This gives you the advantages of both worlds: You program and test using the robust Java platform and the final output is in AJAX (no Java applets at all) which works consistently across most modern web browsers.

Developing a web page UI using GWT, Eclipse and Java saves a lot of time over the alternative of coding all the AJAX (JavaScript, HTML, CSS, XML). GWT also takes care of issues like cross-browser compatibility and the AJAX UI not conflicting with the browser’s back button, which would otherwise have to be extra coding and testing work if developed in AJAX.

What’s also great is that the generated HTML pages are clean and nicely documented using comments, all automatically done by GWT.

Java programmers should welcome GWT since it gives them the ability to create rich dynamic HTML functionality in the robust environment they are familiar with. You can view the Java source code here.

Java Progammer? Use BeanShell

BeanShell is a fully Java compatible scripting language, capable of interpreting ordinary Java source files. You can also use it for working with Java interactively like an interpreted Unix Shell or Perl. You can try out Java’s object features, APIs, GUI widgets and other libraries hands on.

BeanShell is free and also ships bundled with popular applications such as BEA Weblogic, Forte for Java and the NetBeans IDE.