TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Cannot Measure Productivity

127 pointsby alexfarranover 11 years ago

24 comments

lifeisstillgoodover 11 years ago
I am going to get my drum out and bang on it again.<p>Software is a form of literacy - and we measure literacy completely differently. In fact we measure it like we measure science - you are not a scientist unless other scientists agree you are, and you are not a coder unless other coders say you are.<p>What Fowler wants to measure is not the top echelons of productivity but the lower bounds - presumably to winnow out the unproductive ones.<p>But that is not how we conduct ourselves in literacy or science. We <i>educate and train</i> people for a very long time, so that the lower bound of productivity is still going to add value to human society - and the upper bounds are limitless.<p>What Fowler is asking for is a <i>profession</i>.
评论 #6298040 未加载
评论 #6297521 未加载
评论 #6297910 未加载
评论 #6299079 未加载
评论 #6297646 未加载
评论 #6297340 未加载
ChuckMcMover 11 years ago
It has been more than 10 years, it has been at least 50 since there were moans about productivity in the early 60&#x27;s.<p>Feynman had some interesting thoughts on minimal computation that sort of paralleled Shannon&#x27;s information complexity. As you know Shannon was interested in absolute limits to the amount of information in a channel and Feynman was more about the amount of computation per joule of energy. But the essence is the same, programs are a process that use energy to either transform information or to comprehend &amp; act on information so &#x27;efficiency&#x27; at one level is the amount of transformation&#x2F;action you get per kW and &quot;productivity&quot; is the first derivative of figuring out how long it takes to go from need to production.<p>It has been clear for years that you can produce inefficient code quickly, and conversely efficient code more slowly, so from a business value perspective it there is another factor which is the <i>cost</i> of running your process versus the <i>value</i> of running your process. Sort of the &#x27;business efficiency&#x27; of the result.<p>Consider a goods economy comparison of the assembly line versus the craftsman. An assembly line uses more people but produced goods faster, that was orthogonal to the quality of the good produced. So the variables are quantity of goods over time (this gives a cost of goods), the quality of the good (which has some influence on the retail price), and the ability to change what sort of goods you make (which deals with the &#x27;fashion&#x27; aspect of goods).<p>So what is productivity? Is it goods produced per capita? Or goods produced per $-GDP? Or $-GDP per goods produced? Its a bit of all three. Programmer productivity is just as intermixed.
评论 #6298175 未加载
评论 #6297848 未加载
integratonover 11 years ago
The sad part is that even after decades of technologists debating this, the reality is that most non-technologists working in the industry don&#x27;t know, don&#x27;t care, and really just want their pet features. The real measure of productivity in organizations with non-technical stakeholders therefore becomes whether or not a stakeholder feels like they are getting what they want. Attempts to measure productivity, whether via lines of code or &quot;velocity,&quot; are often little more than a way for everyone to pretend their opinion is backed by something quantitative. In especially bad cases with non-technical management, they&#x27;ll just keep swapping out processes until they either get what they want or have something with numbers and graphs that makes it look like they should.<p>While I could be accused of excessive cynicism, I do believe this is common enough that it should be addressed. There&#x27;s a pervasive delusion that decisions are made by rational, informed actors, when that is rarely the case.
评论 #6297775 未加载
评论 #6299654 未加载
mathattackover 11 years ago
There are two types of productivity:<p>1) Are you doing the right things?<p>2) Are you doing things right?<p>They can be imprecisely measured, but every metric has problems and can be gamed. Combining the measurements is extremely difficult.<p>Let&#x27;s start with 1 - doing the right things. Someone who chooses to have their team work on 3 high value tasks, and stops their early on 6 low value tasks is by one definition more productive than someone who forces their team to do all 9 things. Or at the very least they are more effective. This is what Fowler is getting at.<p>On point 2... Let&#x27;s assume that the appropriateness of what you are doing is immaterial. How fast are you doing it? This can be somewhat approximated. You can say &quot;Speed versus function points&quot; or &quot;Speed versus budget&quot; or &quot;Speed versus other teams achieving the same output&quot; and then bake in rework into the speed. All of these metrics are doable. Lines of code isn&#x27;t a good base though.<p>The real question is, &quot;What are you going to do with all of this productivity data?&quot; If the answer is systemic improvement, you&#x27;re on the right track. If you try to turn it into personal performance (or salary) then people wind up gaming the metrics.
seijiover 11 years ago
Is measuring productivity isomorphic to the hiring problem?<p>Everybody says there&#x27;s a &quot;shortage of developers,&quot; but I know good developers who keep getting shitcanned after a few interviews where nothing seemingly went wrong.<p>We can&#x27;t tell who&#x27;s going to be productive. Since we can&#x27;t tell, we come up with ten foot high marble walls to scale. Our sterile interview problems make us feel &quot;well, at least the candidate can do our Arbitrary Task, and since we decided what Arbitrary Task would be, they must be good, because they did what we wanted them to do.&quot;<p>Productivity is pretty much the same. There&#x27;s &quot;just get it done&quot; versus &quot;solving the entire class of problems.&quot; Is it being productive if you do 50 copies of &quot;just get it done&quot; when it&#x27;s really one case of a general problem? I&#x27;m sure doing 50 copies of nearly the same thing make you look very busy and generates great results, but solving the general problem could take 1&#x2F;20th the time, but leave you sitting less fully utilized after (see: automating yourself out of a job).
评论 #6297604 未加载
评论 #6297619 未加载
RogerLover 11 years ago
A very wise man said &quot;there is no silver bullet&quot;. Yet we keep trying all these schemes to automagically solve what are hard optimization problems only amenable to heuristics and deliberate, intelligent introspection. Very simply, you cannot run some tool to measure the information density of a large project. Graphical programming isn&#x27;t going to turn a bunch of marketers into programmers. Doing user stories and forcing people to stand up as they talk isn&#x27;t going to remove all the need for planning and tracking. And so on.<p>You know how I figure out if something can be improved? I dig in, understand it, and then look for ways to improve it. If I don&#x27;t find anything, of course it doesn&#x27;t mean there is no room, but I&#x27;m a pretty bright guy and my results are about as good as any other bright guy&#x2F;woman.<p>I was subjected to endless amounts of this because I did military work for 17 years. You&#x27;d have some really tiny project (6 months, 2-3 developers), and they&#x27;d impose just a <i>huge</i> infrastructure of &#x27;oversight&#x27;. By which I mean bean counters, rule followers, and the like - unthinking automatons trying to use rules, automatic tools, and the like. Anything to produce a simple, single number. It was all so senseless. I know that can sound like sour grapes, but every time I was in control of schedule and budget I came in on time and on to under budget. But that is because I took it day by day, looked at and understood where we were and where we needed to go, and adjusted accordingly. Others would push buttons on CASE tools and spend most of their time explaining why they were behind and over budget.<p>I like Fowler&#x27;s conclusion - we have to admit our ignorance. It is okay to say &quot;I don&#x27;t know&quot;. Yet some people insist that you have to give an answer, even if it is trivially provable that the answer must be wrong.
评论 #6297480 未加载
nadamover 11 years ago
You can quite well measure productivity if you set a task, write tests for it, and tell two independent groups to implement it. You give them the same amount of time.<p>Now the <i>more productive</i> &#x2F; better group is which can do the task with <i>smaller complexity</i>.<p>Complexity measures measure size of code and number of dependencies between blocks in different ways. But even the most simple comlexity measure is quite good: just measure number of tokens in source code. (It is a bitmore sophisticated than LOC). You can then make competitons between groups, and measure their productivity. (I am writing a book now titled &#x27;Structure of Software&#x27; which discusses what is good software structure on a very generic&#x2F;abstract level. It relates to &#x27;Design Patterns&#x27; as abstract algebra relates to algebra.)
评论 #6298585 未加载
artumi-richardover 11 years ago
The book &quot;Making Software: What Really Works, and Why We Believe It&quot; (<a href="http://www.amazon.co.uk/Making-Software-Really-Works-Believe/dp/0596808321/ref=sr_1_1?ie=UTF8&amp;qid=1377809167&amp;sr=8-1&amp;keywords=making+software" rel="nofollow">http:&#x2F;&#x2F;www.amazon.co.uk&#x2F;Making-Software-Really-Works-Believe...</a>) has a section on this.<p>Chapter 8 &quot;Beyond lines of Code: Do we need more complexity metrics?&quot; by Israel Herraiz and Ahmed E Hassan.<p>Their short answer is that, in the case they looked at, all the suggested metrics correlated with LOC, so you may as well use LOC as it&#x27;s so easy to measure.<p>IIRC they believe it&#x27;s only good to compare LOC between different employees if they are doing pretty much the exact same task however, but since LOC is correlated with code complexity, there is some measure there.<p>I recommend the book, as really focusing on the science of computer science.
gz5over 11 years ago
Heisenberg principle variant for software:<p>Measure it. Or optimize it. Can&#x27;t do both without impacting the other.<p>Software is a work of art and creativity, not the work of a rules-based factory.
stonemetalover 11 years ago
So two teams build identical databases in identical time frames. One becomes popular and has sells in millions of dollars. The other flops, with sells in the hundreds of dollars. Sure there is a difference in business results but I fail to see how the two teams were not equally productive at creating software. Sure I don&#x27;t have a good definition of software development productivity but this is open to so many non software development productivity elements as to be nonsensical.<p>Basically I see this as marketing. We may not be the fastest but who cares about that we have the special insight to build the hits that keep you in business.
wciuover 11 years ago
Most performance indicators are imprecise. P&#x2F;E ratio is one of the stupidest measure of value, but it is widely use in finance. No one(at least no value investor) would invest based on P&#x2F;E ratio alone though, there is a lot more due diligence that&#x27;s done before investors put their money into a stock. (At least that&#x27;s what you hope happens.)<p>The problem with productivity measures, is not how they are measured but what they are used for. Most managers want to use productivity measures to evaluate individual or team performance, however, performance is tied to incentives, so you always end up with a lot of push back from the team or someone gaming the system. (IMO, this is because of lazy managers wanting to &quot;manage by numbers&quot;, without really understanding how to manage by numbers.)<p>Rather than using it as a performance management tool, productivity measures, however imprecise, can be used alongside other yardsticks as signals of potential issues. For example, if productivity measure is dropping with a particular module&#x2F;subsystem, and defect rate is increasing, then one might want to find out if the code needs to be rearchitected or refactored. In these cases, it is okay to be imprecise, because the data are pointers not the end goal. When used correctly, even imprecise data can be very useful.
dirtyauraover 11 years ago
The quest for a single measure of hard-to-define concept like productivity is doomed. Even Fowler&#x27;s article highlights the fact that we don&#x27;t have a shared understanding what the word productivity means: writong quality code, shipping useful products or making money? all of them? It&#x27;s no surprise that there is no numerical measurement that captures a badly-defined concept.<p>In my opinion, we should approach measurement from a different angle: can we learn something useful about our profession by combining different types of measurements. Can we, for example, easily spot a person who is doing what Fowler is calling important supportive work. Can we detect problem categories that easily lead to buggy code and allocate more time for code quality work for tasks and less for those that are known to be more straight-forward.
Jormundirover 11 years ago
It drives me nuts when programmers brag about their productivity, measured by how many lines of code they&#x27;ve written.<p>You end up with something like feature 1: +12,544 &#x2F; -237 lines. Done in 2 weeks.<p>Then comes feature 2, 2 and a half months later, the stats: +5,428 &#x2F; -9,845.<p>Look at that, you had to tear down everything they wrote because they cared about amount of code over code quality. The more they brag, the more you think &quot;oh s$%t, every line they add is a line I&#x27;m going to have to completely untangle and refactor.&quot;<p>I think software engineering productivity can be measured, though not well by today&#x27;s standards. There will probably be a decent algorithm to do it in the future that takes in to account the power of the code, how easy it is to build on top of, how robust it is, etc.
评论 #6298647 未加载
评论 #6297661 未加载
kailuowangover 11 years ago
The purpose of measuring productivity is to manage it. There are two categories of factors that decide the overall productivity: the factors within the developers (capability, motivation, etc) and the factors outside the developers (tools, process, support, etc).<p>True, it&#x27;s hard to objectively measure the overall productivity using a universal standard, but it is relatively easier to measure the productivity fluctuation caused by the external factors. Velocity measurement in Agile practice is mostly for that end.<p>For the internal factors, the best way, and arguably the only effective way, to manage it is probably to hire good motivated developers. I think most top level software companies have learned that.
评论 #6298095 未加载
mtdewcmuover 11 years ago
The article makes the point that the LOC metric is confounded by duplication:<p>&gt; Copy and paste programming leads to high LOC counts and poor design because it breeds duplication.<p>This problem is not insurmountable. Compression tools work by finding duplication and representing copies as (more concise) references to the original.* The size of the compressed version is an estimate of the real information content of the original, with copies counted at a significantly discounted rate. The compressed size of code could be a more robust measure of the work that went into it.<p>* Sometimes this is done explicitly, other times it&#x27;s implicit
alightergreenover 11 years ago
And what about Iteration? The learning value that can come from doing things poorly?! Imagine if Microsoft had LEARNED something from what they did wrong in Windows 95? Or Windows ME! Imagine how amazing their software would be now. They couldn&#x27;t have done it without having totally screwed up first. Of course they didn&#x27;t do that in the end...so...
chipsyover 11 years ago
Productivity by any volume measure seems meaningless in the software context. That&#x27;s like measuring writing productivity by word count. Nobody really likes high-volume communication, unless the goal is to write a lot of trash.<p>Even if you deliver a system with a lot of features and no known bugs, if they aren&#x27;t the right features, it&#x27;s not valuable software.
AlisdairSHover 11 years ago
If you don&#x27;t work &gt;43 hours&#x2F;week, you aren&#x27;t productive. At least according to one boss I&#x27;ve had. :|
scotty79over 11 years ago
I think that the the one thing that enables science is that even though you cannot measure all you want, you can still measure some things and that measurements are useful, just not directly.
estover 11 years ago
Because this<p><a href="http://en.wikipedia.org/wiki/Coastline_paradox" rel="nofollow">http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Coastline_paradox</a><p>productivity of working on a software is like measuring fractals.
platzover 11 years ago
Perhaps trying to measure true productivity reduces to the halting problem
dredmorbiusover 11 years ago
Software productivity management (as an end in itself) fails to account for another fundamental axiom: that software itself isn&#x27;t the end-product, but itself is a tool or defines a process by which some task is accomplished.<p>Count lines of code, function points, bugfixes, commits, or any other metric, and you&#x27;re capturing a <i>part</i> of the process, but you&#x27;re also creating a strong incentive to game the metric (a well-known characteristic of assessment systems), and you&#x27;re still missing the key point.<p>Jacob Nielsen slashed through the Gordon&#x27;s knot of usability testing a couple of decades back by focusing on a single, simple metric: does a change in design help users accomplish a task faster, and&#x2F;or more accurately? You now have a metric which can be used <i>independently</i> of the usability domain (it can apply to mall signage or kitchen appliances as readily as desktop software, Web pages, or a tablet app).<p>Ultimately, software does <i>something</i>. It might sell stuff (measure sales), it might provide entertainment, though in most cases that boils down to selling stuff. It might help design something, or model a problem, or create art. In many cases you can still reduce this to &quot;sell something&quot;, in which case, if you&#x27;re a business, or part of one, you&#x27;ve probably got a metric you can use.<p>For systems which don&#x27;t result in a sales transaction directly or indirectly, &quot;usability&quot; probably approaches the metric you want: does a change accomplish a task faster and&#x2F;or with more accuracy? Does it achieve an objectively better or preferable (double-blind tested) result?<p>The problem is that there are relatively few changes which can be tested conclusively or independently. And there are what Dennis Meadows calls &quot;easy&quot; and &quot;hard&quot; problems.<p>Easy problems offer choices in which a change is monotonic across time. Given alternatives A and B, if choice A is better than B at time t, it will be better at time t+n, for any n. You can rapidly determine which of the two alternatives you should choose.<p>Hard problems provide options which <i>aren&#x27;t</i> monotonic. A may give us the best long-term results, but if it compares unfavorably initially, this isn&#x27;t apparent. In a hard problem, A compares unfavorably at some time t, but is <i>better</i> than B at some time t+n, and continues to be better for all larger values of t.<p>Most new business ventures are hard problems: you&#x27;re going to be worse off for some period of time before the venture takes off ... assuming it does. Similarly, the choice over whether or not to go to college (and incur both debt and foregone income), to to learn a skill, to exercise and eat healthy.<p>It&#x27;s a bit of a marshmallow experiment.<p>And of course, there&#x27;s a risk element which should also be factored in: in hard problems, A <i>might</i> be the better choice only <i>some</i> of the time.<p>All of which does a real number in trying to assess productivity and employee ranking.<p>Time to re-read <i>Zen and the Art of Motorcycle Maintenance</i>.
swombatover 11 years ago
[2003]
a3voicesover 11 years ago
Also if you procrastinate a lot, you might end up learning something useful and get new insights that will make you more productive in the long run.
评论 #6299431 未加载