Ask any student who has had some programming experience the following
question: You are given a problem for which you have to build a software
system that most students feel will be approximately 10,000 lines of (say C or
Java) code. If you are working full time on it, how long will it take you to build
this system?
The answer of students is generally 1 to 3 months. And, given the programming
expertise of the students, there is a good chance that they will be able
to build the software and demo it to the professor within 2 months. With 2
months as the completion time, the productivity of the student will be 5000
lines of code (LOC) per person-month.
Now let us take an alternative scenario—we act as clients and pose the same
problem to a company that is in the business of developing software for clients.
Though there is no standard productivity figure and it varies a lot, it is fair to
say a productivity figure of 1000 LOC per person-month is quite respectable
(though it can be as low as 100 LOC per person-month for embedded systems).
With this productivity, a team of professionals in a software organization will
take 10 person-months to build this software system.
Why this difference in productivity in the two scenarios? Why is it that the
same students who can produce software at a productivity of a few thousand
LOC per month while in college end up producing only about a thousand LOC
per month when working in a company?
The answer, of course, is that two different things are being built in the two
scenarios. In the first, a student system is being built which is primarily meant
for demonstration purposes, and is not expected to be used later. Because it is
not to be used, nothing of significance depends on the software and the presence
of bugs and lack of quality is not a major concern. Neither are the other quality
issues like usability, maintainability, portability etc.
On the other hand, an industrial-strength software system is built to solve
some problem of a client and is used by the client’s organization for operating
some part of business, and a malfunction of such a system can have huge impact
in terms of financial or business loss, inconvenience to users, or loss of property
and life. Consequently, the software system needs to be of high quality with
respect to properties like reliability, usability, portability, etc.
P. Jalote, A Concise Introduction to Software Engineering
Programming Language Learning Resource Bubbles
Edu : Programming | Location : Calgary
Publisher : Shaw Website Design Group | Genre : Unix | Date : 2013-12-12
URL : http://shawwebsitedesign.jimdo.com/resource-library/programming
Helping you learn about Computer Programming using Resource Bubbles
Tags : programming,computer science,coding,computer programming,computer lectures,Learning Bubble,Learning Resource,computer science course,learning resource bubbles,UNIX resource bubbles
Written by thegoldenpipewrench