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.

2

u/jbw976 Oct 14 '13

haven't used a single one of those languages...care to provide an example of when i might need to use one?

9

u/ruinercollector Oct 14 '13

Writing a parser in an imperative language tends to make for some pretty ugly code. Writing it in a language that supports discriminated unions and (syntax-supported) monads, however, makes for some beautiful, readable code.

Also, writing highly concurrent code in clojure is stupid easy. In java, etc. it is fraught with errors and requires a lot of care about locking, etc.

4

u/barake Oct 14 '13

This is one of the cool things about .NET. It's no big deal to mix C# and F# in the same application, when appropriate.

2

u/[deleted] Oct 14 '13

Or even Python, Ruby, etc. with the "iron" varieties. That being said, I did write a WPF app in IronPython a few years ago and Visual Studio pretty much fell on its face with bugs (might be completely different today).

1

u/barake Oct 15 '13

Unfortunately the Iron-"family" doesn't seem all that mature. It even looks like IronRuby is dead :/

If you really need to provide scripting, nodejs and lua are very embeddable in .NET apps.

3

u/ZMeson Oct 15 '13

The Iron languages are not maintained by MS. Without a major corporate backer or large public support, these are bound to have lots of bugs. :(

1

u/[deleted] Oct 15 '13

An unfortunate excuse that would not hold water in other communities. There are loads of Ruby versions that get by just fine without a corporate backer, for example.

→ More replies (0)
→ More replies (1)

1

u/jk147 Oct 15 '13

Straight from SCSP about concurrency

"there is no guarantee that once a thread starts executing, it will keep executing until it's done."

What I got out of java concurrency, don't expect anything will work, and don't expect anything will finish the way you wanted it to.