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

https://kamyshev.me
Download Telegram
​​Онлайн-курс

Часто встречаю разработчиков, которые даже близко не представляют как работает компьютер.

Уверен, что это знание сильно помогает писать приложения без удивления.

Отличный бесплатный курс на Stepik. Рассказывают как работает компьютер, немного про ассемблер, как устроены операционные системы.

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

#общие_знания
​​Ссылка

Хекслет — крутые. Недавно они выложили список хороших практик для разработки.

Стоит ознакомиться.

#общие_знания
​​Ссылка

Условные конструкции сложные. Особенно когда они вложенные или множественные.

5 советов по написанию лучших выражений с условными операторами в JavaScript

Правила валидны не только для JS, а вообще для любого языка.

#общие_знания
​​Языки

У данных есть тип. Принципы работы типов в разных языках разные.

Во-первых, в разных языках тип переменной определяется в разное время. Или в момент объявления (статическая типизация), или в момент присваивания значения (динамическая типизация). При статической в переменной нельзя хранить данные разных типов. При динамической можно.

Во-вторых, в разных языках разный механизм приведения типов. Если типы приводятся при любом действии сами — это слабая типизация. Если все приведения должны быть сделаны явно — сильная (строгая) типизация.

#общие_знания
За это время прочитал "97 Things Every Programmer Should Know". Очень плохо. Это сборник советов, которые неплохо смотрелись бы в твиттере или телеграм-канале.

Тратить время смысла совсем нет, лучше пропустить.

#общие_знания
Ссылка

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

Как работать с денежными значениями в JavaScript

#общие_знания
Самое важное в разработчике

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

И потому самое важное качество крутого программиста — умение находить ответы на вопросы. Правильно формулировать вопрос, находить на него ответ, применять его в конкретной задаче.

И таких программистов исчезающе мало. Большая часть не справляется даже с первым этапом — формулировкой вопросов. У меня нет рецепта, как этому научиться, но научиться нужно.

#общие_знания
Программист — дофига творческая профессия. Многим разработчикам трудно работать над проектами, которые им не нравятся.

Важно заметить в себе отвращение к проекту, нежелание писать код и исправить это.

+ Найди челендж в простых задачах. Даже самый простые фичи сделанные качественно требуют усилий.
+ Найти причину грусти и убрать ее. Рецепта нет, нужно пробовать и пытаться.

Ну и есть простой путь — попроситься на другой проект. Лучше сменить проект и приносить деньги, чем получать зарплату и не делать полезного.

#общие_знания
Глубокий JS

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

Чтобы рассказывать о скрытых стороных JS, мы с камрадом @UncleSeneca завели канал — @deep_js

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

#общие_знания
Хорошая практика

В прошлом году гремела статья от инженеров из Хероку о приложениях 12 факторов.

Это отличные советы по построению приложений, прочтите их и жизнь станет проще.

The Twelve-Factor App

#проектирование #общие_знания
Не бойтесь документации

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

Если у вас есть даже небольшой опыт разработки, и вам нужно познакомиться с новым языком, фреймворком или платформой — начните с чтения документации. Просто от начала и до конца. Обычно, это достаточно небольшой объём текста, который, скорее всего, охватывает все важные аспекты и написан специалистами в выбранной области.

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

#общие_знания
​​Алгоритмы

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

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

OTUS запускает курс «Алгоритмы для разработчиков». Научат использовать готовые алгоритмы и проектировать решения на основе базовых подходов , расскажут про оценку сложности и структуры данных. Обратите внимание, для участия в курсе нужно знать Java, C++ или Python.


#общие_знания #алгоритмы #партнерский_материал
Несколько месяцев назад я пришел в Самокат делать внутренние продукты. У таких приложений есть несколько специфичных требований. Первое и самое серьезное — они должны быть блейзинг фаст. Поэтому, при планировании нового приложения я сразу заложил время на работу с перфомансом. Самое очевидное решение — уменьшить время загрузки приложения. Так я заменил React на Preact (фреймворк с совместимым API, но меньшего размера). Не все прошло гладко, но результат отличный.

Многие разработчики бояться брать непопулярный, но подходящий им инструмент. И этот страх, безусловно, оправдан. Непопулярная технология требует времени на ознакомление от новых членов команды, есть опасность потратить много денег/времени на разработку экосистемы. Поэтому, важно найти компромисс. Любая технология, которую вы используете в боевых проектах должна:

- подходить продукту;
- быть простой в освоении или популярной;
- быть поддерживаемой.

Для того, чтобы находить такие технологии, важно смотреть на мир вокруг. Изучать индустрию и смотреть на соседние области.

#softskills #общие_знания
Индивеб — это подход к поведению в интернете, при котором человек остается владельцем контента, который он производит. Например, можно выкладывать посты на личный сайт, а не в телеграм канал. Эта философия интересна не только с точки зрения независимости и безопасности, но и с технической стороны.

Весь декабрь Тим Маринин рассказывал о том как делать инди-сайты. Вчера вышел последний пост и теперь можно прочитать все скопом: 24 дня индивеба — адвент-календарь постов про Индивеб.

#общие_знания
Решения для себя

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

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

#общие_знания
Больше про CAP-теорему

Кстати, про теорему CAP есть отличный подкаст. Там Рахим рассказывает не только о сути, но и приводит простое доказательство.

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

#общие_знания
Машинное обучение

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

Кажется, что иметь хотя бы поверхностные знания полезно. Вот хорошая тематическая статья — Машинное обучение для людей :: Разбираемся простыми словами.

#общие_знания
Прочитал небольшую книгу Naming Things (за пару часов можно управиться). Она не даёт какой-то ультимативно новой информации, но рассматривает именование всего немножко с другой стороны.

Автор связывает именование с контекстами использования, дизайном программы в целом и общением с заказчиком. На мой взгляд, такая связь помогает писать лучший код.

#общие_знания
В IT есть темы, в которых я ничего не понимаю. И самая темная из них — сети. Я очень примерно представляю как работает интернет, но в подробностях всегда теряюсь.

На самом деле, такие базовые вещи важно знать не только админам, которые с этими сетями работают каждый день, а любому специалисту, сталкивающемуся с Интернетом.

Встретил на днях хорошую статью, которая понятно и подробно объясняет все что нужно знать.

Сети для начинающего IT-специалиста. Обязательная база

#общие_знания