-
Website
http://jamesgolick.com -
Original page
/2008/8/2/wearing-out-my-delete-key.html -
Subscribe
All Comments -
Community
-
Top Commenters
-
jfcouture
2 comments · 4 points
-
peterwd
1 comment · 1 points
-
lucashungaro
5 comments · 1 points
-
luigimontanez
3 comments · 1 points
-
Millisami
1 comment · 1 points
-
-
Popular Threads
Instead let me suggest an interview that would probably be of interest to you. It's one of the very few podcast episodes that I considered to be an instant classic as soon as I listened to it.
The interview is with Ward Cunningham, inventor of the Wiki and one of the inventors of extreme programming. In the interview they talk about concepts such as doing the simplest possible thing that can possibly work, and then improving on it by refactoring when necessary. I think this is an approach similar to what you're referring to here.
The interview is by Randall Schwartz and Leo Laporte, on FLOSS Weekly: http://twit.tv/floss27
Oh and if I recall correctly, I think he did a significant amount of Smalltalk and therefore refers to the expression of "debugging a program into existence". So I'm not alone ;-)
I totally agree about the software engineers sometime doing lesser quality coding jobs than self-taught motivated individuals with no education related to software conception.
Nothing makes my day more than being able to delete a couple hundred lines of code.
Delete first, ask questions later. So many coders are afraid to make deep changes like deleting code. The rewrite is better almost 100% of the time. And if it isn't, well, that's what version control is for :)
It‘s the difference between speaking and writing: If everyone had to convey their emotions through speech, without the ability to take back and revise our words, we‘d have big communication problems.
@eric: absolutely not. Nearly all of my software development experience can be categorized in to a couple of pretty specialized areas of the field. And, most of this advice very specifically applies to working with expressive, dynamic languages. In other areas, with other tools, I can't claim to have any idea. There are certainly other effective approaches.
What I will say, though, is that when expressive, dynamic languages are an appropriate solution for your problem domain, this strategy is _an_ effective one for producing great code.
Coding Horror recently had a post on this very subject:
"Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the "quantity" group was busily churning out piles of work - and learning from their mistakes - the "quality" group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay."
http://www.codinghorror.com/blog/archives/00116...
Iterate early, often and simplify towards the optimum solution within the given constraints.
/pauric
I was just referring to an expression I heard a bunch of times from Smalltalk people. "Debugging a program into existence" refers to the fact that with Smalltalk you can literally code what comes after your breakpoint and then continue execution.
If it wasn't mentioned in the Cunningham interview, it was probably in the Dan Ingalls one, a few episodes later.
I liked ror before i started working on a stagnant ror project. documentation from the initial dev was minimal. and monkey patching was extensive. i ended up doing a rewrite(thats refactoring right?) with spring/swf on tomcat. finished it much sooner than it would have taken me to begin to figure out what was going on in the failed project.
See: http://www.pkshiu.com/writing/programmers.html
Some scenarios that would benefit from the code-and-see process are :
- learning a new framework, experiment to see how things work
- very complex database query, unless your relational math is up to par
- using the Windows API, but that's a whole different story
P.K.
Respectfully,
Dr Saxe