SI
SI
discoversearch

We've detected that you're using an ad content blocking browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of Silicon Investor.  We ask that you disable ad blocking while on Silicon Investor in the best interests of our community.  If you are not using an ad blocker but are still receiving this message, make sure your browser's tracking protection is set to the 'standard' level.
Technology Stocks : MSFT Internet Explorer vs. NSCP Navigator -- Ignore unavailable to you. Want to Upgrade?


To: Eugene Goodman who wrote (21497)11/16/1998 8:01:00 PM
From: Charles Hughes  Read Replies (1) | Respond to of 24154
 
>>> "A...prodictive programmer can write 30000 lines of
code per year... " This is about 15 lines per hour. If
a programmer makes $100000 per year [probably low when
all costs are included ] this comes to $3/line- or more
realistically $ 3 to 5/line.
<<<

Sadly, this is exorbitantly over-optimistic, in most situations. It is also vague, since a 'line' of C++ may do 100 times what a line of assembler does. On top of that, in the most productive environments for the given desired functionality, e.g. in some cases 4GL database environments, the total amount of code may be (hopefully) very small and most hours allocated may be spent in server setup, ER design, user interviewing, or other tasks.

It is true that without testing, design, analysis, management or extensive debugging time, without version control or any other team members to worry about, a single programmer in an ideal situation on a hot streak, reusing code already tested and attacking a well-understood problem domain might maintain a rate like that for a while.

I once used MSFT's own figures for number of products, number of programmers on staff, and number of lines of code total to come up with something like 2 lines of code a day. (They ran a full page ad with the data (!)) That depended somewhat on who you called an programmer (I think they included line managers and so forth.) That was circa 1992. That's a bad result, but not an unusual result. (MSFT might differ with me on the interpretation, but then I don't have their internal numbers, if any.)

One problem is that productivity takes a huge negative hit as staff sizes grow, amply documented in 'The Mythical Man-Month' thirty years ago.

Another problem is that as development environments get easier to use, they do so mostly by being less general (e.g. not everything is a database problem), or the improvements in general software engineering turn out to be incremental. It is estimated that for a given complex project it probably is possible to do it in about half or a third the time at best it would have taken thirty years ago, and that is mostly due to hardware improvements (hi-res terminals, speed), not programming environments. And that is only counting actual programming and compiling time.

Then you need to add in maintenance time.

Anyway, I have had days when I wrote a couple hundred lines of code and they just worked right away. That seldom happens. Several times as often, I spend hours to days chasing down some elusive failure, usually when there are several failures at work disguising each other, and I am trying to change one variable at a time.

Less than half of all software projects are successful, too. You could say the programmer productivity on those is zero, though the failure is often at the business or product idea level.

If you want better info than this, I suggest one of the software quality associations. Software metrics is a very tricky field, one that has always had an appeal to managers because of the possibility of quantizing the tracking of programmer productivity. But as quality managers know, the programmer pushing out a huge number of lines of code per day (and night) is quite likely to be the programmer whose code is thrown out entirely in the end, who has the worst problems interacting with his/her team, who most likely abandoned the design goals that were hard to code for design goals that were easier to code, without consultation with customers or designers, most likely to require the hiring of one or more maintenance programmers to be employed until forever to keep his/her code working, most likely to become a permanent fixture in a self-created sinecure because nobody else can read the code they wrote, most likely to trash the project and/or whole company. Not always their own fault either. Usually a naive manager rewards this behaviour, and the naive programmer is too eager to please.

Plus environments and 'meaning per code line' (my phrase) vary wildly. On top of that, the best programmers sometimes generate the least lines of code for a particular function point or definition, and reuse the most code, at the expense of the appearance of less productivity to the naive (false appearance).

Also under the heading of 'your results may vary', IBM once tested a bunch of their programmers for lines of code per day in COBOL. They found that matched pairs of programmers, of the same age, education, background, years of experience, employee review ratings, and so on could vary in particular test assignments from each other by as much as 20 times. Sometimes this was consistent, sometimes it just lasted for one test. So go figure. If IBM has one thing, it's consistent hiring practices. Then again, lots of people cheat: at college, on resumes, during programming and programming tests.

I suggest looking at some of the old research on function points, software metrics, and so forth before you jump to any conclusions about the validity of calculating programmer productivity that way. This is discussed ad nauseum in general SE periodicals like IEEE Computer and ACM Communications, and in periodicals for specialist organizations and ACM SIGs. You could start with the ACM and IEEE web sites, maybe.

Hope this wasn't more than you wanted.

Chaz



To: Eugene Goodman who wrote (21497)11/17/1998 12:21:00 AM
From: Pink Minion  Read Replies (2) | Respond to of 24154
 
I invite you to correct any or all of the above numbers.

Just to iterate. Counting lines of code is the worst way to count productivity or worse yet, judging complexity of a system.

The Dilbert strip has had some great threads on this.
dilbert.com
Yet, about every four years I get a pointy hair who wants me to count how lines of code is in a system. Marketing departments think it is a sign of complexity of a system. It is usually a design out of control.

If you want to pay me by lines of code, I can be very productive. Heck, why try to reuse code? Just clone it. Make it harder to maintain.

The cost of software is maintenance not development. Support, making changes, fixing bugs all rise with more lines of code. Thus, a good programmer should be judged by how little lines of code they have. How easy it is to maintain and make changes to? This is what object oriented programming tries to address. Making a system data driven so only data has to be changed instead of code can make a big difference in lines of code and cost of changes.

I always rewrite my systems twice. The first time is really just to understand the problem. The second time it is to consider support and future changes. To find objects that can be reused over and over. The number of lines of code goes down considerable after the second version.

Look at the Linux operating system. Something like 3? million lines of code. Yet, every line has probably been rewritten 10 times in the past 8 years.

Mr. B



To: Eugene Goodman who wrote (21497)11/17/1998 9:05:00 AM
From: rudedog  Respond to of 24154
 
Both Beavis and Chaz have written good comments on the use of 'lines of code' with some good advice thrown in. I also re-write code completely after a first prototype, since code patterns and data groupings are usually a lot more obvious after the initial design is pulled together, and usually the final version is a tenth or less the size of the original prototype, and much easier to maintain.

There are several factual errors in your original post which I would like to comment on. I don't have exact insider knowledge on the NT5 effort, but I do have a pretty good idea of the overall size of the team and the rough composition. There are about 1700 people working on NT5 development in total, and only about 500 programmers. The ratio of programmers to testers is 1:2, and there are more than 100 people working in development management roles, mostly program management coordinating related projects.

Compare this to the original NT development team, which originally had about 30 developers and had less than 100 people actually writing code at the end of the effort. Bigger is certainly not better in the coding business.