You Can Do Better

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

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

Здесь нет определенного порядка, просто все, что у меня в голове, в одном списке.

Создайте свой собственный продукт. Учиться программировать и на самом деле программировать - это не одно и то же. Лучший и единственно правильный способ учиться - это “делать”. Лучший способ это сделать - создать что-то значимое и важное. Если это будет ваш собственный продукт, то еще лучше. Если кто-то заплатит вам за это - вообще замечательно. Каждый раз, когда я хочу научиться чему-то новому, я ставлю перед собой реалистичную цель и пытаюсь ее достичь. Несколько лет назад меня заинтересовал Python. Вместо того, чтобы ходить на онлайн-курсы или читать книги, я попытался создать небольшое веб-приложение для маркетинговых целей. В то время я знал Java, но написал это приложение на Python. Моя рекомендация: никогда не изучайте что-то академически, всегда делайте что-то реальное с использованием стека технологий, которые вы хотите изучить.

Меняйте языки программирования. Не застревайте на одном стеке технологий, как бы сильно вы его не любили. Конечно, вы не хотите быть “мастером на все руки”, так как они плохо платят. Вы хотите быть специалистом. Но “одной специализации” в жизни недостаточно. Я меняю языки каждые 4-6 лет. Я начал с Pascal, затем был C++, затем Java, затем PHP (да, вы не ослышались, я ZCE/ZFCE), затем снова Java, а теперь Ruby.

Проходите полный цикл разработки. Написание кода, который “работает на вашем ноутбуке”, - это большое достижение… для начинающего программиста. Старший разработчик знает, что это только часть работы. Меньшая часть. Большая часть заключается в том, чтобы превратить ваш “работающий” код в готовый к выходу на рынок продукт, что включает слияние и автоматическое тестирование, компиляцию и упаковку для разных платформ, стадийное и приемочное тестирование, сообщение об ошибках, сбор метрик, A/B-тестирование, стресс-тестирование, развертывание в продакшн и даже отчетность перед инвесторами. Современный жизненный цикл разработки программного обеспечения - это огромное шоу. Вы знаете, как это все работает? Нет? Вам все равно? Вы не являетесь старшим разработчиком.

Откройте свои исходники. Как я уже говорил в своем докладе На сколько ярко ваше будущее? на RigaDevDays, будущее программного обеспечения почти полностью будет основано на открытом исходном коде. Количество кода, которое компании держат в собственности, с каждым годом уменьшается. Если вы хотите быть успешным, вам нужно стать сторонником открытого исходного кода. Если вы все еще боитесь или у вас нет времени, пересмотрите свое отношение. Написание кода для себя и для ваших коллег по офису и написание его для нескольких тысяч анонимных хулиганов на GitHub - это две совершенно разные истории. Вам понадобится время, чтобы освоиться в этой дикой области. У меня на это ушло более трех лет. Не ждите, начинайте сейчас.

Тестируйте все. Если быть честным, то почти все, что я узнал о качестве программного обеспечения, я обязан болезненным часам написания модульных тестов, моков, фикстур, заглушек, интеграционных тестов и так далее. Я искренне верю, что профессиональный программист тратит больше времени на создание автоматизированных тестов, чем на написание кода для продакшна. Поэтому я бы порекомендовал вам сосредоточиться на тестировании, если вы хотите стать лучшим инженером. Начните с отличной книги Рост объектно-ориентированного программного обеспечения, руководство по тестированию Стива Фримена и Нэта Приса и установите себе правило: каждая строка кода, о которой вы хоть немного сомневаетесь, должна быть подтверждена тестом.

Статический анализ. Ну, половину моих знаний о качестве программного обеспечения я обязан статическим анализаторам. Я научился гораздо больше от Checkstyle и PMD чем от всех книг по Java, которые я когда-либо читал. Каждый раз, когда я изучаю новый язык программирования, я начинаю с настройки самого строгого статического анализатора, который только могу найти, и затем слушаю его замечания. Я рекомендую вам поступить так же. Слушайте свои инструменты и убедитесь, что ваш код полностью соответствует их ожиданиям качества. Не просто используйте их как советчиков, но установите себе правило: никогда не коммитьте ничего, что не проходит полностью все статические анализаторы.

Унижайтесь на Stack Overflow. Роберт Шекли сказал: “чтобы задать вопрос, вы уже должны знать большую часть ответа”. Друзья, онлайн-чаты и разговоры на кухне в офисе - отличные места, чтобы получить помощ

Следите за ключевыми людьми. Я имею в виду Twitter (я @yegor256), Facebook (здесь я), Telegram (мой канал), Instagram (нажмите здесь чтобы подписаться на меня) и, конечно же, GitHub (я @yegor256). Что нового вы можете услышать от меня? Вероятно, не так много, но вы сможете понять, что происходит в моей профессиональной жизни, куда я двигаюсь, что я читаю, что я пишу и т.д. Кого я следую? Всех авторов всех книг, которые мне нравятся, всех блогеров, которых я когда-либо с удовольствием читал, всех спикеров, которых я смотрел с удовольствием, ключевых общественных деятелей и политиков, независимо от того, согласен я с ними или нет. Я считаю, что вы должны сделать то же самое, чтобы быть информированным о тенденциях.

Подсматривайте. Регулярно проверяйте Hacker News, /programming Reddit и, возможно, Changelog. Все, что вам нужно прочитать, в основном находится здесь. Несколько раз в неделю. Просто прокручивайте то, что сейчас актуально, и двигайтесь дальше. Сделает ли это вас лучшим программистом? Вряд ли. Поможет ли это вашей карьере и вашей жизни? Определенно. Вы никогда не знаете, что придет и где появится следующая возможность. Мне до сих пор жаль, что я недостаточно обратил внимание на объявление о Bitcoin на HN много лет назад.

Посещайте конференции и митапы. Идеально, как спикер. В противном случае, хотя бы раз в месяц как слушатель. Вы научитесь чему-то новому? Я не думаю. Но вы обязательно будете мотивировать себя, встречаясь с самыми активными и мотивированными людьми в индустрии, включая спикеров и других слушателей. Большинство компаний будет готово спонсировать ваши билеты. Две большие конференции в год будет достаточно. Остальное время посещайте местные митапы, вы можете найти их на meetup.com.

Вот и все. Надеюсь, этот список поможет вам.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 14:06

sixnines availability badge   GitHub stars