Programming productivity: Difference between revisions

Content deleted Content added
OAbot (talk | contribs)
m Open access bot: add arxiv identifier to citation with #oabot.
Tags: Mobile edit Mobile web edit Advanced mobile edit
 
(18 intermediate revisions by 9 users not shown)
Line 2:
 
==Terminology==
Productivity is an important topic investigated in disciplines as various as manufacturing, organizational psychology, industrial engineering, strategic management, finance, accounting, marketing and economics. Levels of analysis include the individual, the group, divisional, organizational and national levels [5].<ref name="ramirez2004" /> Due to this diversity, there is no clear-cut definition of productivity and its influencing factors, although research has been conducted for more than a century. Like in software engineering, this lack of common agreement on what actually constitutes productivity, is perceived as a major obstacle for a substantiated discussion of productivity.<ref>Neal, A., Hesketh, B., Anderson, N., Ones, D. S., Sinangil, H. K., Viswesvaran, C. (ed.) Handbook of Industrial, Work and Organizational Psychology Productivity in Organizations. Sage Publications Ltd, 2002, 8-24</ref> The following definitions describe the best consensus on the terminology.<ref name="tangen2005">Tangen, S. Demystifying productivity and performance, International Journal of Productivity and Performance, 2005, 54, 34-36</ref>
 
===Productivity===
Line 12:
However, across the various disciplines different notions and, particularly, different measurement units for input and output can be found. The manufacturing industry typically uses a straightforward relation between the number of units produced and the number of units consumed.<ref>Chew, B. W. No-Nonsense Guide to Measuring Productivity. Harvard Business Review, 1988, 66, 110-115</ref> Non-manufacturing industries usually use man-hours or similar units to enable comparison between outputs and inputs.
 
One basic agreement is that the meaning of productivity and the means for measuring it vary depending ofon what context is under evaluation. In a manufacturing company the possible contexts are:<ref name="tangen2005" />
 
* the individual machine or manufacturing system;
Line 18:
* the manufacturing process for a single product or group of related products;
* the factory; and
* the company’scompany's entire factory system
 
As long classical production processes are considered a straightforward metric of productivity is simple: how many units of a product of specified quality is produced by which costs. For intellectual work, productivity is much trickier. How do we measure the productivity of authors, scientists, or engineers? Due to the rising importance of [[knowledge work]] (as opposed to manual work),<ref name="drucker1999">Drucker, P. F. Knowledge-Worker Productivity: The Biggest Challenge. California Management Review, 1999, 41, 79-94</ref> many researchers tried to develop productivity measurement means that can be applied in a non-manufacturing context. It is commonly agreed that the nature of knowledge work fundamentally differs from manual work and, hence, factors besides the simple output/input ratio need to be taken into account, e.g. quality, timeliness, autonomy, project success, customer satisfaction and innovation. However, the research communities in neither discipline have been able to establish broadly applicable and accepted means for productivity measurement yet.<ref name="ramirez2004">Ramírez, Y. W., Nembhard, D. A. Measuring knowledge worker productivity: A taxonomy. Journal of Intellectual Capital, 2004, 5, 602-628</ref> The same holds for more specific area of programming productivity.
Line 32:
===Performance===
 
The term performance is even broader than productivity and profitability and covers a plethora of factors that influence a company’scompany's success. Hence, well-known performance controlling instruments like the [[Balanced Scorecard]] do include productivity as a factor that is central but not unique. Other relevant factors are e.g. the customers’ or stakeholders’ perception of the company.
 
===Efficiency and Effectivenesseffectiveness===
 
Efficiency and effectiveness are terms that provide further confusion as they themselves are often mixed up and, additionally, efficiency is often confused with productivity. The difference between efficiency and effectiveness is usually explained informally as ''efficiency is doing things right'' and ''effectiveness is doing the right things''. While there are numerous other definitions,<ref name="tangen2005" /> there is a certain agreement that efficiency refers to the utilisation of resources and mainly influences the required input of the productivity ratio. Effectiveness on the other hand mainly influences the output of the productivity ratio as it usually has direct consequences for the customer. Effectiveness can be defined as "the ability to reach a desired output".
Line 52:
However, it appears that these efforts to include the quality in the determination of productivity did not lead to an operationalizable concept yet. It currently remains unclear how to quantify the vague terms “Output quality and quantity” as well as “Input quality and quantity”, let alone to calculate the ratio.
 
==State- of-the-Art in Programmingthe Productivityart==
 
In software development things are more complicated than in the production of goods. Software development is an engineering process.
Line 58:
===COCOMO II===
 
Boehm was one of the first researchers that systematically approached the field of software productivity. His cost estimation model [[COCOMO]] - now COCOMO II<ref>Boehm et al. Software Cost Estimation with COCOMO II, 2000</ref> - is standard software engineering knowledge. In this model, he defines a set of factors that influence productivity, such as the required reliability or the capability of the analysts. These factors have been widely reused in other similar productivity approaches. The rest of the model is based on function points and finally [[source lines of code]] (LOC). The limitations of LOC as a productivity measure are well-known.
 
===Jones's Softwaresoftware Productivityproductivity===
Jones is the author of a series of books on software productivity. Besides several theoretical considerations his main contribution is the systematic provision and integration of a large amount of data relevant for productivity analyses. In at least two of his books,<ref>{{Cite book |last=Jones, C.|first=Casper |year=2000 |title=Software Assessments, Benchmarks, and Best Practices |___location=Boston, Mass. |publisher=Addison-Wesley, 2000}}</ref><ref name=jones>{{Cite book |last=Jones, |first=Casper. <u>|year=1986 |title=Programming Productivity< |url=https:/u>/archive.org/details/programmingprodu0000jone |url-access=registration |___location=New York |publisher=McGraw-Hill, Inc.Book pCompany |page=[https://archive.org/details/programmingprodu0000jone/page/85 85]–86 |isbn=9780070328112 |oclc=611260287 |access-date=14 April 862020}}</ref> he gives a number of productivity factors but also points out that for each project a different set of factors are influential. These factors can form a basis for productivity assessments and for comparison with industrial averages.
 
Jones is the author of a series of books on software productivity. Besides several theoretical considerations his main contribution is the systematic provision and integration of a large amount of data relevant for productivity analyses. In at least two of his books,<ref>Jones, C. Software Assessments, Benchmarks, and Best Practices. Addison-Wesley, 2000</ref><ref>Jones, Casper. <u>Programming Productivity</u> McGraw-Hill, Inc. p. 86</ref> he gives a number of productivity factors but also points out that for each project a different set of factors are influential. These factors can form a basis for productivity assessments and for comparison with industrial averages.
 
This is one such list:
 
<blockquote>
<blockquote>The 20 factors whose quantified impacts on software projects have been determined from historical data are the following:
 
* Programming language used
Line 84 ⟶ 83:
* Geographic separation of development locations
* Defect potentials and removal methods
* (Existing) Documentationdocumentation
* Prototyping before main development begins
* Project teams and organization structures
* Morale and compensation of staff <ref>Jones, Casper. <u>Programming Productivity<name=jones/u> McGraw-Hill, Inc. p. 86</ref>
</blockquote>
 
===Function Pointspoints===
 
[[Function points]] were proposed in 1977 by Albrecht as a better size measure for software than LOC. In that it is based on the specification of the software and thereby aims at measuring the size of its functionality rather than the code itself. The reason is that the size of the code not only depends on the size of the functionality but also on the capability of the programmer: better programmers will produce less code for the same functionality. The function points have undergone several redesigns over the years mainly driven by the International Function Point User Group (IFPUG). This group is large with over 1200 companies as member which shows the rather strong acceptance of this measure. However, in many domains it still lacks practical application because it is often conceived as only applicable to business information systems.
 
===Value-Basedbased Softwaresoftware Engineeringengineering===
 
Several researchers proposed economic-driven or value-based software engineering as an important paradigm in future software engineering research. Boehm and Huang point out that is it not only important to track the costs in a software project but also the real earned value, i.e. the value for the customer.<ref>Barry Boehm, Li Guo Huang. Value-Based Software Engineering: A Case Study. IEEE Software, 2003</ref> They explain that it is important to create the software business case and keep it up to date. In essence, value-based software engineering focuses on the customer value, mainly measured in monetary units.
Line 105 ⟶ 104:
There are probably a large number of factors influencing the programming productivity of individuals and teams. For example, the used [[software development process]] probably influences the effectiveness and efficiency of a team.
 
The [[personalities]] of software programmers influence the used coding styles which, in turn, influence the productivity of the programmers.<ref>{{Cite journal|title = Links between the personalities, styles and performance in computer programming|url = http://elib.uni-stuttgart.de/opus/volltexte/2015/10315/|journal = Journal of Systems and Software|date = 2016|pages = 228–241|volume = 111|doi = 10.1016/j.jss.2015.09.011|firstfirst1 = Zahra|lastlast1 = Karimi|first2 = Ahmad|last2 = Baraani-Dastjerdi|first3 = Nasser|last3 = Ghasem-Aghaee|first4 = Stefan|last4 = Wagner|arxiv = 1611.10169|s2cid = 400518}}</ref>
 
== In popular culture ==
In 2007, the [[xkcd]] comic popularized the concept of a [[Ballmer Peak]]—that a programmer, with just the right amount of [[inebriation]], achieves a high state of productivity. The Ballmer Peak is named after former Microsoft CEO, [[Steve Ballmer]],<ref>{{Cite web |title=Ballmer Peak |url=https://xkcd.com/323/ |access-date=2023-10-07 |website=xkcd}}</ref> and is likely a play on [[Balmer series]] of hydrogen spectral lines named for [[Johann Balmer]].<ref>{{Cite web |title=323: Ballmer Peak - explain xkcd |url=https://www.explainxkcd.com/wiki/index.php/323:_Ballmer_Peak |access-date=2023-10-07 |website=www.explainxkcd.com}}</ref>
 
== References ==
Line 111 ⟶ 113:
 
==Further reading==
* ''Software Cost Estimation with Cocomo II'', [[Barry W. Boehm]] ''et al.'', Prentice Hall, 2000. {{ISBN|978-0-13-026692-7}}.
* ''Developing Products in Half the Time: New Rules, New Tools'', Preston G. Smith and Donald G. Reinertsen, Wiley, 1997. {{ISBN|978-0-471-29252-4}}.
* ''Programming Productivity'', [[Capers Jones]], Mcgraw-Hill, 1986. {{ISBN|978-0-07-032811-2}}.
* ''Estimating Software Costs'', [[Capers Jones]], McGraw-Hill, 2007. {{ISBN|978-0-07-148300-1}}.
 
[[Category:Productivity]]
 
[[Category:ProductionSoftware economicsengineering costs]]
[[Category:Software project management]]
[[Category:Software engineering costs]]