Программирование, в первую очередь, всегда должно быть ориентировано на задачу.
Если в рамках вашей задачи достаточно взять чужой код и не требуется его изучение, то все норм.
Если же желательно его раскопать (есть подозрения, что будут проблемы, или просто достаточно денег и сроков), или если это необходимо, то надо копать.
Ибо подход должен быть интеллектуальным, а не категоричным "да/нет".
Если "да" - то есть ставить целью в рамках любой задачи раскопать все на свете до последнего бита, то придется копать все стандартные библиотеки, платформы, IDE, ОС (а че? вдруг пригодится? бывает) - то сами понимаете, никакого времени не хватит, и реальный заказчик такое времяпрепровождение не оплатит.
А если "нет" - то есть всегда и везде плавать на поверхности - то вы будете не уникальны и многое не осилите.
Т.е. отталкиваемся от задач, а откуда же брать сами задачи?
А их берем из более глобальных целей: фриланс, работа в конторе, такие-то направления...
Многое зависит от личных особенностей, кто-то прирожденный реверс-инженер, а кто-то скорее изобретатель, чем исследователь, и для них ответ на ваш вопрос будет разным.