Hacker News new | past | comments | ask | show | jobs | submit login
Rules of a Zen programmer (grobmeier.de)
264 points by karterk on Feb 10, 2012 | hide | past | web | favorite | 42 comments

Related to this is the no-complaining bracelet challenge, which I think has been mentioned here before. I've been doing this challenge, and finding it life-changing. The idea is to wear a bracelet, and never complain. If you complain, you must change the bracelet to the other arm. The goal is to go for 30 days straight without complaining. It’s surprisingly hard to do. At first I thought it was stupid, because it’s what going on inside your brain that counts, and not giving it voice surely wouldn’t make any difference. But I found that it makes a huge difference. The act of not complaining, never complaining, retrains your brain to think about what you truly are in control of, and what you are not in control of. It helps translate hardship into either actively making the situation better, or not thinking about it. That’s really all anyone can ever do, but having the option to complain makes that a lot cloudier. Going the full 30 days without complaining, I’ve learned, cannot be done without totally retraining the mind to see life differently. I heartily recommend it to anyone.

Keeping a journal about when I complain taught me someone very important about myself that has also helped me cope and not get overwhelmed. The times that I complained, I discovered, tended to be when I hadn’t had enough sleep or food. I’ve structured my life around making sure that I get plenty of sleep, and that I eat regularly.

Training myself not to complain has really helped me not get overwhelmed and reduced my stress quite a bit.

I never heard of this. It sounds like a really cool experiment. I might have to try this out with my watch. I don't wear bracelets and I don't plan on starting.

I don't wear bracelets either. I don't wear a watch. I'm a minimalist, and find such accessories very annoying. So wearing the bracelet became my very first constant reminder of something not to complain about.

As consolation to myself, I use a paracord bracelet that could be disassembled into survival equipment of a thousand uses if needed.

Upvoted for actually citing and expressing some knowledge about Zen philosophy, unlike many of the mentions used everywhere that attempt to cheapen it.

Indeed. Contrast that with the "cleverness above all else" geek ego push, commonly found on discussion sites such as this.

Abandoning appreciation for "programming skill" has helped me be much happier and more efficient in just getting things done.

P.S. I once bought zengram.com and zengramming.com with this exact topic in mind.

If you want to start a blog/website about this topic, let me know and I'll hand them over for the greater good.

I actually rather liked this. It did seem more authentically zen (not that I can say for sure) than a lot of the "zen" stuff out there.

That said, the phrase "as good as you can" occurred five times and was quite distracting. It should be "as well as you can" to be "grammatically" correct. (I'm generally a 'descriptivist' rather than a 'prescriptivist', meaning if a native English speaker says it, then it's okay, but it looks like this author is not one, so I figured I should point it out.)

> meaning if a native English speaker says it, then it's okay

I'm not sure what you mean here. Descriptivism is a paradigm of linguistics in which language is analyzed as it is used within a given population and point in time, rather than analyzing it according to a strict and timeless set of rules (a.k.a. prescriptivism). Rather than defining a given usage as right or wrong, it seeks to classify the usage according to what populations and registers it's used in.

That's not to say descriptivism has nothing to say on what language one ought or ought not use, just that the recommendations will be dependent on who your audience is and what setting. Like: using "y'all" in Texas wouldn't raise any eyebrows, but in Wales it certainly would. And using "hoosflaw" to mean "pickles" wouldn't work anywhere.

In the U.S., I'd wager that adverbial 'good' is used quite a bit informal contexts like conversation, texts, or Facebook posts. So it's up the author (native or not) what sort of feeling they want to evoke while delivering their message. Homey and conversational? Authoritative and experienced? Silly and offbeat?

That said, if you're not confident in your command of the language you're using, formal is probably best, since A) it's probably mostly what you've been taught, and B) it'll be comprehensible and acceptable to everyone.

Thank you for the correction and interesting information. I was mainly trying to indicate that even though I'm generally pretty lax with "grammar rules" (e.g., "Never end a sentence with a preposition") this mistake was still jarring to me.

I suppose I was playing a bit fast and loose with those terms, though, and shouldn't have. So, thanks.

Thank you, I have updated my post with your corrections. And you are right, I am not a native speaker.

It is better now, but amusingly - "The other guy is not as well as you, but better with bowling.", in this case it should be "The other guy is not as good as you".

Great article, though.

Ups - thanks, fixed that too. I was definitely not focused enough. The whole feedback on this post is just overwhelming.

Cheers for taking the time to respond to feedback and learn.

Also, props on how strong and well written the English is in general!

And, most importantly, loved the article. :)

(I thought this whole thread was a good example of how to actually do good feedback. )

Thank you for the kind words. It is actually very difficult to estimate if the article is well written or not if you are not using you mother tongue (at least this is how I feel about it). So I consider your comment very motivating!

I think the less than perfect grammar makes the piece flow better, and sound more authentic Zen

meaning if a native English speaker says it, then it's okay,

I'm pretty sure descriptivism involves some number of people sharing an agreed meaning, not that all speech by all native speakers is OK.

Yam saying my accent am incorrect?

> I'm generally a 'descriptivist' rather than a 'prescriptivist', meaning if a native English speaker says it, then it's okay

What about things like leet speak, and other Facebook-like lingo?

to work for nuclear power companies – it is against my ethics

I just wonder why?

Yeah, I could understand a company that makes nuclear warheads but I don't see the connection between nuclear power and tanks. I think the author either isn't informed about the possible positive aspects of nuclear power or meant to say something else.

REasonable people can object to nuclear power because 1) no matter how good the safety systems are, no safety engineer will claim a 100% safe system; there is always a balance of probabilities and 2) nuclear waste isn't fun. I'm not suggesting that these drawbacks outweigh the positive, just that I could see how an informed person would say that the risk of nuclear catastrophe (however minute) is not worth the benefits (however great.)

we cant even convince otherwise informed, intelligent people to keep adequate backups, by-and-large. the list goes on forever. gun control laws? abortion? in-vitro fertilization? Women with equal voting rights?

so you hit nail on the head.... and when it comes to nuclear facilities, no small amount of amrchair stats are enough to make truly informed risk/reward calculation, and given the risk part generally includes components involving death and destruction on a fairly large scale, shot and long term, and given we all put our own values on human life and all that, for some no amount of losses are acceptable. Im not agreeing or disagreeing either - thenerd side of me feels then same way - "smart people should be able to se this is our best option" - the zen side of me says there is ia much bigger picture at stake, one i am not currently involved in , and its also not a decision i am personally faced with right now, so im sort of wasting my time even writing this post, right?

Zen version: is any discussion here going to have an impact on large scale nuclear policy at this point in time, one way or the other? If not, it is a pontless avenue of discussion, we can all go focus on something more important to us individually, whatever that is. right?

I don't want to start a discussion on nuclear power here. But I am informed about it and still do not like it. For me nuclear power is a dangerous toy and I cannot support it. Therefore I will not work for companies providing nuclear power. If I am wrong on that or not is another question.

Its not really relevant to the topic, other than to say you should not be afraid to maintain your personal ethics, whatever they are... if you dont, you will be less happyfor it.

There are lots of things we could all disagree about while we agree on other points.

Posting belatedly, but I really disagree with the "no career goal" item.

Doing a good job on today's tasks is very important, that's true. You don't want to live in the future and neglect the present.

But unlike chopping wood and carrying water, in this industry the work is always changing. If you don't maintain a healthy sense of progress toward a future, you're likely to miss opportunities for jobs that would be lots of fun and teach you a lot. In the worst case, your skills will go stale and you'll get sidelined.

Also, I think having clear career goals makes it easier, not harder, to leave a situation that is not appropriate for you. If it's not serving your goals, find something that will.

I like the part about ego because too much of the programming (sorry, "engineering," no wait I mean "architecting") world is focused on a kind of dick-size comparison which is somewhat poisonous and skews things toward self-promotion and away from doing useful things and enjoying yourself.

Programming is a joy when I can just let the task take care of itself as I watch. I can do this in amateur or "hacker" settings but I see less and less of those these days.

It makes me unhappy when programming is a prop or setting for selfish and self-conscious and mean social behavior, as it seem to be more among people who take it as a profession more than a passion.

This was very refreshing to read. I agree a lot with the sentiments, and some of it can help with entrepreneurs, like not grasping for any future goal, and enjoying the process instead.

Great article! Reminds me of "Zen mind, Beginners mind" book.

Actually this book has influenced the "beginners mind" item.

I like. Creating for the sake of creation is what allows innovation.

Great read! I was starting to lose faith in all these "zen" life tips. This was a good one.

Made my day a little better. Thanks.

Something I've noticed in software is that 95% of the anger and strife comes from the (largely male) impulse to react to unskilled creativity (or the perception thereof, because the most dogmatic technology wars come down to superficial perceptions-- e.g. tabs vs. spaces) with extreme negativity.

That impulse is even in our language. We say someone "jacked off in" or "took a dump in" the code base when he did something "clever" but unskillful and damaging. It's an epithet of self-indulgence and even sabotage when a more appropriate reaction is, "I wish he hadn't done that, so let's sit down and teach him better practices".

It served us well when we had to stop people from poking sleeping mammoths and smilodons with sticks, but it's outdated now (for the most part). Code indentation is not an existential issue for most software companies.

Don't get me wrong: I dislike spaghetti legacy code as much as anyone else. I mean, it's truly horrible to look at. And one only need review my history to see what I think of the Java and C++ languages. I just think reacting emotionally is a bit unskillful. (I can't use a stronger word than "unskillful" because I do it myself.) I think we'd be a lot more productive (and this is largely a self-criticism) if we could take stock of our mental processes and turn "code rage" off.

Relatedly, I think we'd be better off as an industry if there were more women in it, but that's another discussion entirely.

At my last job, everyone was always bitching about the young developers. After months and months of hearing this, I started pulling the new guys aside for an hour a week to do mentoring sessions. We'd sit down and do some coding on a simple topic (how to sort a datagrid, how to hook into the event that fires when a row is created, how to standardize your data validation and error messages). The big take away for them was they got see the process, how a more experienced developer works. Stuff like did you know that shift-control-b builds your solution... you should be pressing that every 5 minutes. Or coding up a quick and dirty solution and using simple refactorings to turn it into something more real (mostly extract method and rename).

I'm not going to sit here and say that there is no such thing as a bad developer that is beyond help. I do think in some cases though it is a matter of people not doing their due diligence in helping people out. I can't help but think that part of it is that we developers spend a lot of time on the internet where the base mentality is that everyone is either a n00b or a pro. Either I agree with what you said or you are clearly a moron. It is important to not let that kind of stuff trickle into our 'real' lives.

This is really important – I think every organization should do this. At my last job I learned so much from watching more experience people code and asking them questions. Now I volunteer my knowledge to others whenever I can because I know how much it helps.

We do code reviews, which complements working directly with each other and helps to correct/improve sub-standard code.

For anyone who's not tried it, pair programming can work well as a mentoring technique.

> We say someone "jacked off in" or "took a dump in" the code base when he did something "clever" but unskillful and damaging

I have never heard those expressions. It would be discouraged and frowned upon at my place of work.

People rarely use those phrases to describe their own co-workers, especially not at the time; it's more often in retrospect, and often about an external consultant.

Agree. That impulse to disregard & denigrate those who make mistakes is strong, and I've made that mistake often. Looking back I see that copping that attitude is a major cop-out. It's so easy. Being nice & teaching where you can - that takes real balls & brains.

Well, there are the people who don't want to learn and improve their bad practices. They're awful. I worked with someone like that-- the only time I actually asked someone to fire someone. He was brilliant and had a lot of experience, but he had some awful practices that he refused to improve, and that made everyone else less productive. He manage to position himself as the "star" kicking out 4000 LoC per week, until it became clear that not only did none of his stuff work, but it was illegible and couldn't be made to work.

That experience tested me. But if you have someone who's very junior, he's going to make the same kinds of infuriating mistakes, but not out of malevolence or a negative attitude-- just being new to the whole process. We were all there once.

As a programmer I feel that rage in general is a poorly managed emotion.

I have noticed a tendency of rage hinges around communication. If I can't understand wtf some code-monkey from 5 years ago was trying to do, I of course 'rage and re-write'. But as I get older it seems this isn't always the right thing to do .. to be honest, I find myself having respect for code I don't understand at all, more or less, because the author was an idiot. Respect for the borked!

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