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

https://kamyshev.me
Download Telegram
Самое важное в разработчике

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

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

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

#общие_знания
Нужная книга

Прочел "Теоретический минимум по Computer Science".

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

Глава про базы данных вообще прекрасна.

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

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

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

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

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

#общие_знания
Исследуя GitHub

Некоторое время назад писал о процессе публикации npm-пакета.

Во время поддержки такой флоу, действительно, не требует больших усилий, но при создании нового проекта нужно сделать тысячу вещей, которые следовало бы автоматизировать. Обновление какого-то стандарта — отдельная боль, добавить одно правило линтера в десяток репозиториев — очень неприятно.

Хотелось переложить максимум забот на компьютер, и избежать этой боли. На выходных сделал библиотеку @solid-soda/noscripts, которая содержит в себе все рутинные штуки. Линтер, преттир, генерация новых версий, все там.

Теперь любой проект начинается с установки этой библиотеки.

#автоматизация
Мудрость из книги

Изучать паттерны проектирования полезно. Добрался до купленной осенью книги "Погружение в паттерны проектирвования" Александра Швеца.

Обычно, когда говорят "паттерны проектирования" имеют ввиду работу с исключительно объектно-ориентированными системами, потом книга начинается с краткого введения в ООП.

ООП — методология разработки программ, в которой все важные вещи представляются объектами. Каждый объект построен по определенным правилам, которые называют классом. Классы основываются друг на друге, что называют наследованием.

Конспект книги Александра Швеца "Погружение в паттерны проектирования".

#проектирование
​​Мудрость из книги

Четыре принципа поверх которых строяться объектно-ориентированные приложения:
1. Абстракция — рассмотрения объекта реального мира в контексте конкретной задачи.
2. Инкапсуляция — сокрытие внутренней реализации.
3. Наследование — передача характеристик одних объектов другим через отношение "является" (кот является животным).
4. Полиморфизм — возможность работать с конкретной структорой данных, будто с абстрактной.

Конспект книги Александра Швеца "Погружение в паттерны проектирования".

По мнению Роберта Мартина, ООП не совсем про эти три характеристики, они легко придаются програмам не следующим объектно-ориентированной парадигме.

#проектирование
Мудрость из книги

Один из признаков хорошо спроектированного приложения — переиспользование кода. Это снижает стоимость разработки, повышает надежность (меньше кода — меньше багов). А еще, хорошая архитектура позволяет легко расширять программу.

Конспект книги Александра Швеца "Погружение в паттерны проектирования".

#проектирование
Раньше уже писал примерно о том, что описано во введении, потому — напоминания.
Forwarded from kamyshev.code
​​Проектирование

Полезно понимать, что такое паттерны проектирования.

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

Возникает логичный вопрос, зачем изучать паттерны? Три причины:
+ Проверенные решения. Если кто-то уже решил проблему, то не нужно городить свой велосипед.
+ Стандартизация кода. Другим людям, знающим паттерны, сразу понятно, что написано.
+ Общий программистский словарь. Быстрее сказать коллеге: "Да зафигач сюда адаптер и не парь мозг!", чем "Ну ты сделай класс, который будет превращать интерфейс вот этой штуки в такой, который подходит вот этой штуке."

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

#проектирование