Over the years I’ve coined a few new programming related terms that are meaningless to other people, but which make sense to me (as they concisely describe certain programming concepts). Sometimes these homemade words have taken off among my colleagues as well, however others remain for the most part just tokens of my own nomenclature.
One of my personal favorites is the term Jenga Driven Development (JDD). I define it as the act of developing complex software without the aid of automated testing. It’s essentially the radical opposite of Test Driven Development.
I call this concept as such because performing maintenance and introducing code changes to large code bases that were developed in such a manner usually leads to the same hesitation and feelings one experiences when trying to remove a piece from a tower of Jenga blocks.
Copyright © egarc2
I think it would be cool if this term were to ever catch on, and as such I’m throwing it out there for you to use if you’d like.
What programming terms, if any, have you coined over the years? Feel free to share them in the comments.
Get more stuff like this
Subscribe to my mailing list to receive similar updates about programming.
Thank you for subscribing. Please check your email to confirm your subscription.
Something went wrong.
Nice, I’ve been working on some code at work that I’ve referred to as a “Jenga Fix” because of what you talk about above.
I’m sure I’m not the first, but I’ve used the term “Troll-Driven Development” several times before. This is in reference to code written so poorly, that I have to imagine it was written as a joke or with the intention of provoking others.
Meaningful!
Haha, very nice! I too worked at a company where we would wonder what would happen to the system when we started to introduce code changes to the system. We could test, afterwards, what we knew, but never everything. I will start using this term now. TY.
I worked for company where they actually told me they did “Exception Driven Development”. So you develop a feature, deploy it and if you get an exception email then you fix the problems.
If ‘spaghetti code’ catched, I don’t think ‘jenga projects’ would be a bad choice: A lot of the code I write feels like this!
Cheers,
Ruben
How is your Swahili? Jenga means ‘build’ in the Swahili ( Kiswahili ) language.
How about Palace-Driven Development: http://szeryf.wordpress.com/2011/01/10/palace-driven-development/
http://faithdrivendevelopment.com/ ’nuff said
I like the term “empirical programming”. You just keep trying stuff until it works.
I’ve called that same practice “refucktoring.”
We used the term “poke and hope” in college. Rather than spending time to figure out what was wrong with a piece of code, just try some of the obvious tricks based on intuition, compile, and see if it works.
I never was a fan of poke and hope, but my friend used to use it all the time.
Jenga has been a common referent through a number of software development positions I’ve held.
When considering a block of code, depending on whether or not there was a not of code built on top of it, we’d talk about it in terms of how easy it would be to “slide that block out of the codebase” entirely.
Now, in my case I tend to rely on very strong typing disciplines (a la Haskell) rather than test driven development to ensure correctness, because I find there is a reduced level of ‘scaffold shearing’ when I make an architectural change, but the basic goal is the same.
In the embedded work I’ve been involved with, we used “crashemathics” for any mathematical operation we found in code that was carried out by bit-twiddling hacks, casting between types and so on, sacrificing safety for space.
Jenga somehow sounds perfect for this feeling 😀
Not a bad description., I may use that from time to time.
I’m not sure who first used it, but I’m also fond of the phrase “working by accident” to describe code that happens to work (today) but doesn’t have any tests around it to exercise and verify it.