HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><strong>Карьера разработчиков не всегда линейна - для высоких позиций и долгосрочного профессионального роста программиста нужны навыки, которые редко даются с наскока. Рассказываем про нестандартные приемы, которые позволят развить редкие для программиста скиллы.</strong></p>
1 <p><strong>Карьера разработчиков не всегда линейна - для высоких позиций и долгосрочного профессионального роста программиста нужны навыки, которые редко даются с наскока. Рассказываем про нестандартные приемы, которые позволят развить редкие для программиста скиллы.</strong></p>
2 <p><em>Это адаптированный перевод статьи<a>5 Difficult Skills That Pay Off Exponentially in Programming</a>. Повествование ведется от имени автора.</em></p>
2 <p><em>Это адаптированный перевод статьи<a>5 Difficult Skills That Pay Off Exponentially in Programming</a>. Повествование ведется от имени автора.</em></p>
3 <h2>Содержание</h2>
3 <h2>Содержание</h2>
4 <ul><li><a>Что такое долгосрочный рост</a></li>
4 <ul><li><a>Что такое долгосрочный рост</a></li>
5 <li><a>Навык 1. Баловаться с игрушками</a></li>
5 <li><a>Навык 1. Баловаться с игрушками</a></li>
6 <li><a>Навык 2. Бросать себе вызов</a></li>
6 <li><a>Навык 2. Бросать себе вызов</a></li>
7 <li><a>Навык 3. Быть грамотным</a></li>
7 <li><a>Навык 3. Быть грамотным</a></li>
8 <li><a>Навык 4. Уметь публично рассказывать о своей работе</a></li>
8 <li><a>Навык 4. Уметь публично рассказывать о своей работе</a></li>
9 <li><a>Вывод</a></li>
9 <li><a>Вывод</a></li>
10 </ul><h2>Что такое долгосрочный рост</h2>
10 </ul><h2>Что такое долгосрочный рост</h2>
11 <p>Посмотрите на эту диаграмму:</p>
11 <p>Посмотрите на эту диаграмму:</p>
12 <p>Когда мы говорим про долгосрочный рост, то имеем в виду зеленую линию. В этой статье мы расскажем про навыки, которые обеспечивают экспоненциальный профессиональный рост.</p>
12 <p>Когда мы говорим про долгосрочный рост, то имеем в виду зеленую линию. В этой статье мы расскажем про навыки, которые обеспечивают экспоненциальный профессиональный рост.</p>
13 <h2>Навык 1. Баловаться с игрушками</h2>
13 <h2>Навык 1. Баловаться с игрушками</h2>
14 <p>Как тут оказались игрушки? Когда мне было восемь, я разломал свои цифровые часы за доллар и посмотрел, как они работают. У меня ушло два дня, чтобы починить их. Но даже после этого я не мог понять связь между их электронной схемой и цифрами на LCD панели.</p>
14 <p>Как тут оказались игрушки? Когда мне было восемь, я разломал свои цифровые часы за доллар и посмотрел, как они работают. У меня ушло два дня, чтобы починить их. Но даже после этого я не мог понять связь между их электронной схемой и цифрами на LCD панели.</p>
15 <p>Так во мне появилось любопытство - и я подписался на все журналы по электротехнике. Когда я стал разработчиком, этот интерес облегчил мне понимание интерфейсов и архитектуры. При этом мой путь в IT начался именно с интереса к электронике. Даже первая моя работа была в сервисе по ремонту техники, хотя я не надолго там задержался - в итоге я перешел в разработку и занимаюсь этим уже 12 лет.</p>
15 <p>Так во мне появилось любопытство - и я подписался на все журналы по электротехнике. Когда я стал разработчиком, этот интерес облегчил мне понимание интерфейсов и архитектуры. При этом мой путь в IT начался именно с интереса к электронике. Даже первая моя работа была в сервисе по ремонту техники, хотя я не надолго там задержался - в итоге я перешел в разработку и занимаюсь этим уже 12 лет.</p>
16 <p>Я бы получал меньше удовольствия от разработки, если бы тогда, в детстве, не проводил бы столько времени, экспериментируя с простым механизмами. Может быть, даже стал бы одним из этих менеджеров, как многие из моих коллег. Я привык к тому, что одно неверное движение грозит поломкой всей схемы, и это бесстрашие помогает мне в работе инженером.</p>
16 <p>Я бы получал меньше удовольствия от разработки, если бы тогда, в детстве, не проводил бы столько времени, экспериментируя с простым механизмами. Может быть, даже стал бы одним из этих менеджеров, как многие из моих коллег. Я привык к тому, что одно неверное движение грозит поломкой всей схемы, и это бесстрашие помогает мне в работе инженером.</p>
17 <p>При этом не я один заинтересовался программированием благодаря баловству с игрушками.<a>Илон Маск</a>,<a>Джефф Безос</a>,<a>Ларри Пейдж</a>и<a>Стив Джобс</a>тоже разбирали и собирали обратно разные механизмы, когда были детьми.</p>
17 <p>При этом не я один заинтересовался программированием благодаря баловству с игрушками.<a>Илон Маск</a>,<a>Джефф Безос</a>,<a>Ларри Пейдж</a>и<a>Стив Джобс</a>тоже разбирали и собирали обратно разные механизмы, когда были детьми.</p>
18 <p>Такой подход с разбором простых игрушек работает в случае, если выполняются несколько основных требований:</p>
18 <p>Такой подход с разбором простых игрушек работает в случае, если выполняются несколько основных требований:</p>
19 <ul><li>Механизм должен быть самым простым</li>
19 <ul><li>Механизм должен быть самым простым</li>
20 <li>Ваш интерес должен быть естественным</li>
20 <li>Ваш интерес должен быть естественным</li>
21 <li>У вас есть детское любопытство к вещам, которые вы не понимаете</li>
21 <li>У вас есть детское любопытство к вещам, которые вы не понимаете</li>
22 </ul><p>Последний пункт, пожалуй, самый важный. Подход "Сломай что-нибудь, а потом почини" делает из вас творцов и учит решать проблемы. Только такое отношение позволит выжить в диких условиях нашей индустрии. Самое простое - купить небольшую плату Arduino и собрать простую схему с датчиками для начинающих.</p>
22 </ul><p>Последний пункт, пожалуй, самый важный. Подход "Сломай что-нибудь, а потом почини" делает из вас творцов и учит решать проблемы. Только такое отношение позволит выжить в диких условиях нашей индустрии. Самое простое - купить небольшую плату Arduino и собрать простую схему с датчиками для начинающих.</p>
23 <h2>Навык 2. Бросать себе вызов</h2>
23 <h2>Навык 2. Бросать себе вызов</h2>
24 <p>Электротехника разовьет в вас усидчивость, но я предлагаю пойти еще дальше. Привыкайте бросать себе вызовы, это позволит обрести то, что люди называют талантом.</p>
24 <p>Электротехника разовьет в вас усидчивость, но я предлагаю пойти еще дальше. Привыкайте бросать себе вызовы, это позволит обрести то, что люди называют талантом.</p>
25 <blockquote><p>"Что значит бросать себе вызовы? Это значит делать больше, чем от тебя просят. Всегда будь на один шаг впереди"</p>
25 <blockquote><p>"Что значит бросать себе вызовы? Это значит делать больше, чем от тебя просят. Всегда будь на один шаг впереди"</p>
26 </blockquote><p>Вызов - это не просто задачки на знание алгоритмов, хотя конечно их тоже бывает нелегко решать. Делать упор на решение задач по алгоритмам - это просто непрактично. Если вам все же очень нравятся такие задачи, то вас ожидает прямая дорога в компании FAAMG+.</p>
26 </blockquote><p>Вызов - это не просто задачки на знание алгоритмов, хотя конечно их тоже бывает нелегко решать. Делать упор на решение задач по алгоритмам - это просто непрактично. Если вам все же очень нравятся такие задачи, то вас ожидает прямая дорога в компании FAAMG+.</p>
27 <p>Еще к вызовам не относится исправление проблем. Вызов - это проактивность, то есть эта история скорее про инициативу, а не про исправление своих же косяков и проблем. Инициатива - это когда вы делаете шаг вперед и берете на себя ответственность даже тогда, когда никто этого не просил.</p>
27 <p>Еще к вызовам не относится исправление проблем. Вызов - это проактивность, то есть эта история скорее про инициативу, а не про исправление своих же косяков и проблем. Инициатива - это когда вы делаете шаг вперед и берете на себя ответственность даже тогда, когда никто этого не просил.</p>
28 <p>Вот практический пример. Допустим, вы написали функцию, которая читает переменные из файла конфигурации. Файл конфигурации известен заранее и не будет меняться, он называется myfile.config. Поэтому мы укажем имя файла в теле кода (это называется хардкод, то есть код, завязанный на конкретные данные). Вот как будет выглядеть интерфейс такой функции:</p>
28 <p>Вот практический пример. Допустим, вы написали функцию, которая читает переменные из файла конфигурации. Файл конфигурации известен заранее и не будет меняться, он называется myfile.config. Поэтому мы укажем имя файла в теле кода (это называется хардкод, то есть код, завязанный на конкретные данные). Вот как будет выглядеть интерфейс такой функции:</p>
29 <p>func readParams()</p>
29 <p>func readParams()</p>
30 <p>Как бросить себе вызов? Ну, вы могли бы изменить функцию так, чтобы она могла принимать первым параметром имя файла конфигурации. Код было бы проще читать и менять. Мы можем просто указать имя myfile.config как значение по умолчанию.</p>
30 <p>Как бросить себе вызов? Ну, вы могли бы изменить функцию так, чтобы она могла принимать первым параметром имя файла конфигурации. Код было бы проще читать и менять. Мы можем просто указать имя myfile.config как значение по умолчанию.</p>
31 <p>func readParams(filename: String="myfile.config")</p>
31 <p>func readParams(filename: String="myfile.config")</p>
32 <p>Вот сколько всего надо учесть после этой маленькой перемены:</p>
32 <p>Вот сколько всего надо учесть после этой маленькой перемены:</p>
33 <ul><li>Во время жизни программы конечный пользователь или клиентский программист могут изменить файл конфигурации. Это приведет к перезагрузке исполняемого кода. Так что надо оптимизировать код так, чтобы файл конфигурации действительно можно было менять. Например, реализовать инкапсуляцию.</li>
33 <ul><li>Во время жизни программы конечный пользователь или клиентский программист могут изменить файл конфигурации. Это приведет к перезагрузке исполняемого кода. Так что надо оптимизировать код так, чтобы файл конфигурации действительно можно было менять. Например, реализовать инкапсуляцию.</li>
34 <li>Если исходить из предположения, что файл конфигурации относится к пользователю, то возникает вероятность того, что пользователей у нас несколько, но устанавливают они одно и то же приложение.</li>
34 <li>Если исходить из предположения, что файл конфигурации относится к пользователю, то возникает вероятность того, что пользователей у нас несколько, но устанавливают они одно и то же приложение.</li>
35 <li>И не забываем про функцию экспорта export(). Она экспортирует на диск, сеть, на сторонний сервис обмена сообщениями (на почту, например). Можно импортировать функцию так: readParams(). Тогда приложение становится переносимым (portable) между машинами. Переносимость = Выше ценностное предложение (value proposition) = Бóльшая, более надежная клиентская база.</li>
35 <li>И не забываем про функцию экспорта export(). Она экспортирует на диск, сеть, на сторонний сервис обмена сообщениями (на почту, например). Можно импортировать функцию так: readParams(). Тогда приложение становится переносимым (portable) между машинами. Переносимость = Выше ценностное предложение (value proposition) = Бóльшая, более надежная клиентская база.</li>
36 </ul><p>Если вы не приняли этот вызов и написали код как в первом варианте - никто вас за это не съест. И новые баги из-за этого тоже не появится. Но представьте ситуацию: пользователям очень понравилось такое приложение, они поставили пробной версии пять звезд и жаждут продолжения. Но если не добавить функционал из второго варианта, то они вряд ли купят полную версию.</p>
36 </ul><p>Если вы не приняли этот вызов и написали код как в первом варианте - никто вас за это не съест. И новые баги из-за этого тоже не появится. Но представьте ситуацию: пользователям очень понравилось такое приложение, они поставили пробной версии пять звезд и жаждут продолжения. Но если не добавить функционал из второго варианта, то они вряд ли купят полную версию.</p>
37 <p>Так что теперь вас приперли к стене и пути назад уже нет. Тем более, что вот сейчас делать рефакторинг и дебажить будет ух как больно - возникнет множество пограничных случаев. Но и вводить версию номер два сейчас одному будет очень тяжело. Поэтому надо было принять вызов еще тогда, когда было подходящее для него время.</p>
37 <p>Так что теперь вас приперли к стене и пути назад уже нет. Тем более, что вот сейчас делать рефакторинг и дебажить будет ух как больно - возникнет множество пограничных случаев. Но и вводить версию номер два сейчас одному будет очень тяжело. Поэтому надо было принять вызов еще тогда, когда было подходящее для него время.</p>
38 <p>Принять вызов - это значит быть амбициозным, вне зависимости от того, о какой отрасли идет речь. Амбициозный программист бросает себе вызов вместо того, чтобы устраивать офисные игры в борьбе за красивую должность. Недаром многие компании обязаны своим успехом именно главному инженеру (технический директор, англ. CTO), а не кому-то с должностью покруче.</p>
38 <p>Принять вызов - это значит быть амбициозным, вне зависимости от того, о какой отрасли идет речь. Амбициозный программист бросает себе вызов вместо того, чтобы устраивать офисные игры в борьбе за красивую должность. Недаром многие компании обязаны своим успехом именно главному инженеру (технический директор, англ. CTO), а не кому-то с должностью покруче.</p>
39 <p>Возможно вы не чувствуете себя амбициозным, принимая вызов. Возможно вы чувствуете только значительное замедление в работе. Не переживайте по этому поводу - каждый учится со своей собственной скоростью, главное - понемногу совершенствоваться даже в самой рутинной работе.</p>
39 <p>Возможно вы не чувствуете себя амбициозным, принимая вызов. Возможно вы чувствуете только значительное замедление в работе. Не переживайте по этому поводу - каждый учится со своей собственной скоростью, главное - понемногу совершенствоваться даже в самой рутинной работе.</p>
40 <p>Ну и хватит восхищаться тем парнем, который пишет код быстрее и сложнее. Он пишет код лучше вас только потому, что у него есть опыт - и он написал тонну плохого кода в прошлом. У вас тоже опыт со временем появится.</p>
40 <p>Ну и хватит восхищаться тем парнем, который пишет код быстрее и сложнее. Он пишет код лучше вас только потому, что у него есть опыт - и он написал тонну плохого кода в прошлом. У вас тоже опыт со временем появится.</p>
41 <h2>Навык 3. Быть грамотным</h2>
41 <h2>Навык 3. Быть грамотным</h2>
42 <p>Годами эксперты говорили: правая и левая лобные доли отвечают за разные функции. Одна половина мозга для точных наук, другая - для гуманитарных. Но сейчас нам известно, что<a>это не так</a>. Да это и не важно, а важно вот что: если вы не знаете грамматику, вы не можете программировать. И я не про словарный запас говорю, а именно про грамматику.</p>
42 <p>Годами эксперты говорили: правая и левая лобные доли отвечают за разные функции. Одна половина мозга для точных наук, другая - для гуманитарных. Но сейчас нам известно, что<a>это не так</a>. Да это и не важно, а важно вот что: если вы не знаете грамматику, вы не можете программировать. И я не про словарный запас говорю, а именно про грамматику.</p>
43 <p>Если вы хорошо понимаете правила грамматики (<a>особенно английской</a>), то вам легче распознавать повторяющиеся паттерны. Благодаря этому работа со старым кодом или новыми фреймфорками становится проще пареной репы. Вы можете понять, что делает код, просто взглянув на интерфейс, и даже документацию открывать не надо. Функции типа isFinished или willRefresh станут понятны благодаря одному своему названию.</p>
43 <p>Если вы хорошо понимаете правила грамматики (<a>особенно английской</a>), то вам легче распознавать повторяющиеся паттерны. Благодаря этому работа со старым кодом или новыми фреймфорками становится проще пареной репы. Вы можете понять, что делает код, просто взглянув на интерфейс, и даже документацию открывать не надо. Функции типа isFinished или willRefresh станут понятны благодаря одному своему названию.</p>
44 - <p>В высшей лиге никуда без<a>правильного именования переменных и функций</a>. Почти все крупные компании строят целый культ вокруг именования, но если вы знаете правила грамматики, это для вас не станет проблемой.</p>
44 + <p>В высшей лиге никуда без<a>правильного именования переменных и функций</a>. Почти все крупные компании строят целый культ вокуг именования, но если вы знаете правила грамматики, это для вас не станет проблемой.</p>
45 <blockquote><p>"В информатике есть только две сложных вещи: инвалидация кэша и придумывание названий" - Фил Карлтон</p>
45 <blockquote><p>"В информатике есть только две сложных вещи: инвалидация кэша и придумывание названий" - Фил Карлтон</p>
46 </blockquote><p>Хорошее знание грамматики - это не только бонус к продуктивности, но также и гарантия того, что ваш код будет читабельным. А еще грамматика позволяет программисту писать отличные спецификации и точно описывать баги. Все это экономит на ревью огромное количество времени.</p>
46 </blockquote><p>Хорошее знание грамматики - это не только бонус к продуктивности, но также и гарантия того, что ваш код будет читабельным. А еще грамматика позволяет программисту писать отличные спецификации и точно описывать баги. Все это экономит на ревью огромное количество времени.</p>
47 <p>Забагованный код с превосходной грамматикой будет понятнее, чем рабочий код с плохой грамматикой. Так что понятно, почему некоторые команды работают очень медленно, хотя разработчики в них сильные.</p>
47 <p>Забагованный код с превосходной грамматикой будет понятнее, чем рабочий код с плохой грамматикой. Так что понятно, почему некоторые команды работают очень медленно, хотя разработчики в них сильные.</p>
48 <p>Так что не ждите,<a>начните изучать грамматику английского языка сейчас</a>. Вы станете самым мозговитым и коммуникабельным человеком в компании.</p>
48 <p>Так что не ждите,<a>начните изучать грамматику английского языка сейчас</a>. Вы станете самым мозговитым и коммуникабельным человеком в компании.</p>
49 <h2>Навык 4. Уметь публично рассказывать о своей работе</h2>
49 <h2>Навык 4. Уметь публично рассказывать о своей работе</h2>
50 <p>Когда дело касается процесса работы, то программисты общаются не очень то много - либо обмениваются хардовыми терминами, либо молча пишут код.</p>
50 <p>Когда дело касается процесса работы, то программисты общаются не очень то много - либо обмениваются хардовыми терминами, либо молча пишут код.</p>
51 <p>Программирование стоит на стыке бизнеса и технологий. А программист - это все же источник технических знаний, знания о бизнесе он получает от других. При этом бизнес и технологии пересекаются в одной точке, и эта точка - презентации, где разные стороны рассказывают про свои аспекты работы.</p>
51 <p>Программирование стоит на стыке бизнеса и технологий. А программист - это все же источник технических знаний, знания о бизнесе он получает от других. При этом бизнес и технологии пересекаются в одной точке, и эта точка - презентации, где разные стороны рассказывают про свои аспекты работы.</p>
52 <p>Часто программисты не умеют рассказывать о себе и своей работе. Вот пример из реального опыта - в нем обсуждаются сценарии входа пользователя на сайт по логину. Я перескажу два сценария, которые описывали разные программисты:</p>
52 <p>Часто программисты не умеют рассказывать о себе и своей работе. Вот пример из реального опыта - в нем обсуждаются сценарии входа пользователя на сайт по логину. Я перескажу два сценария, которые описывали разные программисты:</p>
53 <p><strong>Программист А:</strong></p>
53 <p><strong>Программист А:</strong></p>
54 <p>Пользователь переходит на страницу входа. Он вводит логин и пароль, нажимает кнопку<strong>Войти</strong>. Если он введет символы #, &amp; или *, то произойдет ошибка входа. Пользователь останется на этой же странице. После этого, если пользователь ввел корректные данные, то фронтенд-часть отправит<a>API</a>-запрос. Еще раз, пароль должен быть хэширован. Потом API сравнивает хэш пароля с тем, что есть в БД. Если имя пользователя не найдено в базе, то пароль проверяться не будет, поэтому сначала проверяется имя пользователя. А если и то, и другое совпадают, то код удовлетворения запроса возвращается из фронтенда. Если нет, то возвращается ошибка 401. Если вернулось одобрение, то пользователя перенаправляют на страницу с профилем. А еще запрошен<a>токен</a>и он будет валиден две недели.</p>
54 <p>Пользователь переходит на страницу входа. Он вводит логин и пароль, нажимает кнопку<strong>Войти</strong>. Если он введет символы #, &amp; или *, то произойдет ошибка входа. Пользователь останется на этой же странице. После этого, если пользователь ввел корректные данные, то фронтенд-часть отправит<a>API</a>-запрос. Еще раз, пароль должен быть хэширован. Потом API сравнивает хэш пароля с тем, что есть в БД. Если имя пользователя не найдено в базе, то пароль проверяться не будет, поэтому сначала проверяется имя пользователя. А если и то, и другое совпадают, то код удовлетворения запроса возвращается из фронтенда. Если нет, то возвращается ошибка 401. Если вернулось одобрение, то пользователя перенаправляют на страницу с профилем. А еще запрошен<a>токен</a>и он будет валиден две недели.</p>
55 <p><strong>Программист Б:</strong></p>
55 <p><strong>Программист Б:</strong></p>
56 <p>(После каждого пункта выступающий делает паузу. Там, где текст выделен жирным, он делает акцент при помощи тона голоса):</p>
56 <p>(После каждого пункта выступающий делает паузу. Там, где текст выделен жирным, он делает акцент при помощи тона голоса):</p>
57 <ul><li>У нас есть два процесса. Первый - это<strong>фронтенд</strong>, второй - это<strong>бэкенд и API</strong>(рисует на доске два квадрата)</li>
57 <ul><li>У нас есть два процесса. Первый - это<strong>фронтенд</strong>, второй - это<strong>бэкенд и API</strong>(рисует на доске два квадрата)</li>
58 <li>Оба общаются через запрос по сети HTTP (соединил квадраты стрелочками)</li>
58 <li>Оба общаются через запрос по сети HTTP (соединил квадраты стрелочками)</li>
59 <li>Фронтенд-часть должна принять данные от пользователя и проверить, валидны ли они</li>
59 <li>Фронтенд-часть должна принять данные от пользователя и проверить, валидны ли они</li>
60 <li>Бэкенд-часть должна<strong>проверить</strong>, совпадают ли данные от пользователя с данными в базе данных. Она проверяет, верен ли хэш пароля</li>
60 <li>Бэкенд-часть должна<strong>проверить</strong>, совпадают ли данные от пользователя с данными в базе данных. Она проверяет, верен ли хэш пароля</li>
61 <li><strong>И самое главное</strong>: Если ответ от бэкенда положительный, фронтенд получает токен, который действителен две недели. В течение этого срока пользователь сразу будет перенаправляться на страницу профиля. Логика проверки токена, очевидно, запускается<strong>до</strong>логики страницы входа</li>
61 <li><strong>И самое главное</strong>: Если ответ от бэкенда положительный, фронтенд получает токен, который действителен две недели. В течение этого срока пользователь сразу будет перенаправляться на страницу профиля. Логика проверки токена, очевидно, запускается<strong>до</strong>логики страницы входа</li>
62 <li>Вы можете посмотреть подробности запроса к API в документе, который я уже всем разослал/залил на облако.</li>
62 <li>Вы можете посмотреть подробности запроса к API в документе, который я уже всем разослал/залил на облако.</li>
63 </ul><p><em>(в этот момент на доске множество стрелочек, и каждая стрелочка пронумерована)</em></p>
63 </ul><p><em>(в этот момент на доске множество стрелочек, и каждая стрелочка пронумерована)</em></p>
64 <p>Чья презентация более успешна?<strong>Программист А</strong>может на 100% понимать, что происходит в коде, но ему определенно не удалось донести идею. Слушатели замучаются слушать его путанную речь и лишние подробности (например, про коды статуса HTTP).<strong>Программист Б</strong>- захватил и удержал внимание аудитории, а для любопытных составил документ с подробностями.</p>
64 <p>Чья презентация более успешна?<strong>Программист А</strong>может на 100% понимать, что происходит в коде, но ему определенно не удалось донести идею. Слушатели замучаются слушать его путанную речь и лишние подробности (например, про коды статуса HTTP).<strong>Программист Б</strong>- захватил и удержал внимание аудитории, а для любопытных составил документ с подробностями.</p>
65 <p>Большинство программистов идут по пути первого нашего разработчика - они не умеют красиво и подробно рассказывать о своих рабочих процессах. При этом презентация - очень важный навык, без которого невозможно профессионально расти.</p>
65 <p>Большинство программистов идут по пути первого нашего разработчика - они не умеют красиво и подробно рассказывать о своих рабочих процессах. При этом презентация - очень важный навык, без которого невозможно профессионально расти.</p>
66 <h2>Вывод</h2>
66 <h2>Вывод</h2>
67 <p>Есть несколько типов программистов. Один тип считает информатику абстрактной наукой, поскольку она категорирует вещи из реального мира, а потом создает из них автоматизированные системы. И если что-то не получается, программисты этого типа не проводят бессонных ночей, сравнивая фреймворк 1 с фреймворком 2. Вместо этого такой программист сам создает инструмент, которого ему не хватает. Как видите, здесь нет места вопросам о продуктивности.</p>
67 <p>Есть несколько типов программистов. Один тип считает информатику абстрактной наукой, поскольку она категорирует вещи из реального мира, а потом создает из них автоматизированные системы. И если что-то не получается, программисты этого типа не проводят бессонных ночей, сравнивая фреймворк 1 с фреймворком 2. Вместо этого такой программист сам создает инструмент, которого ему не хватает. Как видите, здесь нет места вопросам о продуктивности.</p>
68 <p>Есть и другой тип программистов. Они воспринимают код как место, где можно соревноваться в продуктивности. Их девиз это:<em>"Написал больше кода - выполнил больше тикетов"</em>. Такие программисты думают, что достичь вершин можно, бесконечно копируя код мастеров. Также они верят, что рецепт успеха - это побольше практики.</p>
68 <p>Есть и другой тип программистов. Они воспринимают код как место, где можно соревноваться в продуктивности. Их девиз это:<em>"Написал больше кода - выполнил больше тикетов"</em>. Такие программисты думают, что достичь вершин можно, бесконечно копируя код мастеров. Также они верят, что рецепт успеха - это побольше практики.</p>
69 <p>Как это обычно и бывает, правда лежит где-то посередине между противоположными точками зрения. Естественно, программисту требуется ясность ума и широкий набор навыков. Также верно и то, что нельзя научиться писать код без того, чтобы просто писать код. И все же один подход не может существовать без другого.</p>
69 <p>Как это обычно и бывает, правда лежит где-то посередине между противоположными точками зрения. Естественно, программисту требуется ясность ума и широкий набор навыков. Также верно и то, что нельзя научиться писать код без того, чтобы просто писать код. И все же один подход не может существовать без другого.</p>
70 <p>Надеюсь, я показал эту истину в своей статье. Перечисленные мной четыре навыка сделают вас востребованным специалистом вне зависимости от стека. На их освоение может понадобится много времени, но когда вы их освоите, ваш рост станет экспоненциальным.</p>
70 <p>Надеюсь, я показал эту истину в своей статье. Перечисленные мной четыре навыка сделают вас востребованным специалистом вне зависимости от стека. На их освоение может понадобится много времени, но когда вы их освоите, ваш рост станет экспоненциальным.</p>