Software design skill and implementation details

Software design skill includes a tendency or habit to know the details about the raw materials our software compositions are made of. The more details you know, the higher the probability of successful designs.

Encapsulation by means of information hiding is intended for software components; that is, a software component should know only the absolutely necessary about others software components and should assume only what is part of their public interface. In other words, rules of dependency management. But information hiding is not necessarily intended for designers.

.NET Framework = CLR + BCL
where:
CLR = The .NET execution engine or Common Language Runtime
BCL = Base class libraries

The more you know about CLR and BCL, the better; not only the public interface but the internals. Reflector is a great design tool for any software targeting .NET environment.

Visual Studio IDE now provides a way to debug into some BCL classes, and this is also a good design feature.