Обязательной частью онлайн курса «Профессия Middle Python/Django разработчик» от Devman является стажировка на коммерческом проекте. Стажировка подходит внутри нашей компании, в соседнем подразделении. В этом году подразделение заказной разработки получило свое название PelidTeam, логотип и и отдельный сайт
🤝 Симбиоз Devman и PelidTeam
Два направления — обучение и разработка — тесно связаны и на данный момент не существуют по отдельности. Devman готовит квалифицированных бэкенд-разработчиков, часть из которых теперь после стажировки получают оффер остаться на фулл-тайм в PelidTeam и продолжить свое развитие в сторону тим- или техлида, а в скором времени, возможно, фулл-стек разработчика.
🚀 Звездолёты
PelidTeam практически не занимается простыми типовыми проектами. Большинство проектов — это разработка с нуля, сложные, высоконагруженные веб-сервисы. И уровень наших выпускников как раз позволяет такие продукты делать. Большинство стажеров уже в течение первых двух месяцев получают не просто задачи по исправлению мелких багов, но разрабатывают новые фичи, активно участвуют в проектировании.
📈 Активный рост
PelidTeam за прошедший год вырос в 10 раз по выручке. За последние 3 месяца 10 выпускников Devman устроились к нам в компанию как бэкенд-разработчики на фулл-тайм. Это около 30% от количества выпускников, прошедших стажировку за прошедший год.
⚡️Своя методика
Как и в обучении, мы не пошли обычным путем и разработали свою методику для проектирования и управления разработкой ПО. Методика получила название ProductFlow и, если вы будете участвовать в стажировке, то познакомитесь с ней. ProductFlow позволяет объективно отслеживать прогресс, проводить приемку работ, описывать контекст задачи и прорабатывать критически важные детали. ProductFlow позволяет разрабатывать большие и сложные программные продукты, удобные пользователю.
🧑💻Трудоустройство
Мы ценим сообщество, которое образовалось вокруг курсов Devman, и при найме отдаем предпочтение именно нашим ученикам. Сообщите нам, если заинтересованы стать частью постоянной команды PelidTeam.
💰 Реферальная программа
Мы рады win-win сотрудничеству и в других форматах помимо трудоустройства. Приводите знакомых, которым нужна квалифицированная команда для веб-разработки по реферальной программе. Предлагайте партнёрство в другом формате.
➡️ А пока рекомендуем присоединиться и послушать дискуссию о влиянии AI на индустрию разработки ПО. В дискуссии участвуют Евгений Евсеев — учредитель и технический директор компании, и Артем Каменев — операционный директор PelidTeam
Подключиться можно по ссылкам:
- Трансляция на Ютуб
- Ретрансляция на VK (появится в группе автоматически)
🤝 Симбиоз Devman и PelidTeam
Два направления — обучение и разработка — тесно связаны и на данный момент не существуют по отдельности. Devman готовит квалифицированных бэкенд-разработчиков, часть из которых теперь после стажировки получают оффер остаться на фулл-тайм в PelidTeam и продолжить свое развитие в сторону тим- или техлида, а в скором времени, возможно, фулл-стек разработчика.
🚀 Звездолёты
PelidTeam практически не занимается простыми типовыми проектами. Большинство проектов — это разработка с нуля, сложные, высоконагруженные веб-сервисы. И уровень наших выпускников как раз позволяет такие продукты делать. Большинство стажеров уже в течение первых двух месяцев получают не просто задачи по исправлению мелких багов, но разрабатывают новые фичи, активно участвуют в проектировании.
📈 Активный рост
PelidTeam за прошедший год вырос в 10 раз по выручке. За последние 3 месяца 10 выпускников Devman устроились к нам в компанию как бэкенд-разработчики на фулл-тайм. Это около 30% от количества выпускников, прошедших стажировку за прошедший год.
⚡️Своя методика
Как и в обучении, мы не пошли обычным путем и разработали свою методику для проектирования и управления разработкой ПО. Методика получила название ProductFlow и, если вы будете участвовать в стажировке, то познакомитесь с ней. ProductFlow позволяет объективно отслеживать прогресс, проводить приемку работ, описывать контекст задачи и прорабатывать критически важные детали. ProductFlow позволяет разрабатывать большие и сложные программные продукты, удобные пользователю.
🧑💻Трудоустройство
Мы ценим сообщество, которое образовалось вокруг курсов Devman, и при найме отдаем предпочтение именно нашим ученикам. Сообщите нам, если заинтересованы стать частью постоянной команды PelidTeam.
💰 Реферальная программа
Мы рады win-win сотрудничеству и в других форматах помимо трудоустройства. Приводите знакомых, которым нужна квалифицированная команда для веб-разработки по реферальной программе. Предлагайте партнёрство в другом формате.
➡️ А пока рекомендуем присоединиться и послушать дискуссию о влиянии AI на индустрию разработки ПО. В дискуссии участвуют Евгений Евсеев — учредитель и технический директор компании, и Артем Каменев — операционный директор PelidTeam
Подключиться можно по ссылкам:
- Трансляция на Ютуб
- Ретрансляция на VK (появится в группе автоматически)
dvmn.org
Курс Python-разработчик: обучение программированию на Python для начинающих
Обучение веб-разработке на Python до уровня Middle. Курс Python-разработчик от Devman с сертификатом и гарантией трудоустройства. Обучись языку программирования и стань востребованным специалистом.
🔥8👍3
❗️ Вчера мы обсудили влияние AI на индустрию разработки ПО
Говорили о:
⚡️ Реальности угрозы замены программистов на AI на базе o1
⚡️ Изменении роли программиста в связи с появлением подобных систем и навыках, которые потребуются разработчикам в будущем
⚡️ Ограничениях у AI на базе o1 в контексте реальной разработки ПО
⚡️ Возможных изменениях на рынке труда программистов в ближайшие 5-10 лет
⚡️ Стратегии адаптации для разработчиков, чтобы оставаться востребованными в новых условиях
Делимся ссылками на записи трансляции для тех, кто не смог подключиться вчера!
Запись на YouTube
Запись в VK
Позже будет текстовая версия на Хабре. Мы пришлем ссылку на нее.
Были вчера на дискуссии? Делитесь впечатлениями в комментариях ➡️
Говорили о:
⚡️ Реальности угрозы замены программистов на AI на базе o1
⚡️ Изменении роли программиста в связи с появлением подобных систем и навыках, которые потребуются разработчикам в будущем
⚡️ Ограничениях у AI на базе o1 в контексте реальной разработки ПО
⚡️ Возможных изменениях на рынке труда программистов в ближайшие 5-10 лет
⚡️ Стратегии адаптации для разработчиков, чтобы оставаться востребованными в новых условиях
Делимся ссылками на записи трансляции для тех, кто не смог подключиться вчера!
Запись на YouTube
Запись в VK
Позже будет текстовая версия на Хабре. Мы пришлем ссылку на нее.
Были вчера на дискуссии? Делитесь впечатлениями в комментариях ➡️
YouTube
🚀 РЕВОЛЮЦИЯ В ПРОГРАММИРОВАНИИ: OpenAI o1 vs Человек! Кто кого? 💻🤖
Готовы узнать всю правду о будущем программирования? 😱
Присоединяйтесь к эксклюзивной онлайн-дискуссии, где ведущие эксперты раскроют секреты влияния искусственного интеллекта (AI) на разработку ПО! Узнайте, как сверхинтеллект OpenAI o1 уже меняет мир…
Присоединяйтесь к эксклюзивной онлайн-дискуссии, где ведущие эксперты раскроют секреты влияния искусственного интеллекта (AI) на разработку ПО! Узнайте, как сверхинтеллект OpenAI o1 уже меняет мир…
🔥1
❓ А вы уже разобрались как работают операторы
Выберите вариант ответа, не запуская код:
➡️ Пишите в комментариях, почему выбрали именно этот вариант, а мы вернемся завтра с правильным ответом и описанием механизма работы операторов!
is и == в Python? Выберите вариант ответа, не запуская код:
a = 5
b = 5
c = 16789
d = 16789
print(a == b, a is b, sep=', ')
print(c == d, c is d, sep=', ')
➡️ Пишите в комментариях, почему выбрали именно этот вариант, а мы вернемся завтра с правильным ответом и описанием механизма работы операторов!
🔥1
Что выведет код?
Anonymous Poll
29%
>>>print(a == b, a is b, sep=', ')True, False>>> print(c == d, c is d, sep=', ')True, False
55%
>>>print(a == b, a is b, sep=', ')True, True>>> print(c == d, c is d, sep=', ')True, False
16%
>>>print(a == b, a is b, sep=', ')True, True>>> print(c == d, c is d, sep=', ')True, True
К сожалению, опросник не поддерживает форматирование с переносом строк, поэтому продулирую сюда более читаемые варианты:
Вариант А.
Вариант B.
Вариант C.
Вариант А.
>>>print(a == b, a is b, sep=', ')
True, False
>>> print(c == d, c is d, sep=', ')
True, False
Вариант B.
>>>print(a == b, a is b, sep=', ')
True, True
>>> print(c == d, c is d, sep=', ')
True, False
Вариант C.
>>>print(a == b, a is b, sep=', ')
True, True
>>> print(c == d, c is d, sep=', ')
True, True
🔥1
🥳 Итак, правильный ответ - B!
Оператор
Оператор
Но почему же
Для экономии ресурсов самые часто используемые объекты хранятся в фиксированном месте памяти в единственном экземпляре. Пример — сколько бы переменных вы не создали со значением
- None,
- True, False
- простые строки
- числа от -5 до 256
Интернирование позволяет использовать уже существующие неизменяемые объекты в некоторых случаях вместо того, чтобы каждый раз создавать новый объект. Для экономии памяти и ускорения работы программы вы можете интернировать часто используемые строковые значения принудительно, используя функцию
Рекомендуется использовать оператор
Поскольку булевые значения
Подведем итоги:
✅Используйте операторы Python
✅Используйте операторы Python
✅Используйте операторы Python
✅Избегайте сравнений с True/False, используйте готовые результаты логических операций, чтобы высушить код.
Оператор
== вызывает магический метод __eq__() объекта и проверяет равенство значений объектов. Если этот метод не реализован у кастомного класса объектов, то == по умолчанию сравнивает адреса памяти двух объектов, т.е. проверяет идентичность объектов. А значит, результат сравнения может быть неожиданным для программиста.c = 16789
d = 16789
>>> print(c == d)
True
Оператор
is проверяет идентичность объектов. В Python все является объектом, а каждый объект размещается в памяти по определенному адресу. Оператор is проверяет, ссылаются ли две переменные на один и тот же объект в памяти. Для проверки адреса, используйте функцию id():>>> id(a)
9776800
>>> id(b)
9776800
>>> id(c)
139766195519312
>>> id(d)
139766195945264
Но почему же
c и d указывают на разные объекты в памяти, а a и b на один и тот же? Здесь включается механизм интернирования объектов Python, иначе он называется кэшированием объектов. Для экономии ресурсов самые часто используемые объекты хранятся в фиксированном месте памяти в единственном экземпляре. Пример — сколько бы переменных вы не создали со значением
2, все они будут привязаны к одному и тому же адресу памяти. По умолчанию в CPython интернируются следующие типы объектов:- None,
- True, False
- простые строки
- числа от -5 до 256
Интернирование позволяет использовать уже существующие неизменяемые объекты в некоторых случаях вместо того, чтобы каждый раз создавать новый объект. Для экономии памяти и ускорения работы программы вы можете интернировать часто используемые строковые значения принудительно, используя функцию
sys.intern():>>> str1 = 'hello world'
>>> str2 = 'hello world'
>>> str1 is str2
False
>>> str1 = intern(str1)
>>> str2 = intern(str2)
>>> str1 is str2
True
Рекомендуется использовать оператор
is для сравнения с None вместо оператора ==. Он не только быстрее, поскольку сравнивает адреса памяти, но и безопаснее, поскольку не зависит от логики каких либо методов __eq__() класса.Поскольку булевые значения
True и False интернируются, то оба оператора дадут одинаковый результат. Мы рекомендуем и вовсе отказаться от сравнения с ними, т.к. это позволяет упростить код, не ограничивая функциональность:c = 5
d = 3
if c > d is True:
do_something()
# высушим код, но получим тот же результат
if c > d:
do_something()
result = c > d # True
Подведем итоги:
✅Используйте операторы Python
== и != для сравнения равенства объектов. ✅Используйте операторы Python
is и is not для сравнения с None. Сравнивать с None по адресу памяти быстрее и безопаснее, чем с помощью методов класса.✅Используйте операторы Python
is и is not, если хотите сравнить идентификатор объекта, т.е. указывают ли переменные на один и тот же адрес в памяти✅Избегайте сравнений с True/False, используйте готовые результаты логических операций, чтобы высушить код.
🔥4
Курсам Девмана уже 8 лет. Изначально они появились как решение собственной проблемы дефицита программистов для заказной разработки, необходимости долго и дорого дообучать новых сотрудников. Поэтому в приоритете было качество и высокая доходимость до конца.
Проблему качества кода выпускников решили с помощью практического подхода и детального код-ревью от действующих разработчиков. Но задания были слишком сложными и до конца доходили единицы.
➡️ Шаги и модули. Добавили в уроки шаги — сложность снизилась. Разбили уроки на тематические мини-курсы. Проходить стало легче, но ученики часто терялись, учились медленно, часто забрасывали.
➡️ Менторы. Прорыв случился в 2021 году, когда мини-курсы объединили в единый трек и добавили менторов. Доходимость ступени курса «Профессия Middle Python/Django разработчик» длительностью 5 месяцев увеличилась до 60% даже с учётом времени ожидания код-ревью, локальных проблем с уроками и проектами при доработке курса и из-за изменений условий использования сторонних веб-сервисов, используемых в уроках.
➡️ Проблема выделения времени. И все ещё ученики уходят с курса по схожим причинам — не выделяют время на обучение, теряют мотивацию и силы.
С менторами собрали частные ошибки, которые значительно влияют на на шансы дойти до конца курс:
Проблему качества кода выпускников решили с помощью практического подхода и детального код-ревью от действующих разработчиков. Но задания были слишком сложными и до конца доходили единицы.
➡️ Шаги и модули. Добавили в уроки шаги — сложность снизилась. Разбили уроки на тематические мини-курсы. Проходить стало легче, но ученики часто терялись, учились медленно, часто забрасывали.
➡️ Менторы. Прорыв случился в 2021 году, когда мини-курсы объединили в единый трек и добавили менторов. Доходимость ступени курса «Профессия Middle Python/Django разработчик» длительностью 5 месяцев увеличилась до 60% даже с учётом времени ожидания код-ревью, локальных проблем с уроками и проектами при доработке курса и из-за изменений условий использования сторонних веб-сервисов, используемых в уроках.
➡️ Проблема выделения времени. И все ещё ученики уходят с курса по схожим причинам — не выделяют время на обучение, теряют мотивацию и силы.
С менторами собрали частные ошибки, которые значительно влияют на на шансы дойти до конца курс:
dvmn.org
Курс Python-разработчик: обучение программированию на Python для начинающих
Обучение веб-разработке на Python до уровня Middle. Курс Python-разработчик от Devman с сертификатом и гарантией трудоустройства. Обучись языку программирования и стань востребованным специалистом.
👍1
Обязательная часть техинтервью — Live coding. Live coding позволяет дать оценку способности кандидата разбираться с основными концепциями языка или фреймворка, применять алгоритмический подход к решению задач, а также оценить навыки отладки и тестирования кода. И один из самых распространенных видов задач — алгоритмические. И тут важно регулярно тренироваться, т.к. такие задачки не встречаются в реальной практике и нужно набить руку для успешного прохождения собеса.
Пишите в комментариях свой вариант, а мы проверим и выберем завтра лучшее решение.
☑️ Задача
Палиндром — строка, которая читается в обоих направлениях одинаково. Напишите функцию, которая определяет, является ли строка палиндромом.
Учитывайте только буквы, регистр не важен.
👉 Примеры палиндромов:
«Шалаш»
«А роза упала на лапу Азора»
«И темен город. Мороз, узором дорог не мети»
«Кинь лед зебре, бобер — бездельник!»
➡️Рекомендации для нашего интерактива и для реального собеса:
✅Постарайтесь решить задачу без импортов библиотек, даже стандартных – на собеседованиях они часто запрещены
✅Не забудьте про нейминг и чистоту кода
✅Задайте вопросы, если не до конца понятна задача или критерии приемки
✅Не жульничайте — попытка загуглить решение или воспользоваться ChatGPT может закончится разоблачением и провалом собеса
✅Смотреть документацию можно
✅По возможности добавьте тесты, хотя бы те же
Пишите в комментариях свой вариант, а мы проверим и выберем завтра лучшее решение.
☑️ Задача
Палиндром — строка, которая читается в обоих направлениях одинаково. Напишите функцию, которая определяет, является ли строка палиндромом.
Учитывайте только буквы, регистр не важен.
👉 Примеры палиндромов:
«Шалаш»
«А роза упала на лапу Азора»
«И темен город. Мороз, узором дорог не мети»
«Кинь лед зебре, бобер — бездельник!»
➡️Рекомендации для нашего интерактива и для реального собеса:
✅Постарайтесь решить задачу без импортов библиотек, даже стандартных – на собеседованиях они часто запрещены
✅Не забудьте про нейминг и чистоту кода
✅Задайте вопросы, если не до конца понятна задача или критерии приемки
✅Не жульничайте — попытка загуглить решение или воспользоваться ChatGPT может закончится разоблачением и провалом собеса
✅Смотреть документацию можно
✅По возможности добавьте тесты, хотя бы те же
assert🔥3
☑️ Возвращаемся к вам с нашим вариантом решения:
Это не единственная возможная реализация решения.
В данном решении учтены следующие детали:
✅не забыли вычистить строку и преобразовать регистр букв к единому нижнему
✅воспользовались встроенными возможностями для инвертирования строки
✅использовали list_comprehension для простого цикла, чтобы упростить код
✅код отформатирован согласно PEP8
✅переменным и функции даны понятные названия
✅не забыли про корнер-кейсы — когда после удаления лишних символов остается пустая строка или всего один символ, который не является палиндромом
✅добавлены простые автотесты
У @LuSP7 получился отличный вариант, близкий к нашему. Вынос чистки от лишних символов в отдельную функцию приветствуем и оставляем обоим вариантам право на существование. Спасибо всем, кто поделился идеями здесь и в ВК!
На курсе «Профессия Middle Python/Django разработчик» мы готовим к прохождению технического интервью и разбираем похожие задачки.
➡️ Был опыт live coding на технических интервью? Делитесь своим опытом в комментариях!
def is_palindrome(input_line: str) -> bool:
cleared_line = ''.join([symbol for symbol in input_line.lower() if symbol.isalpha()])
return len(cleared_line) > 1 and cleared_line == cleared_line[::-1]
test_palindromes = [
'Шалаш',
'А роза упала на лапу Азора',
'И темен город. Мороз, узором дорог не мети.',
'Кинь лед зебре, бобер - бездельник!',
]
test_not_palindromes = [
'Шалаши',
'12f21',
'Кинь лед зебре, бобер - крутой зверь!',
]
for palindrome in test_palindromes:
assert is_palindrome(palindrome)
for not_palindrome in test_not_palindromes:
assert not is_palindrome(not_palindrome)
Это не единственная возможная реализация решения.
В данном решении учтены следующие детали:
✅не забыли вычистить строку и преобразовать регистр букв к единому нижнему
✅воспользовались встроенными возможностями для инвертирования строки
✅использовали list_comprehension для простого цикла, чтобы упростить код
✅код отформатирован согласно PEP8
✅переменным и функции даны понятные названия
✅не забыли про корнер-кейсы — когда после удаления лишних символов остается пустая строка или всего один символ, который не является палиндромом
✅добавлены простые автотесты
assert как для палиндромов, так и для строк, которые не являются палиндромамиУ @LuSP7 получился отличный вариант, близкий к нашему. Вынос чистки от лишних символов в отдельную функцию приветствуем и оставляем обоим вариантам право на существование. Спасибо всем, кто поделился идеями здесь и в ВК!
На курсе «Профессия Middle Python/Django разработчик» мы готовим к прохождению технического интервью и разбираем похожие задачки.
➡️ Был опыт live coding на технических интервью? Делитесь своим опытом в комментариях!
👍1
⚡️ 17-19 октября примем участие в форуме Innovation week и расскажем о том, как сделать свою рабочую систему контрактов и не сойти с ума 🔥
От нас выступают спикерами Евгений Евсеев — основатель и технический директор Devman и Артем Каменев — операционный директор подразделения заказной разработки PelidTeam
🔄 На форуме будем обсуждать самые актуальные вопросы, связанные с технологиями в бизнесе, трансформациями бизнес-моделей, прогнозами и трендами.
🔣Дата мероприятия: 17-19 октября.
🔣Место: Москва, ВЭБ центр. Новинский бульвар д.31
➡️ Будете там же? Отмечайтесь в комментариях и увидимся на форуме!
От нас выступают спикерами Евгений Евсеев — основатель и технический директор Devman и Артем Каменев — операционный директор подразделения заказной разработки PelidTeam
🔄 На форуме будем обсуждать самые актуальные вопросы, связанные с технологиями в бизнесе, трансформациями бизнес-моделей, прогнозами и трендами.
🔣Дата мероприятия: 17-19 октября.
🔣Место: Москва, ВЭБ центр. Новинский бульвар д.31
➡️ Будете там же? Отмечайтесь в комментариях и увидимся на форуме!
🔥3
Каждый разработчик-бэкендер на Python умеет и регулярно пользуется Git-ом. В консоли, в десктопном клиенте или встроенным в IDE интерфейсе. Git позволяет управлять исходным кодом:
➡️ не перетирать изменения других разработчиков,
➡️ иметь несколько версий кода, смотреть предыдущие версии,
➡️ служит дополнительной документацией и помогает делиться кодом.
Об умении работать с Git спрашивают почти на каждом собеседовании на вакансию разработчика.
Но для новичка с ходу разобраться с инструментом — боль и слезы. Давайте разберемся в основных понятиях. .
👉 Изучить работу с Git и Github можно в нашем мини-курсе
➡️ не перетирать изменения других разработчиков,
➡️ иметь несколько версий кода, смотреть предыдущие версии,
➡️ служит дополнительной документацией и помогает делиться кодом.
Об умении работать с Git спрашивают почти на каждом собеседовании на вакансию разработчика.
Но для новичка с ходу разобраться с инструментом — боль и слезы. Давайте разберемся в основных понятиях. .
👉 Изучить работу с Git и Github можно в нашем мини-курсе
🔥5❤1👍1