> I've been writing CSS for years and I still feel like a newbie sometimes, and feel like I'm just tinkering with random attributes until it looks right.
This is exactly how I work with CSS too. Not surprisingly, it's my least favorite aspect of web development.
Just like programming, a lot of time can be spent debugging. Also, just like programming, the more systematic your approach, the less time you will spend debugging.
The solution is to stay DRY by applying OOCSS/SMACSS/BEM concepts using Sass/Less.
This is exactly how I work with CSS too. Not surprisingly, it's my least favorite aspect of web development.