POV-Ray : Newsgroups : povray.off-topic : Quote of the day? Server Time
6 Sep 2024 07:19:04 EDT (-0400)
  Quote of the day? (Message 4 to 13 of 13)  
<<< Previous 3 Messages Goto Initial 10 Messages
From: Invisible
Subject: Re: Quote of the day?
Date: 4 Mar 2009 07:24:16
Message: <49ae72f0$1@news.povray.org>
John VanSickle wrote:

> The real problem with putting software on a schedule is that during 
> development a program is being written for the first time, and for that 
> reason nobody really *knows* how long it will take.  Sure, the boss can 
> guess how long it will take, based on experience with similar projects, 
> but at the very best he/she is making an educated guess.

Indeed.

Mind you, arguably the same principle applies any time anybody designs a 
new product. How long does it take to design and build a house? Well, 
you can take an educated guess, but...


Post a reply to this message

From: scott
Subject: Re: Quote of the day?
Date: 4 Mar 2009 08:37:44
Message: <49ae8428$1@news.povray.org>
> Mind you, arguably the same principle applies any time anybody designs a 
> new product. How long does it take to design and build a house? Well, you 
> can take an educated guess, but...

Usually you can break the task down into smaller ones and then each of them 
down again, until some sensible limit.  You (as a team or company or group 
of companies) should then be able to quite accurately estimate how long each 
of those tasks is going to take, assuming you have done anything similar 
before.  You then get all those nice "critical path" diagrams using MS 
Project that show you where the bottlenecks are and what's taking up all the 
time.

For example, suppose you know that you need a GUI developed for your latest 
piece of software, presumably you employ someone with experience of this, 
and they can break it down into different parts, some of which might rely on 
other parts of the software being completed first, and then at least have a 
reasonable idea of how long each part is going to take.  Sure they might hit 
problems along the way, everyone does not just in software, but this happens 
less often to a skilled and experienced team.

I remember reading somewhere that people are pretty accurate at estimating 
how long it will take them to do things, it's just they consistently over- 
or underestimate the time.  So as long as you (as a project manager) have 
some record of the peron's previous work, you should be able to get a good 
idea how long it will take just by asking them and factoring out their 
internal time scale multiplier :-)


Post a reply to this message

From: Darren New
Subject: Re: Quote of the day?
Date: 4 Mar 2009 11:54:57
Message: <49aeb261$1@news.povray.org>
scott wrote:
> Usually you can break the task down into smaller ones and then each of 
> them down again, until some sensible limit.  You (as a team or company 
> or group of companies) should then be able to quite accurately estimate 
> how long each of those tasks is going to take, assuming you have done 
> anything similar before.  You then get all those nice "critical path" 
> diagrams using MS Project that show you where the bottlenecks are and 
> what's taking up all the time.

While true, it's also true that most times (IME at least) the boss doesn't 
want to wait that long. In particular, the boss doesn't want to spend the 
time it takes to describe out all the details to the point where you could 
give an accurate estimate before he has an estimate he can rely on.

If you look at (for example) function point analysis, it requires that you 
know every field of every table in the database, every column of every 
report, every input to every entry form, what the equation is to calculate 
any derived information, and a few other things like that. By the time 
you've figured out an entire business system to this degree of precision, 
you might as well just code the damn thing.

Which is not to say my bosses aren't foolish, but clearly "design it all and 
we'll tell you" doesn't work in most situations. Especially when the 
requirements change faster than you can code them.

> I remember reading somewhere that people are pretty accurate at 
> estimating how long it will take them to do things, it's just they 
> consistently over- or underestimate the time.  So as long as you (as a 
> project manager) have some record of the peron's previous work, you 
> should be able to get a good idea how long it will take just by asking 
> them and factoring out their internal time scale multiplier :-)

 From experience, this is true. But you have to track things pretty well. 
Joel Spolsky has (http://www.joelonsoftware.com/) has software that tracks 
it and then does a statistical analysis to give you confidence intervals.

-- 
   Darren New, San Diego CA, USA (PST)
   My fortune cookie said, "You will soon be
   unable to read this, even at arm's length."


Post a reply to this message

From: Nicolas Alvarez
Subject: Re: Quote of the day?
Date: 4 Mar 2009 14:19:34
Message: <49aed446@news.povray.org>
Invisible wrote:
> Mind you, arguably the same principle applies any time anybody designs a
> new product. How long does it take to design and build a house? Well,
> you can take an educated guess, but...

A house is not a new product.

"Programming is not like building a house over and over again. If you build
your first house, you have no idea how long it will take to build a wall,
make the roof or creating one square meter of floor. Once you did all this,
you know how long it took and when you build your second house, you know
that it will take about as long as it did the first time, if not faster,
since you are getting better at a task the more often you are doing it.

 Every piece of code you write is a *new* piece of code, you are never
repeating the same task again. Why would you repeat the same task? If you
ever need the same code again, you copy&paste it; that will take you about
5 seconds. If you ever need the same application again, you just copy the
one you wrote last time.

 A software developer faces the problem that he needs to write new code
every day, as there is no point in writing *old* code again. So every time
the task is a new task for you. It's like you are building a house today, a
car tomorrow, and creating a lovely garden the day after tomorrow; and you
are always doing it for the first time. How can you estimate in advance how
long you will need for it?"


Post a reply to this message

From: Orchid XP v8
Subject: Re: Quote of the day?
Date: 4 Mar 2009 14:22:26
Message: <49aed4f2@news.povray.org>
Nicolas Alvarez wrote:
> Invisible wrote:
>> Mind you, arguably the same principle applies any time anybody designs a
>> new product. How long does it take to design and build a house? Well,
>> you can take an educated guess, but...
> 
> A house is not a new product.

I'd debate that.

Is every house *exactly* the same? Probably not.

Is every item of software *completely* different? Probably not.

If you're a company that specialises in writing stock control systems, 
you probably know a thing or two about how to make a stock control 
system work. But, of course, every client is different, so you can't be 
completely sure how hard or easy it will be this time...

>  Every piece of code you write is a *new* piece of code, you are never
> repeating the same task again.

Sure. I won't argue with that.

-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*


Post a reply to this message

From: Darren New
Subject: Re: Quote of the day?
Date: 4 Mar 2009 14:31:35
Message: <49aed717$1@news.povray.org>
Orchid XP v8 wrote:
> If you're a company that specialises in writing stock control systems, 
> you probably know a thing or two about how to make a stock control 
> system work. But, of course, every client is different, so you can't be 
> completely sure how hard or easy it will be this time...

And to the extent it's identical to what you did last time (or 
parameterizable), you can reuse the old code. All the work you do on the 
second stock system is new.

-- 
   Darren New, San Diego CA, USA (PST)
   My fortune cookie said, "You will soon be
   unable to read this, even at arm's length."


Post a reply to this message

From: Mike Raiford
Subject: Re: Quote of the day?
Date: 4 Mar 2009 15:37:30
Message: <49aee68a$1@news.povray.org>
Orchid XP v8 wrote:

> 
> Is every house *exactly* the same? Probably not.
> 

Umm, actually ... a builder can build multiple copies of the same 
floorplan, with only minor changes. So, the builder may have 5 different 
models in an neighborhood of 1500 houses ...So, it pretty much is the 
same for the majority of houses.

Once you've framed a wall, you pretty much know what it will take to 
frame the next wall. The framers do not have to sit out there and draw 
in the sand to figure out *how* to frame a wall. They just do it. Not 
only that, but in many cases the wall components are dropped off at the 
site with markings designating where that piece goes, and where all of 
the other pieces attach. Not at all like a software program, where 
you're figuring out how to do something.

Even better when the builder is using a prefab method, where wall 
panels, trusses, and other components are built in a factory, then sent 
to the site.

And in the factory? The pieces get cut by big automated saws, dumped 
into a bin, and carted to an assembly jig where a laser projects the 
outline of the pieces, the pieces have markings on them to designate 
where to go, and (at least in the case of complex trusses) a set of 
automated pucks have lined themselves up on the outside, so all they do 
is pop the chords down, then drop in the webbing according to the 
diagram they see on their screen or projected on the table-top.

> 
> If you're a company that specialises in writing stock control systems, 
> you probably know a thing or two about how to make a stock control 
> system work. But, of course, every client is different, so you can't be 
> completely sure how hard or easy it will be this time...
> 

Yes, but if you're wanting to develop a new stock control, you'll need 
to figure out how to draw and create interaction for that particular 
control.

>>  Every piece of code you write is a *new* piece of code, you are never
>> repeating the same task again.
> 
> Sure. I won't argue with that.
> 


-- 
~Mike


Post a reply to this message

From: scott
Subject: Re: Quote of the day?
Date: 5 Mar 2009 02:40:31
Message: <49af81ef$1@news.povray.org>
> While true, it's also true that most times (IME at least) the boss doesn't 
> want to wait that long. In particular, the boss doesn't want to spend the 
> time it takes to describe out all the details to the point where you could 
> give an accurate estimate before he has an estimate he can rely on.

Well of course if you think your project is only going to take 1-2 months to 
complete you are not going to spend 3 weeks planning it :-)  I don't know 
what a good ratio is, but I would imagine someone has researched this and 
written about it somewhere.  It will also depend on how similar your 
projects are to previous ones, obviously if they are pretty similar you 
won't have to spend much time to get a very accurate estimate.

> If you look at (for example) function point analysis, it requires that you 
> know every field of every table in the database, every column of every 
> report, every input to every entry form, what the equation is to calculate 
> any derived information, and a few other things like that. By the time 
> you've figured out an entire business system to this degree of precision, 
> you might as well just code the damn thing.

Well yes, that seems a little over the top for simply getting an estimate of 
the time needed to design and implement the thing.  It's like me saying that 
I should document every single detail needed on every mechanical part and 
how long it will take me to design it, of course it's quicker then to just 
actually do the work!

> Which is not to say my bosses aren't foolish, but clearly "design it all 
> and we'll tell you" doesn't work in most situations. Especially when the 
> requirements change faster than you can code them.

In our business the requirements change way quicker than we can implement 
them, it's always a case of going back to the customer and saying "ok this 
change will delay the schedule by X weeks and cost you Y".  Then there is 
usually some negotiation and we come to an agreement of what to do.


Post a reply to this message

From: scott
Subject: Re: Quote of the day?
Date: 5 Mar 2009 02:52:26
Message: <49af84ba@news.povray.org>
> "Programming is not like building a house over and over again. If you 
> build
> your first house, you have no idea how long it will take to build a wall,
> make the roof or creating one square meter of floor.

I would say the analogy is being told to write a game in C++ and DirectX. 
Your first time, when you have no experience of either C++ or DirectX, is 
going to be a nightmare.  You will have no idea how long it will take, what 
is possible, what isn't possible, there will be lots of problems etc.

> Once you did all this,
> you know how long it took and when you build your second house, you know
> that it will take about as long as it did the first time, if not faster,
> since you are getting better at a task the more often you are doing it.

Yup, once you know how to code in C++ and use DirectX it becomes vastly 
quicker and more predictable to write a game, even if it's not an identical 
copy of your first attempt.

> Every piece of code you write is a *new* piece of code, you are never
> repeating the same task again. Why would you repeat the same task?

Because it needs to be slightly different?  Like an app that needs a GUI 
front end, not going to be the same as anything you've done before, but you 
know how to make one because you've done it before 100 times.  Ditto for a 
physics engine in a game, you know how to do it, but you might need to start 
again from scratch or modify your existing code because of some special 
requirement (eg it was a flight sim before but now you need car sim 
physics).  Or you need to read/write to a database, yes you know how to use 
mySQL already because you've done it before loads, but you still need to 
write some code again that you are familar with, it's not really new to you.


Post a reply to this message

From: Darren New
Subject: Re: Quote of the day?
Date: 5 Mar 2009 11:28:51
Message: <49affdc3@news.povray.org>
scott wrote:
> Well of course if you think your project is only going to take 1-2 
> months to complete you are not going to spend 3 weeks planning it :-)

It's not that. It's the boss asking "will this take 3 months or 4 months" 
and you say "It'll take me 3 hours to figure that out" and the answer is 
"that's too long..."  IME, he's usually on the phone with the customer when 
he asks, assuming he even asks before making a promise. :-)

> Well yes, that seems a little over the top for simply getting an 
> estimate of the time needed to design and implement the thing.

Not when you're charging the client what you hope is $250/hour, and you 
don't want to be off by a couple dozen hours in your estimate, thereby 
losing several thousand dollars on the job.

It's hard to get an *accurate* estimate before you know what you want. It's 
the whole "how much does the house cost to build?"   "Show me the 
blueprints."  "We don't want to buy blueprints before we know if we can 
afford the house."

> In our business the requirements change way quicker than we can 
> implement them, it's always a case of going back to the customer and 
> saying "ok this change will delay the schedule by X weeks and cost you 
> Y".  Then there is usually some negotiation and we come to an agreement 
> of what to do.

And during the negotiation, are you re-doing the estimates? While sitting in 
the meeting with the client?

-- 
   Darren New, San Diego CA, USA (PST)
   My fortune cookie said, "You will soon be
   unable to read this, even at arm's length."


Post a reply to this message

<<< Previous 3 Messages Goto Initial 10 Messages

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.