lfoard@wpi.wpi.edu (Lawrence C Foard) (02/19/89)
I would like to present the opposite side of the argument about hackers. I generally program in the hacker style. i.e. No flowcharts or writting code out on paper. Use comments only where needed. Allow programs to evolve. Atleast 50% of the code I have written has been for use on various research projects. I believe allowing code to evolve has some important advantages over working from specs. For example a typical project: Person needs a program to do something. Quickly write code to do it. Show it to them and ask what they would like added to it, suggest things that might be useful and could be easily done. Repeat until satisfied. Clean up and optimize the final code. Of course the complaint about this is that you have to make changes in the code. But it has to be considered that you saved huge amounts of time by not writting reams of paper work, and have also given the person what they wanted instead of what they initially asked for. This is fairly important since many people don't know what the computer can do for them. For example an extra ten minutes of coding can add a feature that will save hundreds of hours of time. I have seen figures from the software industry and they are abismal, only 10% of programs are ever successfully finished. Most hackers I know have from 75% to 90% success. This is a huge amount of money considering that a hacker can also produce this code with out the cost of 10 paper shufflers. Another fact that is often over looked is people who enjoy what they are doing do a much better job than those who don't. Given the choice of working for a company that requires you to fill out a form for every change in the code or Mc Donalds, I would pick Mc Donalds any day. -- /----------------------------------------------------------------------------\ | My opinions are violently objected to by my employer. I was fired last year| | but they forgot to remove my account. Lawrence Foard (entropy) | \----------------------------------------------------------------------------/
tada@athena.mit.edu (Michael Zehr) (02/19/89)
In article <899@wpi.wpi.edu> lfoard@wpi.wpi.edu (Lawrence C Foard) writes: >I would like to present the opposite side of the argument about hackers. >I generally program in the hacker style. i.e. >No flowcharts or writting code out on paper. >Use comments only where needed. >Allow programs to evolve. >[...] >For example a typical project: >Person needs a program to do something. Quickly write code to do it. Show it >to them and ask what they would like added to it, suggest things that might be >useful and could be easily done. Repeat until satisfied. Clean up and optimize >the final code. >[...] >I have seen figures from the software industry and they are abismal, only 10% >of programs are ever successfully finished. Most hackers I know have from 75% >to 90% success. For the type of programming you're doing, that sounds perfectly reasonable. But that certainly isn't the "software industry." Have you compared the success rates of hackers completing a 10 man-year project vs. non-hackers completing the same project? Most software projects can not be done by a single person. They're simply too big. Saving time by not writing things down only works if one person can remember the entire structure of the program. And what if the client insists on a functional spec before paying money, so they know what they're getting? The software industry does use the method you describe -- it's called proto-typing. You take a couple of months and put together something that has most of the front-end of the system, and a bit of the back end, but without any real data or whatever. Then you let the client look at it and see if that's what they want. i'm sure there will be lots of other replies, so i'll end this one now... -michael j zehr
vincent@ditsyda.oz (David A. Vincent) (02/22/89)
in article <899@wpi.wpi.edu>, lfoard@wpi.wpi.edu (Lawrence C Foard) says: > I would like to present the opposite side of the argument about hackers. > I generally program in the hacker style. i.e. It strikes me that what Lawrence presents isn't a terribly good definition of the hacker style. I'm sure many non-hackers program in this 'hacker style' too. At this stage I'd rather not get into an argument about the merits or otherwise of hackers & hacking. But I would like to pin down just what it is. Let's look at how Lawrence sums up the 'hacker style'. > No flowcharts or writting code out on paper. I don't think you have to be a hacker for this to be part of your style. Flowcharts are a no-no for structured programming anyway; writing code out on paper is probably dying too as editors improve. I think it would be true to say instead that hackers simply don't like to create abstract models (like flowcharts or pseudocode) of their programs. > Use comments only where needed. This really says nothing, since it's a matter of opinion where comments are 'needed'. Naturally, hackers and non-hackers have different opinions on this subject. Comments only get put in when someone thinks they need to be. > Allow programs to evolve. This is pretty vague. Hackers don't *only* allow programs to evolve; otherwise hackers would always be modifying existing programs and never starting new ones. On the other hand non-hackers don't always *prevent* program evolution either. After all, putting suitable comments into a program ensures that the program can be more easily modified later, which surely encourages program evolution. My favourite definition of hacker is 'compulsive programmer' (due, I think, to Weizenbaum (sp?)). But here is another, perhaps better, definition of 'the hacker style': * No flowcharts, writing code out on paper, specification, or indeed any abstract modelling of code outside of the author's skull. Just get on with it. * Don't let comments obscure the author's understanding of the author's code. * As long as their authors are around, allow programs to evolve. David A. Vincent vacation student, CSIRO Division of IT ACSnet: vincent@ditsyda.oz Post: GPO Box 1710-T Phone (w): +61 2 887 9383 Hobart TAS 7001 FidoNet: 3:670/700 Australia ---------------------------------------------------------------- Irrationality is the square root of all evil. - D R Hofstadter
hsd@uvacs.cs.Virginia.EDU (Harry S. Delugach) (02/25/89)
In article <899@wpi.wpi.edu> lfoard@wpi.wpi.edu (Lawrence C Foard) writes: >I would like to present the opposite side of the argument about hackers. I appreciate your posting this, but your arguments leave me unconvinced. I have tried to indicate my points of disagreement. >I generally program in the hacker style. i.e. >No flowcharts or writting code out on paper. >Use comments only where needed. I thought hackers never needed comments anyway. :-). >Allow programs to evolve. You mean without any real design. >Atleast 50% of the code I have written has been for use on various research >projects. I believe allowing code to evolve has some important advantages over >working from specs. For example a typical project: >Person needs a program to do something. Quickly write code to do it. Show it >to them and ask what they would like added to it, suggest things that might be >useful and could be easily done. Repeat until satisfied. Clean up and optimize >the final code. Of course the complaint about this is that you have to make >changes in the code. But it has to be considered that you saved huge amounts >of time by not writting reams of paper work, and have also given the person As has been mentioned before in this newsgroup, the huge amounts of time you saved by not writing down what you did will probably cost someone else huge amounts of time later in trying to figure out/fix/modify what you did. >what they wanted instead of what they initially asked for. This is fairly >important since many people don't know what the computer can do for them. I agree with your point, but if you haven't documented anything, how does the person know the program really does what you tell them it does? For that matter, how do *you* know? It's easy to say the program works when you have no statement of what it's supposed to do, other than "keep the user happy". >For example an extra ten minutes of coding can add a feature that will save >hundreds of hours of time. Whose time? If poorly documented, or poorly designed, that extra "feature" may introduce new bugs, may be difficult to maintain (even by another hacker), and may not be re-usable in its original form. >I have seen figures from the software industry and they are abismal, only 10% >of programs are ever successfully finished. Most hackers I know have from 75% >to 90% success. This is a huge amount of money considering that a hacker can >also produce this code with out the cost of 10 paper shufflers. How do you measure your success? Do you mean your program eventually ran? This is how CS101 students generally measure their "success". Does it mean the user finally quit complaining? Maybe he just got fed up with your making changes. And what kind of programs are you talking about? The software industry figures are for software *products*, which are much tougher to produce than programs. Programs get the job done, but *products* are documented, maintained, robust, reliable, etc. Although some good programs can be written as you suggest, I believe that producing a good *product* requires you to apply some software engineering principles. >Another fact that is often over looked is people who enjoy what they are doing >do a much better job than those who don't. Given the choice of working for a >company that requires you to fill out a form for every change in the code or >Mc Donalds, I would pick Mc Donalds any day. FLAME ON! Here's my analogy for software engineering: Hackers probably think that if you already know how to cook a hamburger, working in a McDonald's shouldn't be too much different. Next time you're in McDonald's, look around. There's a lot more going on besides just cooking hamburgers. McDonald's knows how to produce a *product*. FLAME OFF! -- Harry S. Delugach Dept. of Computer Science, Univ. of Virginia, Charlottesville, VA 22901 U.S.A. INTERNET: hsd@cs.virginia.edu BITNET: hsd2x@virginia UUCP: ..!uunet!virginia!uvacs!hsd CIS: 72727,2363
lfoard@wpi.wpi.edu (Lawrence C Foard) (02/27/89)
>.... > > * No flowcharts, writing code out on paper, specification, or indeed > any abstract modelling of code outside of the author's skull. > Just get on with it. > > * Don't let comments obscure the author's understanding of the > author's code. > > * As long as their authors are around, allow programs to evolve. > >.... Thats pretty much what I said any ways. But I guess I should have included the compulsive programmer part in the definition to. This is fairly important to the hacker style of programming, you have to enjoy it and be interested in what you are doing for it to work correctly. If you are interested in what you are doing you don't need to fill out reams of forms to show that you haven't been reading playboy all day. Although more planning is needed for big projects, I don't think 100's of pages of spec's helps much, a large number of informal meetings between programmers would work much better. I don't think managerial attempts to enforce good programming style are a good idea this acts only to impose arbitrary restrictions. It is much better for some one to learn good programming style from experience rather than have a set of arbitrary rules to follow. Before some one starts programming for money they should have enough experience to know what they are doing. P.S. Our mailer seems to throw up on quite a few addresses so I wasn't able to get mail back to several direct replys I received. P.P.S. I can program better than I can write. -- /----------------------------------------------------------------------------\ | My opinions are violently objected to by my employer. I was fired last year| | but they forgot to remove my account. Lawrence Foard (entropy) | \----------------------------------------------------------------------------/
djones@megatest.UUCP (Dave Jones) (02/28/89)
Pity the poor "hacker". He does the job. He makes it work. Then people say, "But you didn't go about it the right way. It's sure to cause horrible trouble later on." What to do? Form your own startup company; bank a few million for yourself; and face the impending doom with equanimity! ... Pity the poor computer "scientist". He pretends to know how to do things that nobody knows how to do. His projects slip, month after month. But that's okay. He had a design, with Gant- charts, and circles and arrows, and man-month projections. It just needed a few "revs". Rev 14 still has bugs. People say he must have done it wrong. What to do? Become a professor; ship no product; and never be wrong again!