Thanks for the great article! However I happen to disagree with the assertion that you shouldn’t name private members with leading underscores. I would agree with this for languages that have the ability to differentiate scope (like C++), but for languages like Python it’s not only helpful but the standard. It doesn’t add all that much to your code and it provides the added benefit of documenting your module/class interface for you. Like you mentioned about variable names including their intent, using leading underscores can make clear that the member is intended to be private/protected. Now you can’t always enforce this (like in Python), but when done right and agreed upon by the team it can be a good way to communicate intent through your code and without extra documentation. All in all though I loved the article and hope it helps others improve their coding skills!