kamyshev.code
1.86K subscribers
40 photos
565 links
Архитектура, код, софт-скиллы и всё остальное. Вопросы, пожелания, комментарии — @igorkamyshev

https://kamyshev.me
Download Telegram
​​Языки

Люди думают на языке. И чем больше человек знает языков, тем больше разнообразие его способов осмыслить что-то.

Языки программирования тоже определяют мышление программиста. Способ решения задачи сильно зависит от известных специалисту языков.

Только Java? Решение точно будет очень ООПшное. Ну и так далее.

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

#языки
​​Исследуя GitHub

Мне часто нужно читать пулл-реквесты на гитхабе. Это в целом не очень удобно, но отдельно раздражает невозможность переходить по файлам вокруг просматриваемого.

Есть хорошее расширение для хрома, которое избавляет от этой боли — Octotree.

#удобство_разработки
​​Нужная книга

"Программист-прагматик" Дейва Томаса и Энди Ханта — одна из самых полезных книг по программированию, что я читал.

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

#программист_прагматик
​​Иногда приходится ходить на собеседования. И часто там спрашивают ОЧЕНЬ странные вопросы.

Многие люди считают, что на такие вопросы вообще не нужно знать ответов. Мол, незачем знать результат вычисления [] + ''.

Я не согласен. Эти вопросы, конечно, совсем не показывают умений кандидата. Они не должны задаваться на собеседованиях, но сами по себе — полезны. Понимание этих вопросов, умение найти ответ, говорит о достаточно глубоких познаниях в языке.

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

#собеседования
​​Многие команды пренебрегают непрерывной интеграцией (CI). Очень зря.

CI на каждый пулл-реквест запускает набор скриптов, которые как-то проверяют код: тесты, линтеры, статические анализаторы.

Если мы можем делегировать машине какую-то работу (автоматизированная проверка кода, например), то мы должны это сделать. Пусть CI выловит одну ошибку на 100 пулл-реквестов, но зато она обнаружиться до выхода кода на боевой сервер.

Не экономьте на непрерывной интеграции. Пишите тесты, настраивайте линтеры, используйте CI.

#удобство_разработки
​​Бизнес портит все!

CI — это долго и дорого. Часто бизнес в компании против таких трат. Что делать?

Стоит объяснить, что непрерывная интерграция экономит деньги. После однократной настройки, разработчики больше не тратят время на выполнение рутинный процедур. А время разработчиков стоит больше, чем любой CI-сервис.

Плюс это повышает надёжность производимого продукта, что тоже экономит деньги на исправление багов, простои системы, обработку жалоб пользователей.

CI — не серебряная пуля, но очень важен.

#удобство_разработки
​​CI выполняет задачи, которые должны увеличить уверенность в том, что приложение работает правильно.

Самое очевидное, запускать там тесты. В таком случае код, из-за которого падают тесты, не сможет попасть в мастер-ветку.

Но ответственность писать тесты все ещё лежит на программистах.

#удобство_разработки
​​Закончил изчуать Prolog. Это самый странный язык программирования, что я встречал.

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

Программирование на Prolog сконцентрированно на целях, а не на путях их достижения.

#языки