Happy Monkey, How To Ask a Question and Debug

I seem to become more and more fanatically didactical as time goes on.

I guess I answer too many questions, and am irritated when they are not asked in an optimal way.

One important point, of course, as in all communication, is to formulate your message with the receiver in mind.

I explained that for two specific cases today, and thought I would mention my suggestions here for future reference, after wishing everybody

Happy New Year of the Monkey!

Our Chinese colleagues are already in full celebration of the Chinese New Year. It began yesterday, February 8. In fact, the whole of this week is a holiday in China and our offices there.

In case of interest, check out the Chinese New Year impressions from the Year of the Dragon back in 2012.

This year is Monkey, charming, charismatic and extremely inventive.

Happy New Year of the Monkey!

This Chinese Zodiac provides descriptions of the different types of monkey and enables you to look up your own Chinese Zodiac sign.

The Chinese New Year is also called Spring Festival.

After the holiday, Spring will come, the start of one more year.

Happy New Year!

How to Debug a Complex Issue

People frequently raise questions about some programming problem in their Revit add-ins and try to find help for that from others.

This help is often hard to provide due to the complexity of the issue.

Such a point arose again today in the Revit API discussion on API constraint management.

Here is my recommendation on how to approach this, which I now also added as a post-post-scriptum to the instructions for a reproducible test case:

I would love to dive in and try to help you debug this, but I am sorry to say I do not have the time.

You will have to continue exploring it yourself.

All I can suggest is to keep at it.

One approach to debugging a problem like this is:

  1. Simplify it down to something absolutely trivial and stupid that is guaranteed to work – dumb it down.
  2. Once that is working, add the required complications one by one until it either works completely or fails.

Once you have determined the exact point of failure, you can narrow that down further and create a minimal reproducible case.

With the minimal reproducible case in hand, I can either take a look myself of pass it on to the Revit development team for further analysis.

Thank you!

How to Ask a Question

In a related vein, I often receive requests by email or otherwise to solve a programming issue, or, in some cases, assess the possibility of implementing a programmatic solution for some given task.

Here is my most recent reaction to such a request:

Posting an issue in public enables me to take a look at it, my colleagues as well, and the entire Revit developer community also.

My standard motivation blurb for goes like this:

I do nothing at all that cannot be shared and published, and share and publish absolutely everything I work on.

I therefore avoid discussing questions like this, and actually all questions whatsoever, one-on-one.

I prefer discussing everything in public and enabling the entire community to contribute and share.

That has several advantages. Among others, your peers can join in and help you, and our conversation becomes visible to others, to help them resolve their issues as well.

In addition to formulating a generic question and publishing it on the forum, a minimal reproducible case can also help a lot.

Put together an absolutely minimal example that clearly demonstrates the problem and also makes it easy to check whether a solution really achieves the desired result.

That will help people understand the issue better and motivate them much more to explore and chip in and help.