First principles thinking for debugging complex software systems | Mahamudul Hasan Rubel