Четыре вещи, которые нужно знать (хорошему) программисту

Всем привет,

Я в последнее время начала более активно интересоваться углублением своего профессионального уровня. И, в том числе, расширением своего кругозора. И в процессе я обнаружила интересные статьи, которые часто публикуют под графой “Надо знать каждому программисту”. Я пока еще продралась не через все – это требует некоторых временных и интеллектуальных усилий – но уже с уверенностью могу сказать, что разобраться в материале однозначно стоит.

Это статьи, которые расширяют кругозор и “затачивают мозг” под определенный стиль мышления, без которого хорошему программисту никак.

Внимание: придется поднапрячься, статьи написаны не самым развлекательным языком! Но в этом и смысл – человек растет профессионально именно выходя из зоны комфорта.

1) Every programmer should know about memory

Это статья больше про железо с процессоры. Но если вам когда-нибудь придется работать с кешированием и памятью (почти наверняка, если вы backend или С++ программист), то это очень полезная статья. Причем полезна она не тем, что вы узнаете какую-то конкретную терминологию вроде TLB, а в том, что в ней объяснено очень много принципов, которые применимы очень много где. Я, например, вижу параллели с довольно многими проектами, над которыми последние пару лет работала наша команда.

В комментариях подсказали, что эта статья есть и на русском.

2) Every programmer should know about unicode

Уже классика от Joel on software. В дополнение хочу сказать, что на интервью нередко попадаются задачи, связанные именно с юникодом.

3) Every programmer should know about floating point numbers (hardcore or easy)

Хардкор мне сложно осилить, например. Где-то к теореме пятой мой мозг начинает медленно плавиться – я уже отвыкла от такого втыкания в формулы, после университета не приходилось. Но я учу себя deliberate practice, а это как раз отличное упражнение, поэтому мне приходится попотеть.

Зато easy – вполне интересное и несложное чтиво.

4) Every programmer should know about latency

Прямо классическая классика. От легендарного программиста даже по гугловым меркам.

——————————————————————————————-

Теперь немного к вопросу – зачем это знать? Вряд ли вам в работе пригодится вот прямо знать, что такое уникод или там как работают числа с плавающей запятой. А если понадобится, вы можете нагуглить, не так ли?

В общем, да и нет. Именно глубинное понимание сути своей области (в нашем случае – computer science) отличает мастера своего дела от просто обычного программиста. Человека, который видит намного шире и глубже одновременно от того, кто просто пишет код. Человека, которые сам понимает куда должен двигаться проект и способен создать что-то по-настоящему крутое от того, который делает что ему сказал шеф. Ну, и так далее по списку, в общем реально крутой спец от просто обычного, имя которым легион.

И качественный скачок на следующий уровень нарабатывается в том числе и сосредоточенным изучением основ. Вдумчивым чтением подобных статей. Это сложно, сосредоточенно думать над задачей вообще сложно. Но это очень важный навык для тех, кто не хочет остаться “просто программистом”.

Кстати, похожий процесс происходит у тех, кто активно готовится к интервью и активно решает задачи. Через несколько месяцев почти все без исключения чувствуют, что стали лучше как профессионалы. Хотя по факту они не выучили ничего такого, что непосредственно нужно использовать в работе – вряд ли многим приходится часто писать на своих проектах всякие хитрые алгоритмы вроде тех, что дают на интервью.