прикольно следить по книгам Мартина его путь из программиста к аджайл коучу
Forwarded from Physics.Math.Code
6_книг_по_программированию_от_автора_Роберт_Мартин.zip
46.9 MB
📒 Идеальный программист. Как стать профессионалом разработки ПО [2012] Роберт Мартин
Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования. Эта книга - больше, чем описание методов, она о профессиональном подходе к процессу разработки.
📒 Чистая архитектура [2021] Роберт Мартин
«Чистая архитектура» продолжает книги «Идеальный программист» и «Чистый код», но не предлагает несколько вариантов в стиле «решай сам», а объясняет, что именно следует делать, по какой причине и почему именно такое решение станет принципиально важным для вашего успеха.
📒 Чистый код создание, анализ и рефакторинг [2019] Роберт Мартин
Плохой код может работать, но он будет мешать развитию проекта и компании-разработчика, требуя дополнительные ресурсы на поддержку и «укрощение». Каким же должен быть код? Вы узнаете много нового о коде. Более того, научитесь отличать хороший код от плохого.
📒 Идеальная работа. Программирование без прикрас [2022] Мартин Роберт
В книге «Идеальная работа. Программирование без прикрас» легендарный Роберт Мартин (Дядюшка Боб) создал исчерпывающее руководство по хорошей работе для каждого программиста.
📒 Чистый Agile. Основы гибкости [2020] Роберт Мартин
«Чистый Agile» устраняет недопонимание и путаницу, которые за годы существования Agile усложнили его применение по сравнению с изначальным замыслом.
📙 97 этюдов для программистов. Опыт ведущих экспертов [2012] Пит Гудлиф, Роберт Мартин, Диомидис Спинеллис, Кевлин Хенни
97 кратких и очень полезных советов повысят ваш профессионализм посредством новых подходов к старым проблемам, лучших практик и разумных подсказок, предназначенных для оттачивания мастерства.
Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования. Эта книга - больше, чем описание методов, она о профессиональном подходе к процессу разработки.
📒 Чистая архитектура [2021] Роберт Мартин
«Чистая архитектура» продолжает книги «Идеальный программист» и «Чистый код», но не предлагает несколько вариантов в стиле «решай сам», а объясняет, что именно следует делать, по какой причине и почему именно такое решение станет принципиально важным для вашего успеха.
📒 Чистый код создание, анализ и рефакторинг [2019] Роберт Мартин
Плохой код может работать, но он будет мешать развитию проекта и компании-разработчика, требуя дополнительные ресурсы на поддержку и «укрощение». Каким же должен быть код? Вы узнаете много нового о коде. Более того, научитесь отличать хороший код от плохого.
📒 Идеальная работа. Программирование без прикрас [2022] Мартин Роберт
В книге «Идеальная работа. Программирование без прикрас» легендарный Роберт Мартин (Дядюшка Боб) создал исчерпывающее руководство по хорошей работе для каждого программиста.
📒 Чистый Agile. Основы гибкости [2020] Роберт Мартин
«Чистый Agile» устраняет недопонимание и путаницу, которые за годы существования Agile усложнили его применение по сравнению с изначальным замыслом.
📙 97 этюдов для программистов. Опыт ведущих экспертов [2012] Пит Гудлиф, Роберт Мартин, Диомидис Спинеллис, Кевлин Хенни
97 кратких и очень полезных советов повысят ваш профессионализм посредством новых подходов к старым проблемам, лучших практик и разумных подсказок, предназначенных для оттачивания мастерства.
🔥5😐3👍2
Процесс обучение — это такой же навык. Начав много лет изучение одних языков я бы дал себе советы, что быстрее бы меня забустили.
1. Программировать — это навык. Пример с футболом хорошо говорит, что смотреть как пишут код и писать самому — это разные вещи. 10 минут кодинга лучше, чем 10 минут смотреть как другой кодит.
2. Изучаем computer sience. Да-да, опять. Алгоритмы, Операционки, Многопоточность, паттерны.
3. В начале пути важна мотивация. Ее легче брать не у умных челов, а у прикольных. Ищем тех, кого приятно слушать, а тех, кто говорит неприятно, но умно — пересматриваем позже (привет "атомные привычки")
4. Пишите велосипеды.
https://www.youtube.com/watch?v=4kZjw4vKxTM
1. Программировать — это навык. Пример с футболом хорошо говорит, что смотреть как пишут код и писать самому — это разные вещи. 10 минут кодинга лучше, чем 10 минут смотреть как другой кодит.
2. Изучаем computer sience. Да-да, опять. Алгоритмы, Операционки, Многопоточность, паттерны.
3. В начале пути важна мотивация. Ее легче брать не у умных челов, а у прикольных. Ищем тех, кого приятно слушать, а тех, кто говорит неприятно, но умно — пересматриваем позже (привет "атомные привычки")
4. Пишите велосипеды.
https://www.youtube.com/watch?v=4kZjw4vKxTM
YouTube
Как бы я начал учить кодинг сейчас?
Получи профессию python-разработчика с нуля в SkillFactory:
https://go.skillfactory.ru/i0v43A
Скидка 45% по промокоду WINDERTON до 30.09.2022 г
Yo, рассказываю вам историю своего пути, и на этом фоне в формате гайд-лайна, говорю о том, чтобы изменил, если…
https://go.skillfactory.ru/i0v43A
Скидка 45% по промокоду WINDERTON до 30.09.2022 г
Yo, рассказываю вам историю своего пути, и на этом фоне в формате гайд-лайна, говорю о том, чтобы изменил, если…
👍7
В авито, как и везде, чтобы развиваться нужно брать больше ответственности. Только это у нас зафиксированно черным на белом в карьерной лестнице. Называется — фичадрайвинг. Подробнее можете почитать у моего тимлида.
Тут мне нужна помощь зала. Кто знает хорошие книги или курсы по ведению задача? Как фиксировать, ресерчить, анализировать и нести инфу понятную как бизнесу, так и команде
У меня есть опыт, но хочется чего-то структурного и академического
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Product Developer
Feature Leader — роль в команде разработчиков
Бывает вот такое, что разработчик считает фичу «своей». Не в плане того, что только он её кодит, а в плане ментальной принадлежности. Всячески её прорабатывает вместе с продактом, лидирует проработку-разработку…
Бывает вот такое, что разработчик считает фичу «своей». Не в плане того, что только он её кодит, а в плане ментальной принадлежности. Всячески её прорабатывает вместе с продактом, лидирует проработку-разработку…
🤔2
"Лидер и племя"
Вода: 20%
Полезность: 4 племен из 5
Почти дослушал эту книгу пока ездил на работу и обратно. Ну что скажу.
Эта книга входит в топ 100 от Грефа и рекомендаций СберБиблиотеки. Её выбрал, когда выиграл нэйминг платформенной команды в СберЗдоровье. Но так и не забрал ✈️
Я не скажу, что хочу быть лидером, но работать с племенами нам всем необходимо. Даже закопавшись в онли технаря и обходя стороной менеджмент приходится питчить людям свои идеи. Продать идеи и сделать полезное сложно, если твоя команда не вовлечена, токсичит и ее душат комплексы + культура.
Отличная обучалка сформулировать какая команда будет перформить, а какая будет племенем обезьян, кидающих в друг друга какашки
#books
Вода: 20%
Полезность: 4 племен из 5
Почти дослушал эту книгу пока ездил на работу и обратно. Ну что скажу.
Эта книга входит в топ 100 от Грефа и рекомендаций СберБиблиотеки. Её выбрал, когда выиграл нэйминг платформенной команды в СберЗдоровье. Но так и не забрал ✈️
Я не скажу, что хочу быть лидером, но работать с племенами нам всем необходимо. Даже закопавшись в онли технаря и обходя стороной менеджмент приходится питчить людям свои идеи. Продать идеи и сделать полезное сложно, если твоя команда не вовлечена, токсичит и ее душат комплексы + культура.
Отличная обучалка сформулировать какая команда будет перформить, а какая будет племенем обезьян, кидающих в друг друга какашки
#books
че обновили до иос 16? как впечателения? Какие обои надо ставить? когда таргет повышать? 🤡
Please open Telegram to view this post
VIEW IN TELEGRAM
Функции высшего порядка
🟢 lvl: jun
Это функции:
▪ принимает одну или несколько функций в качестве аргументов
▪ возвращает функцию как результат
В swift функции высшего порядка это любые функции, которые принимают или возвращают замыкания.
Функции высшего порядка позволяют писать декларативный код в функциональном стиле. Такой код имеет меньше промежуточного состояния и его проще читать
Таких функций множество и полезно знать как они сделаны внутри
- понимание функций высшего порядка
- имплементации функций высшего порядка
🟢 lvl: jun
Это функции:
▪ принимает одну или несколько функций в качестве аргументов
▪ возвращает функцию как результат
В swift функции высшего порядка это любые функции, которые принимают или возвращают замыкания.
Функции высшего порядка позволяют писать декларативный код в функциональном стиле. Такой код имеет меньше промежуточного состояния и его проще читать
Таких функций множество и полезно знать как они сделаны внутри
- понимание функций высшего порядка
- имплементации функций высшего порядка
👍5🤔2
Что хотите увидеть в след разборах?
Anonymous Poll
32%
Больше UI. Кастомные ячейки. Анимации.
41%
Архитектуры. DDD. Паттерны. Design system
38%
Модуляризация. Сборка проекта. CI/CD.
47%
Память. Погружение в глубину. Дебаггинг
36%
Кэширование данных. Куда что сохранять.
24%
Языки. Swift vs Obj-c. Runtime
20%
SwiftUI
Memory Safety
🟠 lvl: mid+
По умолчанию Swift предотвращает небезопасное поведение в коде. Например, Swift гарантирует, что переменные инициализируются до того, как они будут использованы, доступ к памяти после ее освобождения невозможен, а индексы массива проверяются на наличие ошибок выхода за границы. Эту концепцию предложили в SE-0176
Это правило, которое требует, чтобы каждое потенциальное изменение (запись) переменных было эксклюзивным с любым другим доступом к этой переменной
Swift также гарантирует, что множественный доступ к одной и той же области памяти не вызовет конфликта, так как потребует кода, который изменит местоположение в памяти, для того, чтобы у вас появился эксклюзивный доступ к этой памяти. Поскольку Swift автоматически управляет памятью, большую часть времени вам вообще не нужно думать о доступе к памяти.
Однако важно понять, где могут возникнуть потенциальные конфликты, и вы сможете избежать написания кода, который вызовет конфликт доступа к памяти. Если у вас в коде возникает конфликт, то вы получите ошибку компиляции или ошибку выполнения.
Когда мы работаем в многопоточной среде эти концепции и детали очень полезно знать, и они могут помочь нам избежать множества странных ошибок и сэкономить нам много отладки
О них мы поговорим в следующих постах, а пока можете ознакомиться с небольшим материалом:
- Крутейшая дока по memory safety
- Какой язык безопаснее: Swift или Rust?
- Enforce Exclusive Access to Memory
- Концепция владения
🟠 lvl: mid+
По умолчанию Swift предотвращает небезопасное поведение в коде. Например, Swift гарантирует, что переменные инициализируются до того, как они будут использованы, доступ к памяти после ее освобождения невозможен, а индексы массива проверяются на наличие ошибок выхода за границы. Эту концепцию предложили в SE-0176
Это правило, которое требует, чтобы каждое потенциальное изменение (запись) переменных было эксклюзивным с любым другим доступом к этой переменной
Swift также гарантирует, что множественный доступ к одной и той же области памяти не вызовет конфликта, так как потребует кода, который изменит местоположение в памяти, для того, чтобы у вас появился эксклюзивный доступ к этой памяти. Поскольку Swift автоматически управляет памятью, большую часть времени вам вообще не нужно думать о доступе к памяти.
Однако важно понять, где могут возникнуть потенциальные конфликты, и вы сможете избежать написания кода, который вызовет конфликт доступа к памяти. Если у вас в коде возникает конфликт, то вы получите ошибку компиляции или ошибку выполнения.
Когда мы работаем в многопоточной среде эти концепции и детали очень полезно знать, и они могут помочь нам избежать множества странных ошибок и сэкономить нам много отладки
О них мы поговорим в следующих постах, а пока можете ознакомиться с небольшим материалом:
- Крутейшая дока по memory safety
- Какой язык безопаснее: Swift или Rust?
- Enforce Exclusive Access to Memory
- Концепция владения
GitHub
swift-evolution/proposals/0176-enforce-exclusive-access-to-memory.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution
🔥9👍2
Forwarded from Teamlead Good Reads – ежедневные советы про менеджмент людей и команд (Egor Tolstoy)
Подборка материалов про то, как прокачать навыки работы с документацией
👩🎓Замечательные курсы технических писателей от Google
🤔Алгоритм действий по тому, как привести в порядок документацию в команде
🔗Огромная подборка ссылок по разным аспектам написания документации: от правил форматирования текста до оценки UX
🎤Выпуски Подлодки по теме: «Техническая документация» и «Управление знаниями»
👩🎓Замечательные курсы технических писателей от Google
🤔Алгоритм действий по тому, как привести в порядок документацию в команде
🔗Огромная подборка ссылок по разным аспектам написания документации: от правил форматирования текста до оценки UX
🎤Выпуски Подлодки по теме: «Техническая документация» и «Управление знаниями»
Google for Developers
Overview of technical writing courses | Technical Writing | Google for Developers
🔥4
Подборка материалов по тестам
🏠 Dodo: Тест-ревью: как прошли два года написания unit-тестов
🏠 Cian: Тесты в iOS: хороший, плохой
🤑 Sber: Как доказать важность тестов каждому участнику проекта
Книги:
- Agile Swift
- Pro iOS Testing
- Test-Driven iOS Development
- Принципы юнит-тестирования
#подборка
Книги:
- Agile Swift
- Pro iOS Testing
- Test-Driven iOS Development
- Принципы юнит-тестирования
#подборка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5⚡2👍2
Будет ли гонка?
Final Results
40%
Нет, у нас есть lock
10%
Нет, но приложение крашнится
24%
Да
26%
Не знаю
Для типов значений, изменяющих функции, self неявно передается функции в качестве параметра inout. И в контексте доступа к памяти в параметрах in-out есть доступ на запись, который автоматически начинается в начале функции и заканчивается, когда функция завершается. Таким образом, в приведенном примере, даже если мы не изменяем наш массив внутри функции, существует долгосрочный доступ на запись для всего выполнения метода.
ℹ️ Из документации Apple (раздел Conflicting Access to In-Out Parameters):
A function has long-term write access to all of its in-out parameters. The write access for an in-out parameter starts after all of the non-in-out parameters have been evaluated and lasts for the entire duration of that function call. If there are multiple in-out parameters, the write accesses start in the same order as the parameters appear.
Получается, что гонка происходит, когда мы вызываем node.clearChilds() в первой очереди, начиная доступ на запись для self, который также является node, и после этого снова пытаемся использовать node.clearChilds() во второй, начиная другой доступ на запись на node, а также пытаясь прочитать self в self.childs.isEmpty.
Решение:
Полный разбор в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Способы сериализации данных в iOS
🟡 lvl: mid
Сериализация — процесс перевода данных в битовую последовательность. Сериализация используется для передачи объектов по сети и для сохранения их в файлы.
В iOS самые популярные способы:
- NSCoding (NSKeyedArchiver)
- JSON
- Plist
- Codable
JSON — самый быстрый, а NSKeyedArchiver самый медленный.
В статье ниже можно ознакомиться с чего начиналось кодирование и почему Codable пока лучшее, что имеем
- Сериализация в iOS
🟡 lvl: mid
Сериализация — процесс перевода данных в битовую последовательность. Сериализация используется для передачи объектов по сети и для сохранения их в файлы.
В iOS самые популярные способы:
- NSCoding (NSKeyedArchiver)
- JSON
- Plist
- Codable
JSON — самый быстрый, а NSKeyedArchiver самый медленный.
В статье ниже можно ознакомиться с чего начиналось кодирование и почему Codable пока лучшее, что имеем
- Сериализация в iOS
👍8