Hacker News new | past | comments | ask | show | jobs | submit login

> Where does one draw the line between magic and a lack of user understanding?

There is no line; that's the definition. (I'm agreeing with you here, btw) It's a blub issue; if one doesn't understand it, it's derisively called "magic". So you don't get this argument because it's totally based on the observer.

I use Django at work and I hate it because it's magic all over the place. And I recognize that me saying it is simply I haven't had the time or impetus to go figure out the stuff I don't have figured out yet, so I can bucketize all that as "magic".




Maybe magic isn't the distinction to make. On the extreme, our processors are magic and I've never understood how exactly they work.

I've had a similar experience in Ruby where metaprogramming was used in favor of objects with functions. When I had issues, it was very hard to debug.

Maybe it comes down to the quality of the abstraction. I think the point of a good abstraction is you don't have to go down to the layer below.


> Maybe magic isn't the distinction to make.

Or maybe this is a board full of programmers who love to fret over unimportant minutia.

The idea has a well understood meaning, just use that meaning. Yes, maybe somewhere on the edges it's fuzzy, learn to live with fuzzy.


Sure, words will always have fuzziness, but there is benefit to substituting fuzzy terms with clearer terms. Words help influence thinking, so fuzzy words can lead to fuzzy thinking.

If we are debating an API design and a colleague says "it's too much magic", is that bad thing? If I write deliverEmail(email) and the e-mail "magically" gets sent, what's wrong with that?

On the other hand, if we debate the abstraction itself--for example behavior doesn't match user expectations--then we can do better at improving the API design.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: