proceedure for writing a computer program ?
- Hi All:
I have a question ... and I can never seem to get an answer for it
bear with me for a moment....
the proceedure for framing a wall is ....
pour the slab foundation
bottom and top plate the foundation
mark the stud locations, doors and windows
cut the cripples and headers
lay the plates on the slab
distrubute the studs on the layout marks ect ect ...
then nail the studs,cripples and headers to the plate ...
wall ahhh ... a wall
My Question :
is there a systemmatic way to start a computer programing project
I cannot seem to find a" how do you design a programing
project" book or tutorial ... anyone know of such an animal
every perl tutorial I have read starts out with .. Hello World
and the next thing you know we are doing scalar or hash arrays
with curly brackets and such ... I want to know how to decide
what I want to do first and flow chart it and then figure out
whether to use a stud or a cripple ...
[Non-text portions of this message have been removed]
- *This message was transferred with a trial version of CommuniGate(tm) Pro*
Alle 01.54 Tuesday 28/11/2000 -0800, Bill Scott ha mandato a Marco questo
>My Question :My Answers:
>is there a systemmatic way to start a computer programing project
1) mail askbill@... ;-)
- look for a user needing a program
- be sure he can pay
- explain him the job is more expensive he thought
- ask him which input and which output he need
- guess his common mistakes (capital letters, dates and so on)
- ask him some money *before* to start
- write the program (the easier thing)
- check a beta version with the user
- ask other money
- debug the program
- write the manual
- cash your bill
- tell the guy to subscribe an assistance contract in a way you can take
directly money from the guy's bank
- upgrade the program every 2 months, even with minor upgrades, so the user
is always happy
At the bottom there is a long useful price list, found on Usenet.
Calling me with a question $10
Calling me with a stupid question $20
Calling me with a stupid question you can't quite articulate $30
Implying I'm incompetent because I can't interpret your inarticulate
problem description $1000+punitive damages
Questions received via phone without first trying help desk $10.00
Questions where answer is in The Manual $10.00
Questions during Quake 3 Arena session $20.00
Calling me back with the same problem *after* I fix it once $100
Insisting that you're not breaking the software, the problem is on my end
Asking me to walk over to your building to fix the problem $5/step
Asking me to drive to another town to fix your problem $50/mile+gas
If you interrupt me while I was reading news $25/hr
If you interrupt me while I was trying to actually fix somebody else's
If you try to hang around and get me to fix it now $50/hr
If you expect me to tell you how I fixed it $60/hr
If you've come to ask me why something isn't working that I'm currently
working on $70/hr
If you're asking me to fix something I fixed for you yesterday $75/hr
If you're asking me to fix something I told you I fixed yesterday, but
never did fix $85/hr
If you're asking me to fix a quick patch that I made that didn't work $95/hr
If you're bugging me while there's another admin in the room who could have
done it for you $150/hr
Making me trek to your office to fix your problem then leaving immediately
after hanging up the phone $1500.00
Calling up with a problem which "everybody" in the office is having and
which is "stopping all work." Not being there when I rush over to look at
it and nobody else in the office knows anything about it. $1700.00
Explaining a problem for 1/2 hour over the phone BEFORE mentioning it's
your personal machine at home $500.00
Self-diagnosing your problem and informing me what to do $150.00
Having me bail you out when you perform your own repairs I told you not to
Not telling all of your co-workers about it $850.00
Figuring out you mean floppy drive when you say hard drive $50.00
BEFORE I order your replacement hard drive $250.00
Fixing your "broken" mouse with a mousepad $25.00
Fixing your "broken" optical mouse by rotating the mousepad 90 degrees $35.00
Fixing a "broken" mouse by cleaning the rollers $50.00
Fixing your "broken" printer with an ink/toner cartridge $35.00
Fixing your "broken" ANYTHING with the power button $250.00
Fixing the "crashed" system by turning the external disk back on $200.00
Fixing the "hung" system by plugging the ethernet transceiver back in $375.00
Fixing the crashed nameserver by plugging back in the SCSI cord someone
accidentally yanked out on Friday afternoon when the 'real' sysadmin has
just left for a two week vacation $400
Visiting your old university and fixing the broken PC by plugging the
monitor lead back in $50
Explaining that you can't log in to some server because you don't have an
account there $10
Explaining that you don't have an account on the machine you used to have
an account on because you used it to try to break into the above server $500
Forgetting your password after it was tattooed on your index finger $25
Changing memory/disk partitions without informing me first $50
Installing programs without informing me /getting permission first $100
Technical support for the above programs $150/hr
Spilling coke on keyboard $25 plus cost of keyboard
Spilling coke on monitor $50 plus cost of monitor
Spilling coke on CPU $200 plus cost of motherboard swap plus hourly rate of
$150 per hour spent reinstalling the system
Leaving files on desktop $5 per file
Cleaning the mouse with spit and sleeve $50 plus cost of sleeve
Bringing in your own copy of the original Norton Utilities v1.0 to fix a
brand new machine $200
Chewing on the end of the graphic tablet stylus $25
Putting feet up next to workstation after ten mile jog through NYC streets $50
Spending 30 minutes trying to figure out what your problem is, and another
5 explaining how to verify and fix it, only to hear you say... "So that's
what the little box that popped up on my screen was telling me; to do!" $40
Listening to your network troubles, suggesting that you check to see if you
are plugged into the network jack, hearing yes, trying five other things,
asking you to identify your plug type, listening to you drag furniture, and
hearing a sheepish, "Oops. Never mind." $35 (including discount for polite
Dealing with tech support requests for obviously pirated software $25
Dealing with "How can I get another copy of [obviously pirated software]?
Mine just died." requests $45
Having to use the "We're really not the best people to talk to about that;
why don't you try calling the number on the box in which you bought it?"
Actually needing to explain copyright law to you after you failed to get
the hint in the previous response $95 (includes instructions for getting
freeware replacements from the public file server)
Having to point out anything that's on the wall in a typeface larger than
18 points $15
If I wrote the sign $45
If it's in a 144 point font and taped to the side of the monitor facing
the door $75
Reporting slow connection by passenger pigeon packets to MPEG archive in
Outer Slobavia as a Mosaic/Netscape/Gopher/FTP client problem $25.00
Reporting it more than once $50.00
Reporting it more than once and implying slothfulness on tech support's
inability to solve problem $200.00
Beeping me when I'm out with the significant other $50
Beeping me when I'm out of town and I took pains to insure that help files
were left all over and that diagnostics had been run on all machines before
I left $100
Beeping me more than once to tell me that the printer's offline and the fix
is to press the On Line button $200
Beeping me more than once while I'm asleep $50 per beep
Beeping me and not identifying yourself within the first 5 seconds $25
Beeping me and then changing your story / denying you placed the call /
hoped I would forget who caused the problem $500
Dealing with user body odor $75.00/hour
Dealing with user not familiar with the primary language spoken at site
Dealing with user who is (self-proclaimed) smarter than you are, but still
calls every other day for help $100.00/hour
Dealing with computer hobbyists $125.00/hour
Questioning the other prices ........... $50
- Hi Marco ... the big kidder ... *||:^)
Glad to see you don't hold a grudge ... ha ha ...
but the most important thing is to cash the cheque ...
At 01:54 AM 11/28/00, you wrote:
>Hi All:Some thoughts regarding your query.
>I have a question ... and I can never seem to get an answer for it
>bear with me for a moment....
>the proceedure for framing a wall is ....
>pour the slab foundation
>bottom and top plate the foundation
>mark the stud locations, doors and windows
>cut the cripples and headers
>lay the plates on the slab
>distrubute the studs on the layout marks ect ect ...
>then nail the studs,cripples and headers to the plate ...
>wall ahhh ... a wall
>My Question :
>is there a systemmatic way to start a computer programing project
>I cannot seem to find a" how do you design a programing
>project" book or tutorial ... anyone know of such an animal
>every perl tutorial I have read starts out with .. Hello World
>and the next thing you know we are doing scalar or hash arrays
>with curly brackets and such ... I want to know how to decide
>what I want to do first and flow chart it and then figure out
>whether to use a stud or a cripple ...
Bear with me for a moment too <G>
Your wall building example is typical of the way most people learn to write
programs (and maybe even clips).
If I may also use your example then it wouldn't surprise me if the finished
wall was 12 feet high, 133 feet long, with 4 x 12 studs, 17 windows and 5
doors (or some other such foolishness).
In other words, what might be the most important part seems to be missing here.
That is the results of the Planning and Engineering phase.
Examples of the questions that one needs answered to build the correct
wall, in the correct manner, the first time, might be (among many others):
What is the purpose of this wall (why do we even need to build it?)
Is it for a house, a barn, a garage, a shed?
Is it a single story wall, or a double story wall
( for a 10 story barn perhaps?? <G>)
Is it a bearing wall or a partition?
Is it a fire wall
Is it to be insulated
Good Programming requires good Planning and Engineering too.
Just as there needs to be tools (drawings and bills of materials) to
communicate the wall specifications to the person who is going to build it,
so too should there be tools to communicate the Program Specifications
(General Description, annotated flow chart, list of defined Variables,
annotated coding, help files, perhaps a tutorial) to the person doing the
coding and also to the seller/buyer/user of the program.
Now it is true that a person can write a program to perform a desired task
without creating these communication tools, if.....
The person codes it themselves, uses it themselves, and never needs to go
back a year later and try to remember what it was they did.
Perhaps one should think of a "PROGRAM" as simply a human readable list of
specific tasks to be performed by the computer, to a specific list of
things, using a specific list of temporary names/values in the process plus
some human UNreadable text added on at the bottom (the code).
A major mistake is to get so involved with the coding & programming
language that we forget to actually WRITE the program, THEN code it.
This means that we try to WRITE the program WHILE we code it and that is
just like trying to dig the footer ahead of the guy pouring the concrete.
A well written program can be coded in several different languages by
several different people, and ran on different platforms on different types
of computers and still come up with the correct value for the sum of 1 + 3.
(Or perhaps correctly print "Hello World" to the screen)
I believe that a well written program should include (but by no means be
limited to) all necessary tools (regardless of format) to accomplish the
List and define for the person who is going to code the program (even if it
is yourself) as well as for the person who is going to maintain and perhaps
later revise the program :
The specific reason(s) for the existence of the program
What specific task(s) it is supposed to perform
How specifically it is to do it.
What specific Constants are to be used and for what
What specific Variables are to be used and for what
What specific Parameters are to be used and for what
What additional files are needed
(The person(s) selling /buying/using the program also need to know some of
Generally all of these (and more) are the ";COMMENTS" at the very beginning
and throughout the source code for the program.
Usually there is other information included such as:
Disclaimers and other legal info
List of participating programmers
Now we all know that a Stud is just another name for a long cripple (don't we?)
In programming, we can often use either a long routine or a short routine
to accomplish the same thing.
We can also make a "Subroutine" or maybe a "macro" (user defined command)
which will work as both a stud and a cripple (adjustable height jack)
depending on a given set of circumstances and not have to have a routine
Knowing that there is a short/quick routine/command instead of the long
version or when it is best to create a macro, are tricks of the trade
learned only by hitting your thumb/forehead with the hammer/mouse enough
times to know that it hurts.
They come with experience.
The one thing unique to computers that is different from all other trades
(save perhaps medicine) is that it IS OKAY to ask for help and to admit
FREELY that you don't know what to do (or what you are doing).
Since we have all been taught from birth to never show our ignorance, this
goes against our natural grain and requires some definite attitude adjustment.
There are just too many applications/languages/platforms/computers for any
one person to know them all so........
If there is something about computers/programming that you don't know, you
look in your code book (e-mail address book entries under "Guru") and see
who does and ask them.
I don't know if I answered your specific question in a specified manner or
not but hopefully I have provided you with some specific food for thought.
Maybe a more specific answer would be:
Step 1. Take a pencil and paper (NoteTab Pro and NoName01.txt) and start
PLANNING/ENGINEERING/WRITING your program.
Step 2. CODE Your program
Step 3. DEBUG your program
Step 4. BETA TEST your program
Step 5. REVISE your program
Step 6. USE/SHARE/SELL/SUPPORT your program
Hope it helps.
- *This message was transferred with a trial version of CommuniGate(tm) Pro*
Alle 23.01 Thursday 30/11/2000 -0800, Jim Hall ha mandato a Marco questo
>If I may also use your example then it wouldn't surprise me if the finishedIt's true!
>wall was 12 feet high, 133 feet long, with 4 x 12 studs, 17 windows and 5
>doors (or some other such foolishness).
We architects call it "spontaneous architecture"... it becomes "typical"
after a 200 years on so, and you can't modify it, in the same way you can't
modify a spaghetti-coded program :-)
- A major mistake is to get so involved with the coding &
language that we forget to actually WRITE the program, THEN code
Bill *||:>) wrote:
That is exactly what I am looking for how do you write a program
code it or even decide what language will be the best to use ...
*||:^) A wee bit of
help.tips or ideas on how to start ... planning ... a project ...
you know.a jump start ... with the obvious ..... so the light
goes on .... a hint ... so more people get the joke ... *||:^)
I work with animals allot border collies ..... when some college
guy comes out to learn to do some training ... what is obvious to
me is not always so obvious to him ... you might tell him five
times and he just does not get it ... but if I take the time to
give him a hint they will usually suprise you .. what you thought
was dumb was just ignorant of animals ..... ignorance is curable
in most cases ... *||:^) I had a male nurse that came to me about
5 years ago for help he just won the Nursery Nationals ... but
when I first met him he was comical ... he couldn't even spell
border collie ..and I thought to myself what a dumb head ... but
he stuck it out and ... there you have it ......
Bill (off topic) Scott.