Code is Suffering
Ben Halpern Jun 9 '16
No, you will not be able to scale your CSS without pain. Your attempts to circumvent its shortcomings through transpilation, inlining, strict conventions, etc. will help, but you are not on a path to being free from the ache. You are just on a path. Your attempts to add rich interactions on the client will make it more difficult to do basic things like refer to the path of an image. Things might get better when you get over this hump, but there is another hump is looming. Your desire to improve your server’s performance will be fraught with opportunities to shim a solution for immediate gains. You will struggle with the tradeoffs and do what you hope is best. For every complexity problem you solve, the universe will offer you two new ones in the form of innovation. The abstractions you use are leaky. This will cause pain when addressing edge cases. The closer-to-the-metal solution will add constant development burden.
Your practices, like test driven development, will ease the suffering, but they will not sedate you. You will crave solutions that ease your irritation, but the fixes will just be a blip as you walk the path of code. You will rightfully look for, and find, solutions that work better for you. You are not a masochist, after all. Perhaps your church of Go, React, Rails, and so forth, will numb the burn. This might be exactly what you need, but the suffering is still there. There will be no salvation. Not from Rust, not from Ember, not even PostCSS.
You will often love it. You will feel like a magician at times. There will be days when the suffering bothers you. There will be times when it's all good. When you are happy, with your code and otherwise, the brutal realities of security, compatability, complexity, bureaucracy, scalability, etc. will not have gone away. Much of the time, these will be fascinating puzzles and will bring you much joy. The ebs and flows of your relationship with the code are but transient droplets in the waterfall that is code.
Code is suffering.