[Перевод] Долг знаний

Если вы — программист, то вам приходится учиться очень много. Вспомните свой первый «Hello, World!». У меня это было в четвертом классе. Мы изучали С++, и наш учитель написал программу от руки на доске. Мы использовали Turbo C++, копировали ее на дискету, чтобы экспериментировать дома.


img


В том время я не думал, что Turbo C++ это редактор. Я не думал о нем как об IDE. Для меня Turbo C++ был языком C++. Это был единственный известный мне способ программировать. Я не знал, что значит «компиляция», не знал, зачем нужен #include  в начале файла. Я не понимал, что делает main и что printf может принимать любое количество аргументов. Я просто скопировал программу с доски, нажал Run и увидел вывод на экране.


Это круто. Так и нужно учить программированию. Нужно делать что-то до того когда еще не понимаешь, как это работает. Некоторое время нужно умышленно быть в неведении о деталях. Детали отвлекают.


В итоге, вы вырастете. Вы узнаете, что делает #include когда напишите свою первую «большую» программу. Вы поймете, куда направляется вывод main когда начнете запускать программы из терминала. Вы разберетесь, как работает printf с параметрами когда изучите вариативные функции.


Долг знаний существует не только для школьников, которые делают первые шаги в этом мире. Я кодил на С++ не понимая, как работают shared библиотеки. Я написал веб-приложение до того, как изучил механизм работы веб-сервера под капотом, который обрабатывает запросы. Я программировал для встроенных Linux-систем не зная, как компилировать код для разных целевых платформ. Я написал приложение под Андроид до того, как вник в «application life cycle». Опять же, это круто. Определенно, не нужно знать о мета-классах когда вы пишете первую программу на Питоне (а некоторые скажут, что никогда не нужно знать о мета-классах).


Всё это были мои «долги знаний», когда я уже программировал профессионально. Они позволили мне быстро двигаться вперед и не закапываться в детали. Но долг знаний, как и технический долг, должен быть временным.


Вам нужно намеренно и тактически решить, без какой части информации сейчас можно прожить. Но также нужно намеренно и стратегически решить, когда платить по долгам.

Долг знаний похож на финансовый долг. Это инструмент — нужно использовать его мудро чтобы получить прибыль. Представьте, что вы взялись за свой маленький бизнес. Взять немного в долг в самом начале чтобы заработать больше в будущем это отличное решение. Но, как и с финансовых долгом, нужно понять какие параметры применимы в вашей ситуации. Взять слишком много — опасно, но взять слишком мало — тоже. Также важно решить когда и как возвращать долг. Оставаться в долгу слишком долго — набежит большой процент, но если пытаться платить слишком большими порциями, то это плохо скажется на вашем прогрессе.


Как и с деньгами, долг знаний — не только для новичков. Большие корпорации берут огромные займы. В четвертом классе мне нужно было отложить изучение компиляторов, а сегодня мне нужно отложить изучение внутренней реализации интерпретатора CPython.


Быть программистом значит постоянно учиться.


Если позволять долгу знаний накапливаться, то это может сильно затормозить вашу карьеру и продуктивность. Если у вас есть долг знаний в важной для вас области, то со временем нужно будет прикладывать все больше и больше усилий при написании новых фич, и намного, намного больше усилий при исправлении багов. Чем дольше вы задерживаете возврат долга, тем большую «сумму времени» придется платить.


Если уделять время на понимание внутренностей используемых в работе технологий, то можно работать быстрее, с меньшими усилиями и большей уверенностью в своих профессиональных способностях.

Я считаю, что долг знаний — это то, что отличает средних программистов от крутых программистов. Крутые программисты не останавливаются на незнании; они они также не помешиваются на изучении прямо сейчас. Они находятся в постоянном цикле: взять в долг, заметить это и вернуться к нему в правильный момент.


Определите свои долги знаний сегодня, найдите, что вам нужно понять чтобы стать лучше в своей области. Ищите новые возможности и платите по долгам. Становитесь круче.

Комментарии (4)

  • 16 сентября 2016 в 11:34

    0

    Даж не знаю что сказать. Прочитал текст, полностью состоящий из воды. Просто бесполезная инфа какая-то, даже для начинающих… Это имхо, но всё же.
  • 16 сентября 2016 в 11:37

    0

    >в четвертом классе

    А разве тогда TC уже не был полностью вытеснен BC++? Таким же синеньким :)

    • 16 сентября 2016 в 11:51

      0

      Не везде. Кстати, и сейчас во многих школах QBasic преподают. А ему уж сколько лет…

  • 16 сентября 2016 в 11:47

    0

    Есть какие то базовые принципы, которые со временем очень медленно меняются.
    Есть модные штуки, которые в основном решают мелкие задачи, и еще не доказали своей значимости.
    Я думаю, нежно уделять больше времени первой категории, потому что если уделять много время второй — тогда когда программировать?

© Habrahabr.ru