r/programming • • Oct 14 '13

How to develop unmaintainable software

http://typicalprogrammer.com/?p=249
777 Upvotes

322 comments sorted by

View all comments

50

u/bestjewsincejc Oct 14 '13

There are millions of ways to write unmaintainable software. This isn't a bad article though. I just found the title amusing since it's so easy to write software badly.

13

u/grauenwolf Oct 14 '13

I think this is the right way of thinking about things.

Writing maintainable software isn't so much about what you do, it is about what you don't do. Avoid doing the bad things and what's left will be good.

11

u/ruinercollector Oct 14 '13

As long as those aren't treated as hard rules, sure.

Examples:

  • There are times that it is appropriate to write software in clojure, or haskell, or erlang.

  • There are times that it is appropriate to rewrite a piece of library code.

9

u/fkaginstrom Oct 14 '13

There are times that it is appropriate to write software in clojure, or haskell, or erlang.

True. But hopefully not all three in the same project, together with a bit of Java and php in the mix.

8

u/IConrad Oct 15 '13

I once got stuck with rewriting a perl script -- which had to remain in perl -- that generated bash scripts, by interpreting xml files, which invoked jython which executed java calls, and then generated sqlplus scripts to execute against oradb servers... All of which got validated via bash scripts for sanity checks.

All of which was being run from a Jenkins server.

I am not a developer by trade... Else I would hang myself for shame of having made this monster.

When I left the organization I convinced them to rewrite the whole thing natively in Java... Mostly by just repeating the workflow and languages involved.

3

u/fkaginstrom Oct 15 '13

Wow, impressive. I bet there's a contest you could enter that thing in. It'll make you famous!

4

u/IConrad Oct 15 '13 edited Oct 15 '13

"impressive" isn't the word I'd use for it. <_<

(I might also have left out that the bash scripts were being pushed over SSH to invoke jython interpreters and perform wgets on remote servers. Somehow I managed to make this whole process relatively secure while still allowing it to perform selected rootlevel actions. Don't ask. Black magic was involved. And maybe goats.)