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

As a software engineer I like these simple rules, they let me produce something that doesn't look terrible without having to spend years studying design.

It reminds me of shuhari (守破離), an idea from martial arts and other traditional practices. It basically means "Follow the rules, break the rules, transcend the rules", and the characters mean "follow, break, transcend". The article hints at this too: follow the rules until you find a good reason not to. As it is aimed at beginners we should mostly be learning and following the rules until we have enough experience to start breaking them.




> shuhari ... basically means "Follow the rules, break the rules, transcend the rules"

I really like how that lines up against one of my favorite maxims, "First do it, then do it right, then do it better."


I liked maxims when my life was simple and I was young, now they feel completely meaningless, as they never have a context for real life and they break down easily when applied to complex behavior and interactions. It's more like a prayer or chant, more for self reassurance, that you follow some principle, than anything.


Make it work, make it right, make it fast.


That's nice in theory. What happens in the real world is more like 'make it work, ship it'. Sometimes the first part is optional.


Ship as you make.


Improvise, adapt, overcome.


Embrace, extend, and extinguish


Veni, vidi, vici


Shit, shower, shave


Jump, jive and wail?


VVVVVV


Slow is smooth, smooth is fast.


Slow is fast.


Probably it's not against shuhari. Shihari is often used to describe professional principles in martial arts or playing instruments. It assumes they're trained to the point where if they do it, they unconsciously follow all the rules. When they play guitar, their fingers just move in the most effective ways and play the most satisfying melody. Then they intentionally break a few rules to improve it.

So shuhari is ”first do it, then do it right, then do it better” for professionals.


That is geared towards coming up with new rules I presume.

Think about it: creating software is creating new rules. You gotta start somewhere and refine the system.

But if you learn an existing rule system, you need to follow it first, then break them, then transcend/improve them.


I see The Analytical Language of John Wilkins was posted again today. While you're creating those rules, it's important to remember the map is not the territory.


The designer mantra as I learned it was “Get it done. Make it beautiful.“

Designers will futz with kerning or whatever for hours.


> and the characters mean "follow, break, transcend"

守 does mean "follow" in the specific sense of "following rules", though it has no sense related to motion and most "following", including metaphorical following, would be represented by 隨. 守 mostly means "guard" or "protect", and I assume that's the metaphor that was extended to complying with rules and correctly performing rituals.

破 means "break", no problem there.

離 means "leave" as in "go away"; it does not appear to have any sense of "transcend".


Presumably that would also be "leave" as in "abandon"? I think the idea is that you no longer need to think of the rules at that point because your intuition has matured to a point that you no longer have to reference them at all.


> Presumably that would also be "leave" as in "abandon"?

Well, sure, in the sense that abandoning necessarily involves leaving, and 離 can refer to the leaving aspect of that. But "abandon" adds a lot of meaning that isn't generally present in "leave"; you might be looking for 棄, which is specifically about abandoning.

離 is a much more basic word having to do with distance and separation. But since separation and abandonment are closely related, it does appear to have been used in something resembling that sense. Consulting a dictionary of Middle Chinese:

> 離

> 1. to part from, separate, leave; e.g. 離緒 emotions at parting; 離居 leave one's home; also, live apart

> b) stray from, astray; estrange(ment); divorce oneself from; be or get free of; e.g. 離落 aimlessly astray, drifting rootlessly; 離書 bill of divorce; 離結 free from bonds

That gloss is the closest one I see to "abandon". (And also looks like a pretty good match to the usage above; you can imagine escaping the binding of the rules as a close analogue of escaping literal bindings.) Compare

> 棄

> 1. throw away, discard; put aside, leave behind; abandon, forsake; renounce, reject, abolish, get rid of; annul

(Why Middle Chinese? It's easier for me to look up, and it seems more likely to be reflected in Japanese than modern Chinese usage is.)


This is a fascinating comment that I enjoyed reading. I appreciate you, internet stranger.


This is actually very close to the advice I've heard when it comes to design, i.e. "you need to understand the rules in order to understand when to break them". Following the rules helps build an intuition that later allows you to judge when breaking them is advisable.


Nice. And very applicable to software engineering.


I have to add “If you know the way broadly you will see it in all things” from Musashi which conveys a similar sentiment.


So many good lessons from Musashi. Highly recommended read.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: