Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Use Your Trash Can

Name: Anonymous 2009-03-02 0:29

Anyone can write code. Not everyone can throw it away.

Mr. Z was the black-and-white darkroom instructor at one of the top-rated SCHOOLS OF PHOTOGRAPHY. In one class, he picked out a negative from each student's portfolio and said,``Print this.'' One would-be PROFESSIONAL PHOTOGRAPHER burned and dodged, spilled fixer all over himself, and proudly showed the results to the instructor. Mr. Z glanced at the printed photograph and said, ``It's too dark. Try again.'' On the next attempt, Mr. Z said, ``Not enough contrast. Print it again.'' Iterate until exhaustion.

Finally, after the student's clothes were permanently impregnated with the smell of fixer, Mr Z. approved of the photo. ``Very good!'' he said. ``Now, throw it away.''

``What?!'' replied the student. ``You just said the photo was good!'' Mr. Z responded, ``It is printed very well. Very good technically. But it's an uninteresting subject. Throw it away.''

That lesson stayed with the photographer—who later spent a few years as a black-and-white darkroom manager—but it's one that developers need to learn, too. Just because your code works doesn't mean it's done. Your application might meet the specs. But that won't make it great.

That working app won't make you a better /prog/rammer, either. Because I've come to believe that all great software is written three times. The first time you write it, it's to see if your idea can work at all. It's the digital equivalent of scratching something out on the back of the envelope, leaving out the fancy stuff and just concentrating on the basic feature or algorithm. Once you figure out that yes, this might be a good way to solve the problem, then you write the code a second time, to ``make it work.'' But it's the third time you write the code, when you've had the opportunity to learn from the mistakes from the ``try to make it work'' phase, when your application will be the best it can be. (Well, almost. There's often a 3.1, too. Even great software has a few bugs.)

Don't trust me on this? Look at all the ``best of'' software you ever worked with. I sure didn't love Window 3.1, but it was certainly the apex of Microsoft's vision and architecture of the time. That ``third try'' might not have a 3.0 or 3.1 version number, depending on marketing decisions (it used to be easier to get someone to upgrade from 4.0 to 5.0 than to pay real cash for 4.1) and on the nature of the development community (particularly in the open source universe) which is happy to trundle along for years with version 0.23 no many how many design iterations the code has gone through.

Not all great software has a Version 3 sticker, because sometimes the development staff get to throw away version 1 or 2 before the product is launched. But look at the software you most loved, before it was overloaded with feature-itis. I betcha it was the third try.[1]

__________
[1]http://www.javaworld.com/community/print/2537

Name: Anonymous 2009-03-02 0:38

Name: Anonymous 2009-03-02 0:40

>>2
But did you consult [1] after reading the entire passage, or only once you reached [1]

Name: Anonymous 2009-03-02 0:50

>>3
i think that's the joke

Name: Anonymous 2009-03-02 1:06

>>4
You are the joke.

Name: Anonymous 2009-03-02 1:24

I write software once and sometimes, I rewrite the code only to fix up bugs. I have the ability to do this because I spend a significant amount of time designing and mapping out my software system instead of fucking around like some hackers that make progress only after rewriting their code multiple times. The only other time I need to change code is if the specs change.

Name: Anonymous 2009-03-02 8:52

>>6
random bold
I I I I I
Jeff Atwood?

Name: Anonymous 2009-03-02 10:24

acaaccaaaac

Name: Anonymous 2009-03-02 12:43

>>6
You know, sometimes people do stuff for fun. That's when they don't take a long time designing ENTERPRISE QUALITY SOLUTIONS but just get to the coding.

Good advice, >>1, but I already do that sometimes as I'm closer to achieving
S
a
t
o
r
i

than most of /prog/

Name: Anonymous 2009-03-02 13:53

>>8
I acbcac'd

Name: Anonymous 2009-03-02 13:55

The ABC interpreter, version 0.1
Type `:c' for ABC commands, `:q' to quit
abc> acbcac
101
abc>

Name: Anonymous 2009-03-02 15:05

I've been thinking, don't we need any control flow in ABC? Because what we can do now is only an infinite loop. I can't even write fibs.

Name: FrozenVoid 2009-03-02 15:45

>>12 A real programmer knows how to break out of infinite loops.


_________________________________________
Eternity lies ahead of us, and behind.

Name: Anonymous 2009-03-02 16:01

>>12
version 0.2 will have conditional gotos

Name: Anonymous 2009-03-02 16:20

Run ``The ABC interpreter'' with -exts to enable some useful extensions like `j' to loop back to the beginning of the program if the accumulator is 0 or `.' to double the accumulator.

Name: Anonymous 2009-03-02 17:11

>>15
What the fuck? When was this implemented?

Name: Anonymous 2009-03-02 17:21

>>16
About a week ago, on my Personal Computer.

Name: Anonymous 2009-03-02 17:26

>>17
GIVE SOJ

Name: Anonymous 2009-03-02 17:42

>>18
What!

Name: Anonymous 2009-03-02 17:50

>>19
START OF JEWS?

Name: Anonymous 2009-03-02 17:59

>>17
doo doo dooo do doooo,
im lovin it

    ^     ^
  /   \ /   \
 |     |     |

Name: Anonymous 2009-03-02 22:33

>>21

DIE YOU FILTHY PIG!

Name: Anonymous 2009-03-03 1:55

I implemented the extended ABC, but I'm not experienced with interpreters, so need a little advice here:
how should I do it technically? What I used were two evaluating functions, abcSt and abcExt (along with a pair of REPLs), but that seems a little bulky. Should I pass an argument from the command line to the evaluator that would just skip the extended instructions when it doesn't get the argument?

Name: Anonymous 2011-02-03 7:13

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List