Все чаще стал замечать в других каналах, что прямо в Telegram интегрированы оплаты.
Заинтересовался этим вопросом, и, как оказалось, Telegram уже давненько имеет платежную платформу, с которой можно интегрироваться через Bot Payments API.
Есть и готовые библиотеки, чтобы с нуля не писать, и даже конструкторы ботов, если нет знаний языков программирования. Правда, не будет такой гибкости, но тем не менее - это открывает возможности для не технических пользователей!
Причем можно интегрироваться с очень многими платежными системами. Даже с российскими Сбербанк и ЮKassa, что сейчас очень кстати!
Мне вот интересно лишь, пользователи уже привыкли к оплате через Telegram или все еще рассматривается это как нечто странное?)
Заинтересовался этим вопросом, и, как оказалось, Telegram уже давненько имеет платежную платформу, с которой можно интегрироваться через Bot Payments API.
Есть и готовые библиотеки, чтобы с нуля не писать, и даже конструкторы ботов, если нет знаний языков программирования. Правда, не будет такой гибкости, но тем не менее - это открывает возможности для не технических пользователей!
Причем можно интегрироваться с очень многими платежными системами. Даже с российскими Сбербанк и ЮKassa, что сейчас очень кстати!
Мне вот интересно лишь, пользователи уже привыкли к оплате через Telegram или все еще рассматривается это как нечто странное?)
👍24
Вчера готовил домашнее задание для курса по JUnit 5. И даже подумать не мог, что потрачу целый час просто чтобы решить одну, казалось бы, маленькую проблему:
Поэтому первым делом проверял настройки в IntelliJ
Даже стандартное Invalidate Caches and Restart не помогало.
В итоге закончилось тем, что просто интегрировал в проект
Кто помнит, то в прошлом году его можно было использовать только с https://github.com/takari/maven-wrapper (я это еще в своем курсе демонстрировал по Maven)
Отсюда делаем очередной вывод: нужно использовать wrapper (как в Maven, так и в Gradle).
Добавился очередной большой плюс в его копилочку :)
Cannot resolve plugin org.apache.maven.plugins:maven-failsafe-pluginЯ запускал задачи через IntelliJ IDEA. Там по умолчанию есть встроенный Apache Maven и не нужно устанавливать его отдельно.
Поэтому первым делом проверял настройки в IntelliJ
Build Tools → Maven
: версии, соединения с репозиториями, где лежат settings.xml и многое другое.Даже стандартное Invalidate Caches and Restart не помогало.
В итоге закончилось тем, что просто интегрировал в проект
Maven Wrapper
и все команды осуществлял через него. Тем более что недавно он официально зарелизился как Apache Maven Project: https://maven.apache.org/wrapperКто помнит, то в прошлом году его можно было использовать только с https://github.com/takari/maven-wrapper (я это еще в своем курсе демонстрировал по Maven)
Отсюда делаем очередной вывод: нужно использовать wrapper (как в Maven, так и в Gradle).
Добавился очередной большой плюс в его копилочку :)
👍36🔥7
Почему я предпочитаю инженерный подход в программировании?
Когда я начинал изучать программирование, я столкнулся с двумя большими для себя проблемами:
- трудно запоминать просто огромный поток информации
- не мог идти дальше, когда не понимал какой-то аспект или тему
От этого моя уверенность падала: а смогу ли я вообще осилить все это?
Еще я часто задумывался о том, почему профессия называлась именно инженер-программист, а не просто программист, например.
И только со временем я понял, как решить все свои вышеописанные проблемы и вопросы - нужно вести себя как инженер.
Его преимущество в том, что он знает, как устроена машина, или механизм, который он создавал, или здание, которое он строил.
Для него это не “черный ящик”, или “ставлю аннотацию и все работает”, или “этот фреймворк все за меня сделает”.
Инженер при взгляде на дом видит не просто готовое здание, он видит все его составляющие: фундамент, кирпичи, несущие стены, канализацию, систему вентиляции, крышу и т.д.
Инженер декомпозирует задачу любой сложности до таких деталей, которые понятны каждому.
Таким образом не нужно запоминать столько информации, ибо каждая последующая базируется на совокупности более простых.
А при сложных ситуациях или даже нестандартных, ты всегда придумаешь или изобретешь решение.
Когда я начинал изучать программирование, я столкнулся с двумя большими для себя проблемами:
- трудно запоминать просто огромный поток информации
- не мог идти дальше, когда не понимал какой-то аспект или тему
От этого моя уверенность падала: а смогу ли я вообще осилить все это?
Еще я часто задумывался о том, почему профессия называлась именно инженер-программист, а не просто программист, например.
И только со временем я понял, как решить все свои вышеописанные проблемы и вопросы - нужно вести себя как инженер.
Его преимущество в том, что он знает, как устроена машина, или механизм, который он создавал, или здание, которое он строил.
Для него это не “черный ящик”, или “ставлю аннотацию и все работает”, или “этот фреймворк все за меня сделает”.
Инженер при взгляде на дом видит не просто готовое здание, он видит все его составляющие: фундамент, кирпичи, несущие стены, канализацию, систему вентиляции, крышу и т.д.
Инженер декомпозирует задачу любой сложности до таких деталей, которые понятны каждому.
Таким образом не нужно запоминать столько информации, ибо каждая последующая базируется на совокупности более простых.
А при сложных ситуациях или даже нестандартных, ты всегда придумаешь или изобретешь решение.
👍69🔥26👏2
Возвращаясь к посту выше, я хотел бы добавить, что умение декомпозировать задачи нужно развивать постоянно.
Это не тот навык, который ты приобрел и теперь знаешь все - нет.
В чем ты можешь быть точно уверен, так это в том, что такой подход можно применять для решения абсолютно любой задачи в программировании.
Думаю, все слышали фразу: “чем больше я знаю, тем больше понимаю, как много я не знаю”.
Здесь классно подходит аналогия с периметром окружности.
Точно также и я понимаю, что моим навыкам еще есть куда расти, а мои знания составляют лишь малую часть от общего объема информации.
Тем не менее, это меня не останавливает, а, наоборот, подстегивает изучать постоянно что-то новое, подогревая мой интерес.
Ведь мне нравится сам процесс разработки приложений!
Это не тот навык, который ты приобрел и теперь знаешь все - нет.
В чем ты можешь быть точно уверен, так это в том, что такой подход можно применять для решения абсолютно любой задачи в программировании.
Думаю, все слышали фразу: “чем больше я знаю, тем больше понимаю, как много я не знаю”.
Здесь классно подходит аналогия с периметром окружности.
Точно также и я понимаю, что моим навыкам еще есть куда расти, а мои знания составляют лишь малую часть от общего объема информации.
Тем не менее, это меня не останавливает, а, наоборот, подстегивает изучать постоянно что-то новое, подогревая мой интерес.
Ведь мне нравится сам процесс разработки приложений!
🔥20👍4
А какое у тебя отношение к программированию?
Anonymous Poll
14%
Нравится сам процесс разработки, но не нравится постоянно обучаться
69%
Нравится сам процесс разработки и обучение новому
17%
Программирую из-за $$$ и уровня жизни, который получаю благодаря этому
👍18👎2
Очень часто замечаю, особенно у начинающих программистов или тех, кто только учится, один интересный момент или даже привычку:
боязнь найти ошибку в своем коде.
Это как закрываться от проблем: если ты их не видишь, то это не значит, что их нет.
Нужно действовать совсем иначе!
После написания кода подвергать его самыми жестокимииспытаниями тестами.
Не нужно бояться найти ошибку, она все равно будет найдена, вопрос лишь во времени.
И лучше, чтобы это время не выпало на конечного пользователя твоего приложения.
Другими словами говоря, нужно вскрыть максимум недочетов на этапе разработки и тестирования.
боязнь найти ошибку в своем коде.
Это как закрываться от проблем: если ты их не видишь, то это не значит, что их нет.
Нужно действовать совсем иначе!
После написания кода подвергать его самыми жестокими
Не нужно бояться найти ошибку, она все равно будет найдена, вопрос лишь во времени.
И лучше, чтобы это время не выпало на конечного пользователя твоего приложения.
Другими словами говоря, нужно вскрыть максимум недочетов на этапе разработки и тестирования.
👍55🔥15
Наконец-то это свершилось!
Спустя полтора месяца я подключил платежную систему на платформе GetCourse.
Теперь все желающие даже с карточками от РФ банков смогут приобрести мои курсы.
Можно приобрести каждый курс отдельно - сроком на 3 или 6 месяцев.
А можно приобрести доступ к пакетам курсов. Также сроком на 3 или 6 месяцев на свое усмотрение.
Курсы на платформе GetCourse можно найти по той же самой ссылке:
https://taplink.cc/denis.dmdev
Спустя полтора месяца я подключил платежную систему на платформе GetCourse.
Теперь все желающие даже с карточками от РФ банков смогут приобрести мои курсы.
Можно приобрести каждый курс отдельно - сроком на 3 или 6 месяцев.
А можно приобрести доступ к пакетам курсов. Также сроком на 3 или 6 месяцев на свое усмотрение.
Курсы на платформе GetCourse можно найти по той же самой ссылке:
https://taplink.cc/denis.dmdev
Taplink
Denis.dmdev at Taplink
👍47🎉13🔥9
Купон IntelliJ IDEA Ultimate
Хочу напомнить, что т.к. я работаю в IntelliJ IDEA Ultimate,
то и все мои курсы продемонстрированы именно в этой среде разработки.
Она платная, поэтому у меня всегда есть в наличии купоны для всех спонсоров YouTube или GetCourse, чтобы комфортно обучаться с курсами от dmdev.
Просто напиши мне в личку Instagram или Telegram свой ник и email на YouTube или GetCourse, и я выдам тебе купон на 6 месяцев бесплатного использования IntelliJ IDEA Ultimate.
P.S. Купоны можно активировать вне зависимости от страны
Хочу напомнить, что т.к. я работаю в IntelliJ IDEA Ultimate,
то и все мои курсы продемонстрированы именно в этой среде разработки.
Она платная, поэтому у меня всегда есть в наличии купоны для всех спонсоров YouTube или GetCourse, чтобы комфортно обучаться с курсами от dmdev.
Просто напиши мне в личку Instagram или Telegram свой ник и email на YouTube или GetCourse, и я выдам тебе купон на 6 месяцев бесплатного использования IntelliJ IDEA Ultimate.
P.S. Купоны можно активировать вне зависимости от страны
👍43🔥12🤮1
Вчера на занятии по менторству мы пришли к двум очень интересным мыслям.
Мысль первая
Довольно просто (относительно) выучить или даже зазубрить какие-то отдельно взятые темы в программировании.
Например:
- что такое перегрузка методов
- что такое Generics
- что такое функциональное программирование в Java
Но профессионализм разработчика определяется в том, что он глубоко понимает эти темы,
а главное, может комбинировать эти знания воедино для решения поставленной задачи.
И это решение должно получиться максимально простым, гибким и эффективным.
Мысль первая
Довольно просто (относительно) выучить или даже зазубрить какие-то отдельно взятые темы в программировании.
Например:
- что такое перегрузка методов
- что такое Generics
- что такое функциональное программирование в Java
Но профессионализм разработчика определяется в том, что он глубоко понимает эти темы,
а главное, может комбинировать эти знания воедино для решения поставленной задачи.
И это решение должно получиться максимально простым, гибким и эффективным.
👍47
Мысль вторая
Невозможно достичь профессионализма (мысль первая), если не развивать свои навыки и не пробовать разные подходы в решении задач.
Например, ты научился хорошо или даже отлично делать сальто назад и успешно это практикуешь.
Но пока ты не начнешь пробовать делать тройное сальто назад, ты так и не научишься этому (что логично) и будешь довольствоваться тем, что есть.
Поэтому, опыт в программировании с какого-то определенного момента не может раскрыть навыки разработчика.
Человек с 5 годами опыта может дать фору 10-летнему. А все потому, что он продолжает пробовать.
Невозможно достичь профессионализма (мысль первая), если не развивать свои навыки и не пробовать разные подходы в решении задач.
Например, ты научился хорошо или даже отлично делать сальто назад и успешно это практикуешь.
Но пока ты не начнешь пробовать делать тройное сальто назад, ты так и не научишься этому (что логично) и будешь довольствоваться тем, что есть.
Поэтому, опыт в программировании с какого-то определенного момента не может раскрыть навыки разработчика.
Человек с 5 годами опыта может дать фору 10-летнему. А все потому, что он продолжает пробовать.
👍38🤔1
Ни одно приложение не обходится без шифрования данных.
https уже давно стал стандартом для любых веб сайтов.
Генерация public и private ключей тоже обыденность при работе с репозиториями в github.
А цифровая подпись в JWT?
Но здорово не только понимать, как все работает, но и знать историю, как зарождалось шифрование (а это на минуточку тысячи лет назад!) и что способствовало его развитию.
Про все это есть просто шикарнейшая и одна из моих любимейших книг
The Code Book, Simon Singh
#dmdev_top_books
https уже давно стал стандартом для любых веб сайтов.
Генерация public и private ключей тоже обыденность при работе с репозиториями в github.
А цифровая подпись в JWT?
Но здорово не только понимать, как все работает, но и знать историю, как зарождалось шифрование (а это на минуточку тысячи лет назад!) и что способствовало его развитию.
Про все это есть просто шикарнейшая и одна из моих любимейших книг
The Code Book, Simon Singh
#dmdev_top_books
🔥30👍11👏3
🛠 Нет ничего постояннее, чем временное
В который раз убеждаюсь, что временный фикс может остаться в проде на долгие месяцы или даже годы.
Как только команда решает выкатить какие-то временные изменения, которые "
Всегда найдутся более важные задачи или поменяются приоритеты, или некогда согласовывать с другими командами откат тех самых временных изменений.
Вот прямо сейчас сидим и исправляем код, которому уже как минимум пол года, хотя думали когда-то, что его мы "
#dmdev_о_наболевшем
В который раз убеждаюсь, что временный фикс может остаться в проде на долгие месяцы или даже годы.
Как только команда решает выкатить какие-то временные изменения, которые "
скоро
" уберем - то будьте уверены, что это "скоро
" может даже не наступить.Всегда найдутся более важные задачи или поменяются приоритеты, или некогда согласовывать с другими командами откат тех самых временных изменений.
Вот прямо сейчас сидим и исправляем код, которому уже как минимум пол года, хотя думали когда-то, что его мы "
скоро
" уберем😅#dmdev_о_наболевшем
👍28😁8🔥6
🤯 СДВИГ ПАРАДИГМ
У изучающих программирование я отчетливо вижу 3 основных этапа, которые довольно сложно осознать или принять. Эти этапы я называю сдвиг парадигм.
Первый этап - это когда человек только начинает изучать программирование и ему невероятно сложно понять новый для него язык - язык машин. Сложно привыкнуть к тому, что такое типы данных, переменные, функции, циклы, логические конструкции и массивы. И это еще все вместе взаимодействует друг с другом!
Если первый этап пережит, то приходит спокойствие и равновесие. Все становится на свои места: программировать просто и понятно, мотивация на высоте. Но ровно до тех пор, пока не приходит тема ООП - второй этап и второй сдвиг парадигмы. Переход от структурного в объектно ориентированное программирование.
Появляется вновь много вопросов и недопонимание концепции классов и объектов: зачем так усложнять? Зачем эти поля и ключевое слово this? Наследование, композиция… Зачем? Все ведь было и без этого отлично. Писались программы и даже довольно неплохо получалось. А главное работало!
Если второй этап пережит - то опять наступает внутреннее равновесие, происходит серьезный рост в навыках программиста. Кажется, что перед тобой открыт весь мир. Ты можешь творить просто невероятные вещи с ООП!
Пока не оказывается, что есть еще и функциональное программирование - третий этап и уже третий большой сдвиг парадигмы.
Самое интересное, что человек до последнего не хочет отпускать привычный ему мир и, например, продолжает использовать примитивные типы данных, когда можно использовать классы и поля в них. Либо вообще избегает использования функциональных интерфейсов и замыканий.
В итоге, пройдя успешно эти три этапа, программист начинает понимать основной принцип - что нет одного инструмента в решении проблем. Более того, нет универсального инструмента, который поможет во всех задачах (one size fits all).
И когда придет это понимание, программист научится не только использовать каждую парадигму в наиболее выгодном месте, но и комбинировать их друг с другом. Ибо самое главное - это простое и понятное решение любой по сложности задачи.
PS. Лично у меня эта перестройка мышления заняла не один год
У изучающих программирование я отчетливо вижу 3 основных этапа, которые довольно сложно осознать или принять. Эти этапы я называю сдвиг парадигм.
Первый этап - это когда человек только начинает изучать программирование и ему невероятно сложно понять новый для него язык - язык машин. Сложно привыкнуть к тому, что такое типы данных, переменные, функции, циклы, логические конструкции и массивы. И это еще все вместе взаимодействует друг с другом!
Если первый этап пережит, то приходит спокойствие и равновесие. Все становится на свои места: программировать просто и понятно, мотивация на высоте. Но ровно до тех пор, пока не приходит тема ООП - второй этап и второй сдвиг парадигмы. Переход от структурного в объектно ориентированное программирование.
Появляется вновь много вопросов и недопонимание концепции классов и объектов: зачем так усложнять? Зачем эти поля и ключевое слово this? Наследование, композиция… Зачем? Все ведь было и без этого отлично. Писались программы и даже довольно неплохо получалось. А главное работало!
Если второй этап пережит - то опять наступает внутреннее равновесие, происходит серьезный рост в навыках программиста. Кажется, что перед тобой открыт весь мир. Ты можешь творить просто невероятные вещи с ООП!
Пока не оказывается, что есть еще и функциональное программирование - третий этап и уже третий большой сдвиг парадигмы.
Самое интересное, что человек до последнего не хочет отпускать привычный ему мир и, например, продолжает использовать примитивные типы данных, когда можно использовать классы и поля в них. Либо вообще избегает использования функциональных интерфейсов и замыканий.
В итоге, пройдя успешно эти три этапа, программист начинает понимать основной принцип - что нет одного инструмента в решении проблем. Более того, нет универсального инструмента, который поможет во всех задачах (one size fits all).
И когда придет это понимание, программист научится не только использовать каждую парадигму в наиболее выгодном месте, но и комбинировать их друг с другом. Ибо самое главное - это простое и понятное решение любой по сложности задачи.
PS. Лично у меня эта перестройка мышления заняла не один год
🔥46👍29👏3❤1
👂Что по Spring-у?
Ребят, кто там интересовался, когда будет завершен курс по Spring?
Официально заявляю, он готов!
Что он включает?
- Spring Core
- Spring Boot
- Spring Logging
- Spring Test
- Spring Data (+Database migrations)
- Spring JDBC
- Spring Web (+REST, +Thymeleaf)
- Spring Validation
- Spring Security (+OAuth2)
- Spring AOP
🏁 Итого: 126 видео продолжительностью 21 час и 9 минут
Желаю всем приятного просмотра и продуктивной практики!
Да прибудет с вами сила Spring-a 💪
P.S. Ссылка как обычно в описании канала
P.P.S. Напоминаю про наличие купонов IntelliJ IDEA Ultimate на 6 месяцев бесплатного использования для продуктивного прохождения курсов DMdev.
Если есть подписка на GetCourse, YouTube или покупка на Udemy любого моего продукта - напиши мне в личку Telegram или Instagram, вышлю купон!
Ребят, кто там интересовался, когда будет завершен курс по Spring?
Официально заявляю, он готов!
Что он включает?
- Spring Core
- Spring Boot
- Spring Logging
- Spring Test
- Spring Data (+Database migrations)
- Spring JDBC
- Spring Web (+REST, +Thymeleaf)
- Spring Validation
- Spring Security (+OAuth2)
- Spring AOP
🏁 Итого: 126 видео продолжительностью 21 час и 9 минут
Желаю всем приятного просмотра и продуктивной практики!
Да прибудет с вами сила Spring-a 💪
P.S. Ссылка как обычно в описании канала
P.P.S. Напоминаю про наличие купонов IntelliJ IDEA Ultimate на 6 месяцев бесплатного использования для продуктивного прохождения курсов DMdev.
Если есть подписка на GetCourse, YouTube или покупка на Udemy любого моего продукта - напиши мне в личку Telegram или Instagram, вышлю купон!
❤41🔥27👍19
🎉 2 года каналу DMdev
Сегодня 30.05.2022 ровно 2 года с момента выхода первого видео на канале DMdev.
Это видео - Java для начинающих. 1.1 Первая программа.
В момент его публикации я просто хотел автоматизировать свое преподавание в IT-academy. Я не умел монтировать видео, работать со звуком, не было камеры, да и в принципе не ожидал дальнейшего развития канала.
Я планировал отправлять своих студентов на YouTube, чтобы не повторять свои лекции вслух в 5-ый раз. Это тот самый момент, когда лень - двигатель прогресса 😅
Но с появлением первых подписчиков, лайков, комментариев, обратной связи от вас - зародилась идея создать полноценное обучение для Java разработчиков.
Хочу сказать огромное спасибо всем подписчикам и спонсорам.
Благодаря вашему вкладу канал продолжает расти и развиваться!
Сегодня 30.05.2022 ровно 2 года с момента выхода первого видео на канале DMdev.
Это видео - Java для начинающих. 1.1 Первая программа.
В момент его публикации я просто хотел автоматизировать свое преподавание в IT-academy. Я не умел монтировать видео, работать со звуком, не было камеры, да и в принципе не ожидал дальнейшего развития канала.
Я планировал отправлять своих студентов на YouTube, чтобы не повторять свои лекции вслух в 5-ый раз. Это тот самый момент, когда лень - двигатель прогресса 😅
Но с появлением первых подписчиков, лайков, комментариев, обратной связи от вас - зародилась идея создать полноценное обучение для Java разработчиков.
Хочу сказать огромное спасибо всем подписчикам и спонсорам.
Благодаря вашему вкладу канал продолжает расти и развиваться!
🔥80👍29❤14👏7🎉5
💥 Цифры за год
И немного статистики о проделанной работе за прошедший год, которой я также хочу поделиться с вами:
- Создано 4 полноценных курса (Groovy, Gradle, Hibernate, Spring)
- 275 новых видео
- 48 часа контента
- Курсы теперь доступны на двух новых платформах (Udemy, GetCourse)
- Созданы и запущены 2 ступени менторства
- Запущен формат ”Code review”
И на картинке статистика от YouTube за последние 365 дней, где также можно увидеть на сколько выросли показатели в сравнении с предыдущим годом 🚀
И немного статистики о проделанной работе за прошедший год, которой я также хочу поделиться с вами:
- Создано 4 полноценных курса (Groovy, Gradle, Hibernate, Spring)
- 275 новых видео
- 48 часа контента
- Курсы теперь доступны на двух новых платформах (Udemy, GetCourse)
- Созданы и запущены 2 ступени менторства
- Запущен формат ”Code review”
И на картинке статистика от YouTube за последние 365 дней, где также можно увидеть на сколько выросли показатели в сравнении с предыдущим годом 🚀
❤29🔥24👏20
🗝 Как я хакнул систему и сделал Level Up?
Существует множество советов, практик по написанию кода и подходов к разработке.
Есть даже довольно неплохая книга, где можно почерпнуть парочку из них: The Pragmatic Programmer.
Но я бы хотел поделиться тремя основными, которые действительно произвели сильный толчок именно в моем развитии как программиста и которые я использую по сей день.
1️⃣ Замедляться, думать над каждой написанной строчкой кода
Наверное, эта практика пришла из психологии: быть в моменте. Поначалу это кажется очень сложным, потому что человеку свойственно отправлять привычные вещи на автопилот. Но как только ты начинаешь задумываться, почему я пишу именно так эту строчку кода, или зачем я вызываю метод flush у потока, или кем обрабатывается аннотация @Transactional в тестах - твой мозг начинает решать поставленные вопросы и докапываться до базовых, но таких важных, даже ключевых вещей и понятий!
2️⃣ Теория разбитых окон
Еще одна практика, которая пришла уже из другой области - криминологии. Тем не менее, невероятно полезна и при разработке приложений. Я бы даже вынес ее на первое место в любых списках и рейтингах, ибо без ее соблюдения - со временем распадаются не только программы, но и команды.
Она гласит: «Если в здании разбито одно стекло и никто его не заменяет, то через некоторое время в этом здании не останется ни одного целого окна».
❗️Решение здесь очень простое и сложное одновременно - не лениться и не стесняться исправлять недочеты в программе как только их увидел. Выделять время на разгребание технического долга!
3️⃣ Проявлять инициативу, критически осмысливать полученную информацию
Этот пункт основополагающий не только для двух предыдущих, но и в целом. Потому что для заделывания дыр в окнах нужно проявлять инициативу, нужно брать на себя ответственность не только за свой код, но и за код других людей в команде и даже за весь проект в целом. А раз берешь на себя ответственность, то ты должен уметь оспаривать те или иные свои решения и отстаивать свою точку зрения. А для этого нужно критически подходить к любой получаемой информации и знать как работает тот или иной модуль системы (та или иная строчка кода).
Существует множество советов, практик по написанию кода и подходов к разработке.
Есть даже довольно неплохая книга, где можно почерпнуть парочку из них: The Pragmatic Programmer.
Но я бы хотел поделиться тремя основными, которые действительно произвели сильный толчок именно в моем развитии как программиста и которые я использую по сей день.
1️⃣ Замедляться, думать над каждой написанной строчкой кода
Наверное, эта практика пришла из психологии: быть в моменте. Поначалу это кажется очень сложным, потому что человеку свойственно отправлять привычные вещи на автопилот. Но как только ты начинаешь задумываться, почему я пишу именно так эту строчку кода, или зачем я вызываю метод flush у потока, или кем обрабатывается аннотация @Transactional в тестах - твой мозг начинает решать поставленные вопросы и докапываться до базовых, но таких важных, даже ключевых вещей и понятий!
2️⃣ Теория разбитых окон
Еще одна практика, которая пришла уже из другой области - криминологии. Тем не менее, невероятно полезна и при разработке приложений. Я бы даже вынес ее на первое место в любых списках и рейтингах, ибо без ее соблюдения - со временем распадаются не только программы, но и команды.
Она гласит: «Если в здании разбито одно стекло и никто его не заменяет, то через некоторое время в этом здании не останется ни одного целого окна».
❗️Решение здесь очень простое и сложное одновременно - не лениться и не стесняться исправлять недочеты в программе как только их увидел. Выделять время на разгребание технического долга!
3️⃣ Проявлять инициативу, критически осмысливать полученную информацию
Этот пункт основополагающий не только для двух предыдущих, но и в целом. Потому что для заделывания дыр в окнах нужно проявлять инициативу, нужно брать на себя ответственность не только за свой код, но и за код других людей в команде и даже за весь проект в целом. А раз берешь на себя ответственность, то ты должен уметь оспаривать те или иные свои решения и отстаивать свою точку зрения. А для этого нужно критически подходить к любой получаемой информации и знать как работает тот или иной модуль системы (та или иная строчка кода).
🔥45👍22👏3
Эмоциональный цикл перемен
Любые перемены в жизни, независимо от их природы, буть то переезд в другую страну, изучение программирования, навыка стрельбы из пистолета или плавания - развиваются в соответствии с эмоциональным циклом перемен.
Этот цикл разбивается на 5 основных этапов:
🔹Необоснованный оптимизм
🔹Информационный пессимизм
🔹Момент отчаяния
🔹Информационный оптимизм
🔹Успех и самореализация
Любые перемены в жизни, независимо от их природы, буть то переезд в другую страну, изучение программирования, навыка стрельбы из пистолета или плавания - развиваются в соответствии с эмоциональным циклом перемен.
Этот цикл разбивается на 5 основных этапов:
🔹Необоснованный оптимизм
🔹Информационный пессимизм
🔹Момент отчаяния
🔹Информационный оптимизм
🔹Успех и самореализация
👍28🔥8
1️⃣ Первый этап или необоснованный оптимизм - мы представляем свое прекрасное будущее, забывая о том, что все имеет свою цену.
💁♂️ “Вот сейчас выучу Java и стану программистом. Буду зарабатывать много денег, работать удаленно из любой точки мира - выйду на новый уровень!”.
К сожалению, состояние необоснованного оптимизма длится не долго, потому что мы замечаем в основном только положительное стороны перемен и не видим отрицательных.
2️⃣ Мы сталкиваемся с реальностью и вторым этапом - информационный пессимизм, где выгоды уже не кажутся такими близкими или даже осязаемыми, а цена, которую мы УЖЕ платим, очевидна.
🤷♂️ Каждый задается вопросом: "А действительно ли эти перемены стоят затраченных усилий?
И уже начинаем искать оправдания, чтобы отказаться от того, чтобы “стать программистом”.
3️⃣ Но дальше еще хуже и наступает момент отчаяния, когда не получается НИЧЕГО.
На этом третьем этапе сдается большинство людей, потому что принимают самое простое для себя решение - все бросить и вернутся к старой жизни без этих перемен, ведь “раньше же как-то жили, и вроде даже неплохо! Ну его это программирование”.
Чтобы пережить этот этап, нужно иметь четкое представление картины будущего и сильное желание достичь своей цели. Но еще лучше справиться с этим этапом помогают дисциплина и самоконтроль.
4️⃣ Если пережить момент отчаяния, то наступает четвертый этап - информационный оптимизм, где вероятность добиться успеха и в принципе своей цели заметно увеличивается.
Мы уже начинаем получать первые “плоды своего труда”, “код уже кажется довольно простым и понятным”, а действия становятся более осмысленными.
🤦 Зачастую мы слышим в голове такую мысль: “Как я раньше этого не понимал?”
5️⃣ Если не остановиться на достигнутом, то наступает заключительный этап и приходят успех и самореализация. Действия, которые были для нас сложны и неприятны, становятся привычны и просты.
Мы получаем бурю положительных эмоций, у нас все получается и самооценка растет до небес.
🙋♂️ «Я наконец-то стал Java разработчиком!»
❗️И тут важно помнить, что это цикл, а значит, после этого этапа придет необоснованный оптимизм, плавно перетекающий в информационный пессимизм и т.д.
И чем больше мы сможем пройти таких циклов в жизни, тем проще будут даваться другие перемены, приобретение новых навыков и достижение поставленных целей!
💁♂️ “Вот сейчас выучу Java и стану программистом. Буду зарабатывать много денег, работать удаленно из любой точки мира - выйду на новый уровень!”.
К сожалению, состояние необоснованного оптимизма длится не долго, потому что мы замечаем в основном только положительное стороны перемен и не видим отрицательных.
2️⃣ Мы сталкиваемся с реальностью и вторым этапом - информационный пессимизм, где выгоды уже не кажутся такими близкими или даже осязаемыми, а цена, которую мы УЖЕ платим, очевидна.
🤷♂️ Каждый задается вопросом: "А действительно ли эти перемены стоят затраченных усилий?
И уже начинаем искать оправдания, чтобы отказаться от того, чтобы “стать программистом”.
3️⃣ Но дальше еще хуже и наступает момент отчаяния, когда не получается НИЧЕГО.
На этом третьем этапе сдается большинство людей, потому что принимают самое простое для себя решение - все бросить и вернутся к старой жизни без этих перемен, ведь “раньше же как-то жили, и вроде даже неплохо! Ну его это программирование”.
Чтобы пережить этот этап, нужно иметь четкое представление картины будущего и сильное желание достичь своей цели. Но еще лучше справиться с этим этапом помогают дисциплина и самоконтроль.
4️⃣ Если пережить момент отчаяния, то наступает четвертый этап - информационный оптимизм, где вероятность добиться успеха и в принципе своей цели заметно увеличивается.
Мы уже начинаем получать первые “плоды своего труда”, “код уже кажется довольно простым и понятным”, а действия становятся более осмысленными.
🤦 Зачастую мы слышим в голове такую мысль: “Как я раньше этого не понимал?”
5️⃣ Если не остановиться на достигнутом, то наступает заключительный этап и приходят успех и самореализация. Действия, которые были для нас сложны и неприятны, становятся привычны и просты.
Мы получаем бурю положительных эмоций, у нас все получается и самооценка растет до небес.
🙋♂️ «Я наконец-то стал Java разработчиком!»
❗️И тут важно помнить, что это цикл, а значит, после этого этапа придет необоснованный оптимизм, плавно перетекающий в информационный пессимизм и т.д.
И чем больше мы сможем пройти таких циклов в жизни, тем проще будут даваться другие перемены, приобретение новых навыков и достижение поставленных целей!
👍45🔥20👏4