Though a lot of its topic is covered more in-depth by Sandi Metz's PODOR and the classics on refactoring, "Confident Ruby" might be one of the best purchases I've made as a professional programmer. There's some great practical examples in it, but most of all, it helped me understand why code should be "confident." Or, conversely, if you are writing methods that are constantly performing nil-checks and if/else forests, then you are likely breaking away from good design.
This is not really something ever taught in academia or in hobbyist/bootcamp code classes, where the motto is "just get something done until you get the hang of things", and the projects are so small that fighting cruft doesn't result in a huge time savings.
So for myself, when building large projects, it never occurred to me how vital it was to have consistent interfaces...and not having them in large projects is much more dehabilitating than it is in medium-size-to-small projects...I suppose if you studied OOP and software engineering, the "Confident Ruby" book would seem to contain little more than a review of code smells...but I think his take of "confidence" being a quality of code is what finally lit the bulb in my head.
This is not really something ever taught in academia or in hobbyist/bootcamp code classes, where the motto is "just get something done until you get the hang of things", and the projects are so small that fighting cruft doesn't result in a huge time savings.
So for myself, when building large projects, it never occurred to me how vital it was to have consistent interfaces...and not having them in large projects is much more dehabilitating than it is in medium-size-to-small projects...I suppose if you studied OOP and software engineering, the "Confident Ruby" book would seem to contain little more than a review of code smells...but I think his take of "confidence" being a quality of code is what finally lit the bulb in my head.