Tilted Forum Project Discussion Community

Tilted Forum Project Discussion Community (https://thetfp.com/tfp/)
-   Tilted Literature (https://thetfp.com/tfp/tilted-literature/)
-   -   Writing Challenge #2 (https://thetfp.com/tfp/tilted-literature/81709-writing-challenge-2-a.html)

amonkie 01-23-2005 10:28 PM

Writing Challenge #2
 
Week 1 was a success, who's in for Challenge #2??? After seeing such quick responses, I think you guys are up for a little harder challenge this time.

Here's what to do:

Below, there is an article that I found, and using only the words in this article, write your own original story or poem or other masterpiece. Obviously, you do not have to use all the words. You can use any word as many times as you wish, but the word MUST be in this article. You must use the WHOLE word. No one is going to be the police and check your words, but follow the spirit of the exercise and check your words,pretty please :D?

For those interested:

Article By Joel Spolsky, taken from http://www.joelonsoftware.com/index.html

By Joel Spolsky

Quote:

Netscape 6.0 is finally going into its first public beta. There never was a version 5.0. The last major release, version 4.0, was released almost three years ago. Three years is an awfully long time in the Internet world. During this time, Netscape sat by, helplessly, as their market share plummeted.

It's a bit smarmy of me to criticize them for waiting so long between releases. They didn't do it on purpose, now, did they?

Well, yes. They did. They did it by making the single worst strategic mistake that any software company can make:

They decided to rewrite the code from scratch.

Netscape wasn't the first company to make this mistake. Borland made the same mistake when they bought Arago and tried to make it into dBase for Windows, a doomed project that took so long that Microsoft Access ate their lunch, then they made it again in rewriting Quattro Pro from scratch and astonishing people with how few features it had. Microsoft almost made the same mistake, trying to rewrite Word for Windows from scratch in a doomed project called Pyramid which was shut down, thrown away, and swept under the rug. Lucky for Microsoft, they had never stopped working on the old code base, so they had something to ship, making it merely a financial disaster, not a strategic one.

We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by incremental renovation: tinkering, improving, planting flower beds.

There's a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming:
It's harder to read code than to write it.

This is why code reuse is so hard. This is why everybody on your team has a different function they like to use for splitting strings into arrays of strings. They write their own function because it's easier and more fun than figuring out how the old function works.

As a corollary of this axiom, you can ask almost any programmer today about the code they are working on. "It's a big hairy mess," they will tell you. "I'd like nothing better than to throw it out and start over."

Why is it a mess?

"Well," they say, "look at this function. It is two pages long! None of this stuff belongs in there! I don't know what half of these API calls are for."

Before Borland's new spreadsheet for Windows shipped, Philippe Kahn, the colorful founder of Borland, was quoted a lot in the press bragging about how Quattro Pro would be much better than Microsoft Excel, because it was written from scratch. All new source code! As if source code rusted.

The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they've been fixed. There's nothing wrong with it. It doesn't acquire bugs just by sitting around on your hard drive. Au contraire, baby! Is software supposed to be like an old Dodge Dart, that rusts just sitting in the garage? Is software like a teddy bear that's kind of gross if it's not made out of all new material?

Back to that two page function. Yes, I know, it's just a simple function to display a window, but it has grown little hairs and stuff on it and nobody knows why. Well, I'll tell you why: those are bug fixes. One of them fixes that bug that Nancy had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes that bug that occurs in low memory conditions. Another one fixes that bug that occurred when the file is on a floppy disk and the user yanks out the disk in the middle. That LoadLibrary call is ugly but it makes the code work on old versions of Windows 95.

Each of these bugs took weeks of real-world usage before they were found. The programmer might have spent a couple of days reproducing the bug in the lab and fixing it. If it's like a lot of bugs, the fix might be one line of code, or it might even be a couple of characters, but a lot of work and time went into those two characters.

When you throw away code and start from scratch, you are throwing away all that knowledge. All those collected bug fixes. Years of programming work.

You are throwing away your market leadership. You are giving a gift of two or three years to your competitors, and believe me, that is a long time in software years.

You are putting yourself in an extremely dangerous position where you will be shipping an old version of the code for several years, completely unable to make any strategic changes or react to new features that the market demands, because you don't have shippable code. You might as well just close for business for the duration.

You are wasting an outlandish amount of money writing code that already exists.

Is there an alternative? The consensus seems to be that the old Netscape code base was really bad. Well, it might have been bad, but, you know what? It worked pretty darn well on an awful lot of real world computer systems.

When programmers say that their code is a holy mess (as they always do), there are three kinds of things that are wrong with it.

First, there are architectural problems. The code is not factored correctly. The networking code is popping up its own dialog boxes from the middle of nowhere; this should have been handled in the UI code. These problems can be solved, one at a time, by carefully moving code, refactoring, changing interfaces. They can be done by one programmer working carefully and checking in his changes all at once, so that nobody else is disrupted. Even fairly major architectural changes can be done without throwing away the code. On the Juno project we spent several months rearchitecting at one point: just moving things around, cleaning them up, creating base classes that made sense, and creating sharp interfaces between the modules. But we did it carefully, with our existing code base, and we didn't introduce new bugs or throw away working code.

A second reason programmers think that their code is a mess is that it is inefficient. The rendering code in Netscape was rumored to be slow. But this only affects a small part of the project, which you can optimize or even rewrite. You don't have to rewrite the whole thing. When optimizing for speed, 1% of the work gets you 99% of the bang.

Third, the code may be doggone ugly. One project I worked on actually had a data type called a FuckedString. Another project had started out using the convention of starting member variables with an underscore, but later switched to the more standard "m_". So half the functions started with "_" and half with "m_", which looked ugly. Frankly, this is the kind of thing you solve in five minutes with a macro in Emacs, not by starting from scratch.

It's important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. First of all, you probably don't even have the same programming team that worked on version one, so you don't actually have "more experience". You're just going to make most of the old mistakes again, and introduce some new problems that weren't in the original version.

The old mantra build one to throw away is dangerous when applied to large scale commercial applications. If you are writing code experimentally, you may want to rip up the function you wrote last week when you think of a better algorithm. That's fine. You may want to refactor a class to make it easier to use. That's fine, too. But throwing away the whole program is a dangerous folly, and if Netscape actually had some adult supervision with software industry experience, they might not have shot themselves in the foot so badly.

ICER 01-23-2005 10:34 PM

hhmmm, this may take awhile

roachboy 01-24-2005 09:46 AM

if you are writing experimentally,
you may want to rip up the function
you wrote last week

there are architectural problems
this is why reuse is so hard

architects
get to a site
bulldoze the place

splitting strings into arrays of strings



even fairly major architectural changes can be done without throwing away the code
don't rewrite the whole thing
1% of the work gets you 99% of the bang


the idea that new code is better than old is absurd

amonkie 01-24-2005 10:15 AM

And we're off and rolling! Great job roachboy :)

ngdawg 01-24-2005 12:59 PM

Six years of college. He knew what his destiny would be from the time he was old enough to reach the keyboard. A programmer. Programmer extraordinaire. People all over the world would depend on his code for everything they did on their computers. He knew this in his heart.
Four years behind a desk, anonymous to everyone until something had to be fixed. That wasn’t too often. But when the requests came, they came in a frenzy and he was often left behind as the others went home to their tidy 3 bedroom, 2.5 bath houses, driving their leased imported SUV’s . “Minions”, he thought. “Simple-minded worker ants”. Alone at his desk, he plotted and planned for his destiny.
Five hours before another workday begins, but now, in his small apartment, he is still tinkering away. Constantly changing small details. Checking, rechecking. It wouldn’t be long now before he changed the world. Sleep would just have to wait.
One more hour and he would be gone from this cubical maze forever. His time had come. What little personal touches he had added to his corner didn’t even fill the box he procured. He had made his goal and the urge to dance atop his cheap desk was almost overwhelming. No more fixing everyone else’s holy mess. No more enduring the frantic calls from his clueless bosses.
Seven million dollars. He took it. He didn’t need anything material, really. A place to sleep. A way to get around. The true satisfaction came in knowing he did what others only dreamed of. He had invented a completely new code. A new language. He had invented for all the computers of the world, for every user, a way to make things simple. A way to make things run smoothly. He invented code that used only the English language. No symbols, no numbers, no intricate combinations of either.
He laughed all the way to the bank.

ICER 01-24-2005 01:52 PM

Whao, Ngdawg. That is a brilliant piece of work.

ngdawg 01-25-2005 07:20 PM

Ok, I messed up regarding the rules. Sorry.....

mojodragon 01-25-2005 09:51 PM

"We're going to build a new ship." They had decided.

The old ship was a big mess. The drive systems were extremely dangerous. The windows had a large scratch. We should just bulldoze the old ship and build a new Dart Class ship, the "Quattro".

The architects had the experience, what they didn't have was the money. Where in the world
would they get the money for this?

Finally, one of their business competitors found an idea, absurd as that source may have been. They should start with the holy cardinal. The cardinal was a hairy outlandish one, that probably didn't know the law.

"Money? I'll fix you up with the money, on three conditions. First, you have to spend several weeks of mantra optimizing under my supervision."

"What?"

"I want to underscore the strategic reason for this. Using this standard mantra, under my supervision, you will introduce a new axiom. What can be, will be."

"Second, you have to reuse this rendering of the Holy Pyramid. The project is doomed without this on it."

I had supposed there were problems with the cardinal. It occured to them that the cardinal had carefully grown a teddy bear from little hairs completely made from stuff found on bugs. This new knowledge was ugly.

"Third, the whole ship has to function from the existing base."

These demands made little sense, but they didn't react. In the middle of the work, one of the features of the new ship shot over the garage and made a major bang. This mistake stopped the project for three years. Finally, the new ship was released, called "Lucky".

mojodragon 01-25-2005 09:54 PM

Ok, that was harder than I thought it would be. I liked the challenge! Please come up with more challenges!

neonscreamer 01-25-2005 10:08 PM

There's a subtle reason.
There's a dangerous folly.
There's a better alternative.
An extremely grand
Corollary of this
Absurd mantra,
This ugly position
Throwing away a gift.

amonkie 01-25-2005 10:55 PM

Quote:

Originally Posted by ngdawg
Ok, I messed up regarding the rules. Sorry.....


Eh, you still wrote SOMETHING :) I liked it anyway! :icare:

ICER 01-25-2005 11:16 PM

Quote:

Originally Posted by ngdawg
Ok, I messed up regarding the rules. Sorry.....

Actually, if you hadn't have said anything, I never would have noticed. It's still a great piece of work

amonkie 01-25-2005 11:40 PM

years splitting strings
rusted ships made doomed
something grand, thrown
a mess of hearts tinkering
in the middle of nowhere
old mistakes a memory
improving the original

mrsandman 01-26-2005 09:29 PM

Here is the interesting observation:

Three years is an awfully long time.

A doomed project ate their lunch and
their market share plummeted.

But this only affects a small part of the project,

Cleaning them up, may be doggone ugly as
they might have shot themselves.

Frankly, this is the kind of thing you solve
when optimizing for speed.

It's important to remember that when you
start from scratch some adult supervision
is a dangerous folly.

Seer666 01-27-2005 08:13 PM

Took a while, and was kind of hard given the limitations, but I am pretty happy with the outcome. hope you like.


A pyramid mantra
The axiom of observation
To the windows of the world
Program the programmers
To introduce function to purpose
And purpose to function
A dangerous folly
To throw away the old
When optimizing the new
Helplessly they plummeted
Creating outlandish modules
Of changing interfaces
Doomed
Doomed
Doomed
Is the mantra
Of fundamental real world problems
Over throw with reason
And excel by optimizing observation

Amnesia620 01-27-2005 08:59 PM

Good job, Seer. :) Nice way to meet the challenge.

amonkie 01-27-2005 11:21 PM

Glad to see you guys workin on it, I know this week was hard. I've you got ANY ideas, PM me so that I can include them! I'll pick something a little easier for next week :)

tecoyah 01-28-2005 07:01 PM

Back to the top...absurd
Theres nothing wrong with it
You might as well close for buisiness
The old codes a mess...but works
May be doggone inefficient
So install the thing on a computer and fix it
"it's a Big Hairy Mess", written from scratch

Shpoop 01-28-2005 08:54 PM

Today. Of all the days, today. Why today? Was there a mistake? No time to think over the reason, it is today. But it is not in a week, it is today! PUBLIC! ABSURD! Who came up with that idea?! It's a doggone mess! Do they think the code is done? Or do they think they will be throwing away more money if we work any more? Here, think about this: PUBLIC! All of our mistakes will be moving into observation and will underscore how inefficient our work is... will underscore how inefficient our work is. How inefficient their work is. Doomed. They that made the choice, I don't care about them. I never liked them. I have nothing to aquire from them...no leadership, no knowledge, no window into reason and experience. Well then, write them off as hopelessly outlandish! Let's go public!


____

sorry, i know its pretty crappy but its 12 and im tired

high_way 01-29-2005 01:13 AM

hey guys here is mine. sorry it has taken so long but i only got back in last time. is it me or is there a whole less lot people posting this week...? eh hope you like


The Mantra

The worst strategic mistake
Doomed major scratch code
Criticise the astonishing architects
Tinkering, improving, mess with and throw away

Bulldoze the disaster, what an interesting operation
Explore the Netscape for the experimentally inefficient
The mantra for the extremely outlandish is factored in the axiom lab
The simple fix is parentally absurd when compared to the hard use of splitting strings.

MARVIN DRAKE 2005

Bryndian_Dhai 01-29-2005 07:31 AM

Ok, here goes....

*grins* I haven't written haiku since middle school.



Architectural
renovation fixes old,
Making ugly new.

neonscreamer 01-29-2005 08:30 AM

*applauds*

that's a good one!

Bryndian_Dhai 01-29-2005 10:59 AM

Quote:

Originally Posted by neonscreamer
*applauds*

that's a good one!


*grins and curtsies*

Why thank you, thank you very much.

ClostGoth 03-20-2006 06:54 AM

Okay, after a week's worth of evenings spent mulling over this story... I pulled the words that meant something to me and strung them together in a semi-rythmic way that actually does mean something, to me anyway. :crazy: Everything else I did just read like a mad lib. :lol:



coloful explorer
in a changing world
interesting mantra
absurd demands
extremely dangerous
disrupted dialog
rendering original
astonishing architectural
window moving
into nowhere

Yukimura 08-13-2007 02:14 PM

"Doggone code. What a mess. What a mess."

An ugly little programmer sat working hard on a bit of programming popping up on his computer.

"What is wrong with you?"

His business was one of fundamental tinkering, and so a mess. He was an architect...

"Your cardinal law is a bug! What a mistake. Rewritting the HEARTS."

Nancy sat by, helplessly, as the changes were made. She didn't do it on purpose, did she? Well yes, she did. And now the old HEARTS code was swept under the rug. Thrown away.

"Better now?"

"Yes."

Strategic changes in place, she was something grand again. HEARTS was a doomed project.


All times are GMT -8. The time now is 08:37 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360