Nice article ! But there is one thing I disagree with: the part regarding the comments on functions: Ideally every function should have a docstring. Especially in your example. In such cases, when your function does such a simple thing like computing the population of an area. The best thing to do here is rename the function name to compute_area_population_density. The docstring with the params is even worse. replace that with type hints and you are good to go. Here you end up with 10 lines of comment for one super simple line of code. You end up loosing much more time reading and understanding the docstring then reading and understand the single line of code. And it will eat you up alive when you’ll have to refactor the code. When blindly applying general rules like every function should have a docstring you end up with a pile of useless comments which totally defeats the purpose. Anyways that is just my 2 cents