Если вы — программист, то вам приходится учиться очень много. Вспомните свой первый "Hello, World!". У меня это было в четвертом классе. Мы изучали С++, и наш учитель написал программу от руки на доске. Мы использовали Turbo C++, копировали ее на дискету, чтобы экспериментировать дома.  В том время я не думал, что Turbo C++ это редактор. Я не думал о нем как об IDE. Для меня Turbo C++ был языком C++. Это был единственный известный мне способ программировать. Я не знал, что значит "компиляция", не знал, зачем нужен #include  в начале файла. Я не понимал, что делает main и что printf может принимать любое количество аргументов. Я просто скопировал программу с доски, нажал Run и увидел вывод на экране. Это круто. Так и нужно учить программированию. Нужно делать что-то до того когда еще не понимаешь, как это работает. Некоторое время нужно умышленно быть в неведении о деталях. Детали отвлекают. В итоге, вы вырастете. Вы узнаете, что делает #include когда напишите свою первую "большую" программу. Вы поймете, куда направляется вывод main когда начнете запускать программы из терминала. Вы разберетесь, как работает printf с параметрами когда изучите вариативные функции. Долг знаний существует не только для школьников, которые делают первые шаги в этом мире. Я кодил на С++ не понимая, как работают shared библиотеки. Я написал веб-приложение до того, как изучил механизм работы веб-сервера под капотом, который обрабатывает запросы. Я программировал для встроенных Linux-систем не зная, как компилировать код для разных целевых платформ. Я написал приложение под Андроид до того, как вник в “application life cycle”. Опять же, это круто. Определенно, не нужно знать о мета-классах когда вы пишете первую программу на Питоне (а некоторые скажут, что никогда не нужно знать о мета-классах).  Всё это были мои "долги знаний", когда я уже программировал профессионально. Они позволили мне быстро двигаться вперед и не закапываться в детали. Но долг знаний, как и технический долг, должен быть временным. Долг знаний похож на финансовый долг. Это инструмент — нужно использовать его мудро чтобы получить прибыль. Представьте, что вы взялись за свой маленький бизнес. Взять немного в долг в самом начале чтобы заработать больше в будущем это отличное решение. Но, как и с финансовых долгом, нужно понять какие параметры применимы в вашей ситуации. Взять слишком много — опасно, но взять слишком мало — тоже. Также важно решить когда и как возвращать долг. Оставаться в долгу слишком долго — набежит большой процент, но если пытаться платить слишком большими порциями, то это плохо скажется на вашем прогрессе. Как и с деньгами, долг знаний — не только для новичков. Большие корпорации берут огромные займы. В четвертом классе мне нужно было отложить изучение компиляторов, а сегодня мне нужно отложить изучение внутренней реализации интерпретатора CPython. Быть программистом значит постоянно учиться.  Если позволять долгу знаний накапливаться, то это может сильно затормозить вашу карьеру и продуктивность. Если у вас есть долг знаний в важной для вас области, то со временем нужно будет прикладывать все больше и больше усилий при написании новых фич, и намного, намного больше усилий при исправлении багов. Чем дольше вы задерживаете возврат долга, тем большую "сумму времени" придется платить. Я считаю, что долг знаний — это то, что отличает средних программистов от крутых программистов. Крутые программисты не останавливаются на незнании; они также не помешиваются на изучении прямо сейчас. Они находятся в постоянном цикле: взять в долг, заметить это и вернуться к нему в правильный момент. Определите свои долги знаний сегодня, найдите, что вам нужно понять чтобы стать лучше в своей области. Ищите новые возможности и платите по долгам. Становитесь круче.