Creeping elegance

Last updated

In software development, creeping elegance, related to creeping featurism and second-system effect, is the tendency of programmers to disproportionately emphasize elegance in software at the expense of other requirements such as functionality, shipping schedule, and usability.

Creeping elegance is also forced by customers and sales personnel in the last stages of software development. Often one comes up with "just another feature" before the delivery date, [1] :81 and the software developer is left with the choice of prioritizing between delivery on time according to schedule or to fully satisfy customers and/or the sales department.

Complexity and readability are the main reasons why programmers tend to favor elegance over functionality all else being equal, simply to mitigate the more marginal cognitive burden of the task, which is very high compared to many other fields even in computer science.

It is definitely an area in which management and marketing conflict a lot with programmers, but most programmers will behave very petulantly when asked to deal with very old, poorly documented, or otherwise poor code, and often this will lead to easter eggs, intentional exploit vulnerabilities, and staff turnover.

Related Research Articles

<i>The Mythical Man-Month</i> 1975 software engineering book by Fred Brooks

The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks first published in 1975, with subsequent editions in 1982 and 1995. Its central theme is that adding manpower to a software project that is behind schedule delays it even longer. This idea is known as Brooks's law, and is presented along with the second-system effect and advocacy of prototyping.

Feature creep is the excessive ongoing expansion or addition of new features in a product, especially in computer software, video games and consumer and business electronics. These extra features go beyond the basic function of the product and can result in software bloat and over-complication, rather than simple design.

A software company is an organisation — owned either by the state or private — established for profit whose primary products are various forms of software, software technology, distribution, and software product development. They make up the software industry.

Software development is the process used to conceive, specify, design, program, document, test, and bug fix in order to create and maintain applications, frameworks, or other software components. Software development involves writing and maintaining the source code, but in a broader sense, it includes all processes from the conception of the desired software through the final manifestation, typically in a planned and structured process often overlapping with software engineering. Software development also includes research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.

An application program is a computer program designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end-users. Word processors, media players, and accounting software are examples. The collective noun "application software" refers to all applications collectively. The other principal classifications of software are system software, relating to the operation of the computer, and utility software ("utilities").

In software development, agile practices include requirements, discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end user(s). Popularized in the 2001 Manifesto for Agile Software Development, these values and principles were derived from, and underpin, a broad range of software development frameworks, including Scrum and Kanban.

In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard way to build and deploy applications and is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate the development of software applications, products and solutions.

Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.

Field service management (FSM) refers to the management of a company's resources employed at or en route to the property of clients, rather than on company property. Examples include locating vehicles, managing worker activity, scheduling and dispatching work, ensuring driver safety, and integrating the management of such activities with inventory, billing, accounting and other back-office systems. FSM most commonly refers to companies who need to manage installation, service, or repairs of systems or equipment. It can also refer to software and cloud-based platforms that aid in field service management.

Appointment scheduling software or meeting scheduling tools allows businesses and professionals to manage appointments and bookings. This type of software is also known as appointment booking software and online booking software.

Software product management is the discipline of building, implementing and managing software or digital products, taking into account life cycle considerations and an audience. It is the discipline and business process that governs a product from its inception to the market or customer delivery and service in order to maximize revenue. This is in contrast to software that is delivered in an ad hoc manner, typically to a limited clientele, e.g. service.

<span class="mw-page-title-main">Task management</span> Process of managing a task through its life cycle

Task management is the process of overseeing a task through its lifecycle. It involves planning, testing, tracking, and reporting. Task management can help individuals achieve goals or enable groups of individuals to collaborate and share knowledge for the accomplishment of collective goals. Tasks are also differentiated by complexity, from low to high.

Extreme programming (XP) is an agile software development methodology used to implement software systems. This article details the practices used in this methodology. Extreme programming has 12 practices, grouped into four areas, derived from the best practices of software engineering.

Software project management is the process of planning and leading software projects. It is a sub-discipline of project management in which software projects are planned, implemented, monitored and controlled.

<span class="mw-page-title-main">Cap Gemini SDM</span> Software development method

Cap Gemini SDM, or SDM2 is a software development method developed by the software company Pandata in the Netherlands in 1970. The method is a waterfall model divided in seven phases that have a clear start and end. Each phase delivers subproducts, called milestones. It was used extensively in the Netherlands for ICT projects in the 1980s and 1990s. Pandata was purchased by the Capgemini group in the 1980s, and the last version of SDM to be published in English was SDM2 in 1991 by Cap Gemini Publishing BV. The method was regularly taught and distributed among Capgemini consultants and customers, until the waterfall method slowly went out of fashion in the wake of more iterative extreme programming methods such as Rapid application development, Rational Unified Process and Agile software development.

In software engineering, team programming is a project management strategy for coordinating task distribution in computer software development projects, which involves the assignment of two or more computer programmers to work collaboratively on an individual sub-task within a larger programming project. In general, the manner in which this term is used today refers to methods currently in vogue within the software development industry where multiple individuals work simultaneously on the same activity; in these systems, programmers are often grouped in pairs at the same computer workstation, one observing the other working on the software and alternating roles at time intervals.

<span class="mw-page-title-main">Overengineering</span> Designing a product in a way that is needlessly complicated, ignoring simpler solutions

Overengineering is the act of designing a product or providing a solution to a problem in an elaborate or complicated manner, where a simpler solution can be demonstrated to exist with the same efficiency and effectiveness as that of the original design.

Midas is a line of banking system solutions provided by Misys corporation that was initially developed in the 1970s and gained significant market share through the 1980s and 1990s.

A programming team is a team of people who develop or maintain computer software. They may be organised in numerous ways, but the egoless programming team and chief programmer team have been common structures.

<span class="mw-page-title-main">Extreme programming</span> Software development methodology

Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

References

  1. Kessler, Eric H. (2000). "Tightening the belt: methods for reducing development costs associated with new product innovation". Journal of Engineering and Technology Management. 17 (1): 59–92. doi:10.1016/S0923-4748(99)00020-X. ISSN   0923-4748 . Retrieved February 15, 2023.