Grady Booch interviewed by Software Engineering Radio highlighted the essentially needed qualities of a valuable/good/great software developer:
Who is a good abstractionist?
As highlighted by Bill Higgins in his post, both transparency and abstraction have their own merits and compete with each other. Thoughts on balancing between these two in most cases lead us back to the basic principles of software engineering. Some aspects that come to my mind are: