КАТАЛОГ ТОВАРОВ

Срок доставки товара в течении 1-3 дней !!!

 

ПОЛЬЗОВАТЕЛЬ
КОРЗИНА

Где перспективно и адекватно использовать Python. Python разработчик


Где перспективно и адекватно использовать Python / Хабр

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

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

Что ты можешь сделать на Питоне

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

Микроконтроллеры (весьма сомнительно)

Хотя Андрей Власовских на прошедшем PYCON Russia 2017 в своей фирменной манере с энтузиазмом рассказывал о том, как программировать микроконтроллеры на таком инструменте, как MicroPython, а Кирилл Борисов даже предлагал изучить некоторую зарубежную литературу, ситуация в общем никакая.

Список микроконтроллеров, которые поддерживаются Python, стремится к нулю, коммерческая эффективность и наличие предложений по работе практическая нулевая. С учетом того, что есть более традиционные способы инструменты программирования, пока какая-то большая компания не вложится в этом направление, тут делать нечего.

Девопс (адекватно)

Анализ рынка показывает, что примерно треть всех вакансий, где упоминается Python, относятся к сфере DevOpsa. Однако Python идет не основным инструментом, а той технологией, которую знать желательно. Это связано с тем, что Python практичности полностью сместил Perl для Linux, и неплохо так подвинул Bash в области написания крупных скрипов и более крупных серверных компонентов. Также к этому добавляется то, что интерфейс многих тулзов принимает Python в качестве языка сценариев.

Если вы хотите развиваться в сфере Девопса, то знание Питон вам будет большим плюсом, все остальные проходят эту сферу стороной.

Что касается коммерческой перспективы (стартапа) данного направления, то сложно представить человека, который бы смог написать и монетизировать какой-то инструмент, не имея опыта 5+ лет в области девопса.

Тестирование (адекватно)

Хотя главным инструментом автоматизации тестирования является кровавая Java, которая имеет огромный набор фреймворков и готовых решений, порой небольшие компании используют Python для полноценного тестирования, либо написания сценариев для тулзов, типа Яндекс.Танк с его BFG.

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

Вакансий под тестирование примерно также треть от общей массы, часто в вакансиях указывают знание и Python и Java одновременно.

Desktop development (сомнительно)

В настоящий момент язык Python имеет 5 кросc-платформенных инструментов, которые позволяют писать «полноценные» приложения под Windows/Linux/Mac
  • Tkinter
  • PyQt
  • PyGTK
  • WxPython
  • Kivy (Условно)
Однако практика показывает, что ни один из инструментов не делает 100% кросс-платформенное приложение, которое бы нативно выглядело на каждой из платформ. То там, то там появляются различные косяки, нестыковки, битые контроллеры и прочая грязь.

Поэтому можно с уверенностью сказать, что писать коммерческий Desktop на питон – это весьма сомнительная затея, и компании этим редко занимаются (либо переписывают при первой же возможности, как это сделал DropBox).

Что касается внутренних инструментов, то использование небольших GUI-приложений применяется, но искать целенаправленно Desktop Python разработчиков не будут.

Кто же хочется заняться этой сферой более полно, прошу к Игорю Новикову, который нашел неплохой способ сшить Франкенштейна с помощью абстракционного слоя – ссылка

Mobile Development (весьма сомнительно)

Все плохо, в качестве pet проектов можно использовать Kivy, для реальной разработки весьма сомнительно, вакансий на Kivy нет.

Т.е. как, я лично разговаривал с рядом людей, которые имели свой веб-проект на Python и для захвата большой аудитории писали приложения на Kivy, и у них его даже использовали, но это имеет вид «Программист пишет то, на чем хочет».

Машинное обучение и Data science (адекватно и перспективно)

Это одна из самых хайповы областей современного IT-мира, где используется Python в качестве инструмента апробации. Python имеет ряд удобных библиотек машинного обучения и научных расчетов: Pandas, NumPy, SciPy, Scikit-Learn, которые позволяют достаточно быстро построить рабочие модели. И они на самом деле неплохо работают.

Что касается использования, то Python используется в качестве инструмента апробации, либо на небольших задачах. Если проект большой, то обычно модель пишут на Java/Scala/C++, а специалист по обучению уже выступает в качестве консультанта/аналитика.

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

По вакансиям все довольно неплохо, но в таких вакансиях требуется не знание Python, а ваша голова.

Тем, кто хочет быстренько пощупать данное направление, советую прочитать книгу: «Vvedenie_v_mashinnoe_obuchenie_s_pomoschyu_Python_-_A_Myuller_S_Gvido_2017» — есть на торрентах, читается быстро, представление дает хорошее.

Веб-скрапинг (возможно, но сомнительно)

Питон имеет три вещи, которые делают его весьма эффективными в области веб-скраппинга, бибиотеку Requests, beautifulsoup и АПИ для Selenium. Если сюда подключиться библиотеки для компьютерного зрения и Машинное обучение, то получаются весьма эффективные инструменты.

Проблема заключается в том, что вакансий в этой сфере мало, основные клиенты сидят на фрилансе, которые предлагают за фикс написать им скрипты парсинга для их говно-сайтов, спам-машин, и изредка генераторов отзывов.

Область интересная, но денег в ней мало.

Компьютерное зрение (сомнительно)

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

GameDev (сомнительно)

Практически в каждом обсуждении разработки игры на Python приводят в качестве примера eve online и WarGaming. Однако в первом случае используется stateless python, а во втором случае все ограничивается языком написания сценариев.

Что же касается реального использования, то у вас появляется три движка Kivy, PyGame, Panda3D, если первые два больше подходят для пет-проектов, то третий реально использовался на боевых проектах неплохого качества, правда эти проекты были 2004 года. Что как бы намекает, что использование проверенных движков на других языках типа Unity или Game Maker выглядит более убедительно.

Однако незаметно сюда крадется движок Ren’Py, который внезапно стал лучшим движков для написания визуальных романов (страдальческих историй для девочек), которые неплохо окупаются даже в рамках РФ. Серия «7 демонологов Петра Великого», тому доказательство.

Вакансий в GameDev для питона естественно нет, но деньги на «стартапе» поднять можно при должной сноровке. Но надежней взять другой язык и проверенные движки.

Веб-разработка (адекватно и перспективно)

Питон входит в тройку языков (Python, PHP, Ruby), которые обладают развитыми экосистемами быстрой разработки веб-проектов адекватного качества. Ключевыми платформами тут являются:
  • Django (монолитный синхронный фреймворк)
  • Flask (микро синхронный фреймворк)
  • Tornado (монолитный асинхронный фреймворк)
  • Twisted (монолитный асинхронный фреймворк)
  • Aiohttp (микро асинхронных фреймворк)
В настоящий момент большую часть рынка занимает фреймворк Django, но с приходом идей микросервисов постепенно обороты стал набирать Flask. Что касается асинхронности, то тут все сложно, так как Tornado и Twisted признаны устаревшими (хотя на них работают многие компании, тот же Тиньков), а aiohttp весьма сырой, и его использование ставится под большим вопросом.

Сила Python заключается в том, что он позволяет быстро разрабатывать комплексные веб-приложения, имеет огромное число качественных модулей, прекрасно подходит для сервисов статистики и аналитики (где, в общем, и идет для него большая часть вакансий). Данное направление занимает оставшуюся треть всех вакансий.

Отдельно хочется отметить написание ГИС сервисов на Python, которые хотя и имеют вполне адекватный инструментарий для работы с геоданными, но все же использование Java для этих целей выглядит перспективней.

Выводы об использовании питона

1) Что касается сферы девопса и тестирования, то Питон является ключевым инструментом профессии, который обязателен для каждого адекватного специалиста. Питон в данном случае не учат, к нему приходят по необходимости.

2) Наиболее перспективными выглядят сферы веб-разработки и машинного обучения (аналитики), которые явно выделяют питон на фоне его конкурентов в виде PHP и Ruby. И если вы хотите изучить питон, то вам желательно сосредоточится именно на этих сферах и не тратить свое время на что-то другое. Под это есть вакансии, на этом можно построить стартап.

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

habr.com

Почему не нужно учить python первым языком / Хабр

Если вы будете искать ответ на вопрос: «Какой язык программирования выбрать первым», то где-то в 90% всех случаев вам будет предложен Python — как наиболее простой в изучении язык. И очевидно, что определенное число людей, которые до этого не учили программирование, выберут Python из-за этих рекомендаций. И вот тут у нас начинается проблема, о которой пойдет речь ниже. Конечно, с описанием того, как я дошел до такой жизни.
О себе
Еще в студенческие годы я понял, что моя специальность не такая уж радужная, как мне казалось в 18 лет. Поэтому я стал думать о том, как заработать адекватные деньги. И наслушавшись историй о том, как мой двоюродный брат получал безумные на то время деньги в 1С, я также решил связать свою жизнь с IT.

Изначально это были шаблонные сайты на конструкторах и wordpress, потом я занялся SEO, и в один момент наткнулся на Хабр, после чего решил стать полноценным программистом. Высшей математики у меня не было, поэтому я решил выбрать сферу, где она не требуется – веб-разработка.

У меня появился очевидный вопрос: какой язык выбрать – php/python/ruby. Насмотревшись статей на Хабре, почитал хейт в сторону php, посмотрев пару мотивационных роликов от Yandex. Я выбрал Python. Преимущества языка, я надеюсь, вы знаете, поэтому не буду про это говорить.

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

1) Изучил книги:

  • Марк Лутц — Изучаем Python
  • Марк Лутц — Программирование на Python
  • Чед Фаулер – Программист Фанатик
  • Билл Любанович – Простой Python
2) Изучил множество роликов от Украинских/Буржуйских авторов по Django 3) Прошел курс от codeacademy 4) Освоил PyCharm
Свой первый проект
Далее у меня появилась идея небольшого сервиса на весьма специфичную тематику, который я решил сделать, чтобы закрепить знания Python + Django.

В создания сайта я

1) Изучил книги:

  • Джон Дакетт — HTML и CSS. Разработка и дизайн веб-сайтов
  • Дэвид Флэнаган — JavaScript. Подробное руководство
  • Бен Форта — Освой самостоятельно SQL.
2) Изучил документацию Django под свои задачи 3) Изучил деплой проектов на Django Gunicorn + nginx + centOS
Свой первый нормальный проект
После того, как первый адекватный сайт провалился, я решил создать уже что-то стоящее, выбрал идею, выбрал схему реализации и за 3 месяца по вечерам его сделал.

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

После прочтения книги «Percival H. — Test-Driven Development with Python», решил написать тесты сначала на основе компонентов Django, потом поднял документацию селениума, и уже сделал внешние тесты.

Я хочу быть крутым
Открыв вакансии по Python-Django разработчикам, я посмотрел что еще обычно требуется в таких вакансиях:
  • Django Rest Framework
  • Celery
  • Tornado/Twisted/ asyncio (На выбор что-то одно)
  • Class-based view Django
  • Angular/React (На выбор что-то одно)
Потратил 3 месяца на знакомство/пробование с этими штуками. Также поднял стандартную библиотеку Python + внешняя библиотека для парсинга beautifulSoup.
Ты не тру без C/C++
Бытует мнение, что без знания C/C++ программист не может называть себя программистом. Поэтому когда у меня было свободное время, я познакомился с книгами:
  • Брайн Керниган – Язык программирования С
  • Стенли Б ЛиппМан – Язык программирования С++. Базовый курс
Прочитал книги, поковырялся с кодом, посмотрел на компиляцию, посмотрел примеры кода. В общем, теперь я не делал большие глаза при упоминании ссылок, указателей, сортировок, ООП и туче разных массивов с разными скоростями обработки элемента, в зависимости от его позиции.
Я готов к бою!
И вот тут мы приходим к самому важному моменту. Потратив в общей массе 2 года на изучение всех элементов веб-программирования, о которых я говорил выше. Я посчитал себя достаточно готовым, чтобы претендовать на позицию веб-разработчика на Python. Конечно, что-то я знал не очень хорошо, что-то поверхносто, а что-то вообще не знал (например, Flask), но общее понимание и навыки были неплохими.

И вот тут начались проблемы с Python, на которых люди чаще всего не заостряют внимание. А именно на востребованности бизнеса в Python-разработчиков junior/pre-middle уровня.

С этим вопросом я вышел на рынок
Хотя на первый взгляд кажется, что вакансий на Python достаточно много, но когда начинается конкретика, все резко меняется.

1. Сразу идет большой отсев вакансий, где Python является исключительно вспомогательным языком. Чаще всего это позиции Java-разработчиков, Системных Администраторов, QA-Автоматизация. Также сейчас идет большой отсев по Data Learning, где требуется мат-образование + язык R. Т.е. с одним Python вы эту вакансию не сможете подобрать.

2. Оказалось, что в моем городе вакансий под Python нет, от слова вообще нет. Расширив поиск по всей области, я также получил неудовлетворительный результат. Пару вакансий на PHP, где Python шел «будет плюсом». Открыв фильтр за последние 3 года, я также обнаружил, что вакансий на Python не было вовсе. Т.е. бизнес в провинции чаще всего выбирает более простые и популярные технологии, нежели Python.

3. Открыв вакансии на Python в общем поисковике, я обнаружил следующие тенденции:

  • 90% + вакансий находятся в Москве или Санкт-Петербурге
  • 90% + вакансий требуют уровень middle+ / seniour
  • ~100% вакансий junior позиций в Москве или Санкт-Петербурге (чаще всего от гигантов)
Другими словами получилась ситуация, что если ты не живешь в Москве, Санкт-Петербурге и не собираешься ехать их «покорять», то тебе практически негде получить свою первую работу.

Конечно, есть пару очагов, где Python еще используется, например, в Казани. Но чаще всего это какая-то одна фирма, где с Вакансиями тоже весьма middle+ / seniour.

4. Вариант поиска удаленки на текущий уровень также показал, что работодатели не готовы идти на такой риск. Мало опыта + удаленка = это какая-то фантастика. Тем не менее, я все же смог найти пару вариантов, но уже в ходе первичного собеседования стало понятно, что это ерунда по типу: «Ты у нас три месяца поработай, и если клиент заплатит за твою работу, мы тебе тоже заплатим». Не самый лучший вариант.

5. Поговорил с парой HR из крупных компаний, они высказали такую тенденцию. «Мы обычно берем людей с опытом на Python от года, плюс опытом на другого языке (3+ года). Чаще всего php/Java». Другими словами, они вообще не рассматривали варианты, чтобы взять человека с одним лишь Python.

6. Поговорив с ребятами с профильных форумов, стало понятно, что это достаточно типичная ситуация. Из их рассказов стало понятно, что люди после тщетных поисков либо шли работать на php/1c, либо как-то пролазили через upwork/собственный проект/автоматизацию тестирования. Но опять же от случая к случаю.

В общем, оказалось, что Python – это отличный язык, который позволяет делать мощные проекты. И так уж сложилось, что их концентрация находится в столицах. И раз это сложные проекты, то и сотрудники туда требуются уже уровня middle+. Готов ли человек, который только что изучил Python получить такую вакансию? Трудно!

Но есть другой путь!
В настоящий момент только в моем городе находится 24 вакансии на php различного уровня (начиная от небольших компаний, которым нужно поддерживать текущий сайт, заканчивая гигантами e-commerce, которые предлагают последовательное расширение функционала). И примерно столько же вакансии на 1С. И где-то на половине из этих вакансий готовы взять человека, который хотя бы что-то знает в программировании. Скорее всего, это не самые лучшие места, но это уже первая работа, после который вы официально для HR станете программистом с опытом.
Так что в итоге
Получается ситуация, что можно изучить клевый язык программирования Python и остаться на улице. А можно выучить «ненавистный» php/1c и получить работу. Качество этой работы, конечно же, оставляет много вопросов – но это уже опыт.

Что касается меня, то в моих условиях (не ехать в Москву/СПб) я фактически потратил время на изучение языка, который сейчас востребован исключительно в моих собственных проектах. Найти работу на месте или удаленке у меня не получилось. Сейчас иду в сторону php, так как на нем банально есть работа.

Поэтому если вы не живете в Москве, СПб, не являетесь студентом тех-вуза, то я бы не советовал вам учить Python первым языком. Обратите внимание на PHP – под него всегда есть места, есть работа, есть опыт. А дальнейший путь развития уже за вами.

P.S. Как подсказал мне мой знакомый, на Ruby почти такая же ситуация. Но тут я уже говорить с уверенностью не могу.

habr.com

Интервью с python-разработчиком Александром Кошкиным о языке Python и жизни в США

Серию интервью со спикерам PyCon Russia продолжает разговор с Александром Кошкиным, python-разработчиком в компании Positive Technologies. Последнее время Александр живет в Бостоне и занимается разработкой различных компонентов PT SIEM. Мы поговорили с Сашей про python и его жизнь в США.

Александр — спикер многих конференций. Вот, например, его выступление «Знай и люби свой PyObject, ты же программист» на Python Meetup в Минске— Как ты пришел к разработке на python?

— В программирование я пришел из физики твердого тела, где мы работали над тем, что сейчас (с известным скепсисом) называют нанотехнологиями. Там мне впервые пришлось писать более-менее серьёзный код. Python же впервые использовал для парсинга каких-то логов программы abinit и автогенерации половины моей дипломной работы.

— Над чем ты сейчас работаешь?

— Разрабатываю SIEM в Positive Technologies, потихоньку собеседую людей, кстати, не хочешь попробоваться?

— Что является лучшей и худшей частью твоей работы?

— Худшая — фиксить чужие баги, лучшая — создавать свои.

— Что ты считаешь своим главным достижением в жизни и карьере на данный момент?

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

— На твой взгляд, в каком направлении будет развиваться Python в ближайшие годы?

— Думаю, что будущее за альтернативными имплементациями интерпретатора, Pyston выглядит неплохо. У CPython слишком много родовых травм.

— В чём, на твой взгляд, самая важная проблема, которая стоит сейчас перед сообществом разработчиков Python?

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

— Какие инструменты ты используешь для организации работы (в том числе для планирования времени, организации рабочего пространства и т.п.)?

— Корпоративного youtrack и teamcity мне вполне достаточно (здесь могла бы быть ваша реклама).

Александр живет в Бостоне, но много путешествует по стране— Ты читаешь какой-нибудь профессиональный блог? Какие информационные ресурсы ты мог бы порекомендовать коллегам для развития скиллов?

— Читаю BDFLа — очень любопытны его исторические очерки, Илая Бендерски с его обзорами литературы. У Янива Акнина очень занимательный блог. Ну, а так, ничего эдакого — слежу за гитхабом Селиванова, коммит хистори у него, как блог.

— Чем тебе нравится заниматься, когда ты не пишешь код? Удается ли тебе соблюдать work&life balance? Если да, то как, если нет, то надо ли оно тебе вообще?

— Люблю работать отрывками по паре часов в течение всего дня, если бы не жена, то так бы и сидел дома =) В свободное время с переменным успехом пытаюсь читать умные книги.

— Чем отличается жизнь и работа питониста в России и в США? Пришлось ли тебе столкнуться с чем-то неожиданным/непривычным в плане организации работы, быта, может быть, менталитета?

— Я продолжаю работать в российском отделении Positive Technologies, так что как быть питонистом в Штатах не скажу. Могу сказать только то, что движухи в целом тут намного больше, чем в России, все заняты в каких-то стартапах, есть ощущение, что оторвав свое тело от дивана, можно поднять крутой бизнес. Уж не знаю почему, но живя в Питере, я такого не чувствовал. Впрочем, это меркнет на фоне другой отрасли, набирающей сейчас обороты. Имя ей — биотехнологии. Я нигде не видел такой концентрации биологических лабораторий и, как следствие, концентрации больших денег, как в Бостоне, думаю, в ближайшие годы следует ожидать значительных результатов в этой области.

Что касается быта, то тут, конечно, очень даже комфортно — на улицах чисто, все вежливые и участливые. Из минусов — очень удивила труднодоступность качественной медицины, сходить к врачу очень муторно и дорого. Могу ли я посоветовать переезжать в Штаты? Да, если ты смел, ловок и умел, ведь жизнь тут совсем другая и родные березы не шумят своими кронами.

Смелый, ловкий, умелый Александр теперь фотографируется на фоне пальм, а не берез 3-4 июля Александр будет на PyConRu и сделает доклад с чудесным названием «Знай и люби свой CPython во имя луны и великой справедливости». Александр рассмотрит блоки, из которых сделан интерпретатор, расскажет, как они взаимодействуют, объяснит, как они работают на низком уровне и покажет, какой профит и проблемы из этого можно получить.

Еще в программе этого года: Raymond Hettinger (Python core developer с 2001 года, автор и мэйнтейнер многих частей языка, США), Martin Gorner (Google, Франция), Nathaniel Manista (Google, США), Armin Ronacher (Flask framework, Австрия), David MacIver (Hypothesis, Великобритания), Jackie Kazil (Capital One, США), Ben Nuttall (Raspberry Pi, Великобритания), Александр Сибиряков (Scrapinghub, Чехия), Андрей Светлов (DataRobot, Украина), докладчики из Rambler&Co, JetBrains, Ostrovok.ru, Яндекса, HeadHunter — и это еще не все.

Присоединяйтесь!

Спасибо нашим спонсорам: Генеральному спонсору — компании Positive Technologies, Золотому спонсору — компании JetBrains, Серебряному спонсору — компании Rambler&Co, Бронзовому спонсору — компании Ostrovok.ru.

habr.com

Разработчик на Python

Первый блок. Занятия 1-7.
Занятие 1: Введение

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

  • Общее знакомство с `Python`, его историей и перспективами
  • Общее знакомство с версиями `Python` 2.7 и 3
  • Настройка и установка `Python` 2.7 и 3 на локальные машины
  • Установка `SublimeText`(Text Editor)
  • Настройка и установка `git`, регистрация на github
  • `print 'Hello Pythonic world!'`, первый commit и push на github
  • Детальный разбор, что же произошло в пункте выше
  • Знакомство с базовым синтаксисом, базовые типы данных
  • Что такое переменная? Как ее объявить, и где ее видно?
  • Знакомство со структурами языка: ветвления, циклы, условия
  • Stackoverflow-driven development, секция о том, как самому найти ответы на свои вопросы
Занятие 2: Первое приложение

Результат занятия: приложение-игра, "крестики-нолики" в консоли.

  • Знакомство с командной строкой
  • Управление зависимостями, `pip`, установка первых внешних пакетов
  • Знакомство с `virtualenv`, создание среды
  • Установка `PyCharm`(IDE)
  • Продолжение знакомства с типами данных в `Python`, принцип "присваивание никогда не копирует данные": массивы, словари, кортежи
  • Что такое Функция? Введение в функциональное программирование
  • Обработка исключений
  • Дебаг приложения
  • Написание игры "крестики-нолики" в функциональном стиле
Занятие 3: Объектно-ориентированное программирование

Результат занятия: приложение "список дел и покупок".

  • Что такое Объект? Знакомство с ООП
  • Принципы ООП: абстракция, наследование, инкапсуляция, полиморфизм
  • Волшебные методы и константы: `__init__()`, `__str__()` и `__dict__`
  • `Python`'s `super()`, `mro()`, новые и старые классы
  • `@staticmethod` и `@classmethod`, переменные класса
  • Принципы проектирования: наследование, агрегация и композиция
  • Продолжение знакомства с языком `Python`: декораторы, свойства, генераторы, `lambda`, `list-comprehension`
  • Zen of Python
  • Написание приложения "список дел и покупок" в объектном стиле
Занятие 4: Версии Python, межверсионный код
  • В чем основные отличия `Python` 2 и 3?
  • `str` и `unicode`
  • Другие важные изменения
  • Какую версию интерпретатора выбрать для нового проекта?
  • Как писать код под обе версии `Python`? Знакомство с `six`, `2to3`, `3to2`
  • Наступившее будущее: что нового в `Python` 3.5?
  • Могу ли я улучшить `Python`? Или что такое `PEP`
Занятие 5: Усложнение программ

Результат занятия: приложение-игра "морской бой" с ИИ.

  • Принципы разработки ПО: DRY, KISS, YAGNI, SOLID
  • Частые ошибки при написании кода
  • Работа с файлами
  • Текстовые форматы обмена данными: `.json`, `.csv`, и как с ними работать
  • Какие есть способы завершить приложение?
  • Написания игры "морской бой" с ИИ с сохранением игры, в объектном стиле
Занятие 6: Создание веб-паука

Результат занятия: приложение, которое бы заходило на страницу соц.сети и забирало оттуда все статусы и/или фотографии.

  • Как устроен интернет? Знакомство с `TCP/IP`, `DNS` и клиент-серверной архитектурой
  • Зачем нам `http` перед адресом? Знакомство с протоколом `HTTP` с модулем `urllib`
  • Что такое регулярное выражение? Модуль `re`
  • Что такое веб-страница? Основы `HTML` разметки, знакомство с `HTML5` тегами
  • Написание веб-паука на основе `Scrapy`, который будет получать статусы со страницы соц.сети и сохранять результаты в файле
Занятие 7: Первый web-проект, backend

Результат занятия: приложение-блог без базы данных, без стилей и скриптов.

  • Что такое backend и frontend?
  • Как работает сервер на примере `Flask`?
  • Какой путь проходит запрос, и какие бывают запросы?
  • Введение в `MVC` и `MTV`
  • Как происходит роутинг?
  • Что такое шаблон? И как работать с `Jinja2`?
  • Зачем нужны формы, и как с ними работать?
  • Написание первого web-приложения
Второй блок. Занятия 8-14.
Занятие 8: Основы баз данных

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

  • Какие бывают базы данных? Знакомство с `MySQL`, `PostgresSQL`, `SQLite` и `Redis`
  • Основы РСУБД: таблицы и связи между ними (OneToOne, OneToMany, ManyToMany)
  • Введение в `SQL`
  • Проектирование баз данных, нормальные формы
  • Транзакции, индексы
  • Введение в `NoSQL`: `key-value` хранилище, установка `Redis`
  • Введение в `ORM` на примере `SQLAlchemy` (для `SQLite`) и `redis-py`
  • Написание моделей для блога, создание кеша в `Redis`, добавление постраничного вида
Занятие 9: Первый web-проект, frontend: CSS

Результат занятия: приложение блог, с css стилями

  • Что такое `CSS`? Как работают селекторы?
  • Классы, id, теги
  • Зачем веб-страницам нужна сетка?
  • Что такое адапативный дизайн? Знакомство с `media-query`
  • Что такое `fallback`?
  • Подходы к написанию `CSS`: mobile-first и наоборот
  • Прогрессивное улучшение
  • Методологии написания `CSS`: `bem` и другие
  • Что такое компонент? И что такое `styleguide`?
  • Установка `node.js`, `npm` и `bower`
  • Почему так часто используют `Twitter Bootstrap`? Знакомство с библиотекой
  • Написание стилей для своего блога
Занятие 10: Введение в JS

Результат занятия: небольшой проект на JS

  • В чем схожести и отличия `javascript` от `Python`?
  • Какой бывает `javascript`?
  • Типы данных
  • Структуры языка
  • Область видимости переменных
  • Функции, и что такое `this`?
  • Объекты `window` и `document`
  • Что такое `polyfill`?
  • Как дебажить `js` приложение?
  • Написание своего небольшого frontend-проекта
Занятие 11: Первый web-проект, frontend: jQuery

Результат занятия: предварительный frontend для своего приложения

  • Что такое библиотека `jQuery`?
  • Когда она нужна, когда без нее можно обойтись, а когда она нежелательна?
  • Методологии огранизации кода или "Как варить лапшу"
  • Событийная модель браузера
  • Знакомство с `$.ajax()` и `CORS`
  • Манипуляции с `DOM`
  • Улучшение производительности кода
  • Написание frontend для своего проекта
Занятие 12: Автоматизация рутинных задач с Grunt

Результаты занятий: готовый frontend для своего приложения

  • Зачем нужна автоматизация задач?
  • В чем разница между ``
  • Улучшение `CSS` с `autoprefixer`
  • Знакомство с `PostCSS` и два слова о препроцессорах
  • Уменьшение размера текстовых файлов и картинок
  • Модульная система для `js` на примере `browserify`
  • Моментальное изменение страницы с `liveserver`
  • Зачем нужна система версий для статических файлов?
  • Создание `Gruntfile.js`, первый build frontend'а
Занятие 13: Django

Результат занятия: написан скелет будущего приложения Django

  • Что такое `Django`? И как работает данный фреймворк?
  • Какой путь проходит запрос в жизненном цикле приложения?
  • Знакомство с Middleware
  • url-routing, `include()` и `reverse()`
  • `Django`'s MVT, знакомство с `Django-Templates`
  • `views` и `class-based views`
  • Простые формы, валидация форм
  • Статические файлы
  • Организация настроек приложения
  • Написание скелета будущего проекта
Занятие 14: Django ORM

Результат занятия: написание моделей к приложению

  • Знакомство с моделями
  • Установка и настройка `PostgreSQL`
  • Отношения моделей между собой: `OneToOne`, `ManyToMany` и `ForeingKey`
  • Как написать запрос?
  • Как написать сложный запрос? `annotate()`, `aggregate()`
  • Сигналы
  • Миграции, обзор исторического `South` и текущего `Django-Migrations`
  • Написание моделей к приложению
Третий блок Занятия 15-21.
Занятие 15: Работа с моделями в Django

Результат занятия: доработка моделей, оптимизация и отладка

  • Как сделать сложный запрос проще? `select_related()`, `values()`
  • Следим за запросами с помощью `django-debug-toolbar`
  • Создание и валидация `ModelForm`
  • Работа в `FileField` и `ImageField`, сохранение пользовательских медиа файлов
  • Наследование моделей, абстрактные модели и миксины
  • Менеджеры
  • `raw queries`: плюсы и минусы
  • Доработка своего приложения
Занятие 16: Администрирование Django приложения

Результат занятия: написанная админская часть приложения

  • Как устроена админская панель?
  • Как администрировать приложение?
  • Авторизация пользователей, группы и права доступа
  • Создание собственных `admin-view`
  • Знакомство с `django-admin-tools`
  • `Django Management Commands`, создание своих комманд
  • Как правильно вести логи?
Занятие 17: Тестирование Python приложения

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

  • Что такое тест, и зачем тестировать приложение?
  • Какие бывают тесты? В чем разница между unit-тестыми и интеграционными тестами?
  • Модуль `unittest` в `Python`
  • Что такое "изоляция"? Знакомство с модулем `mock`
  • Тесты для нескольких версий `Python` с `tox`
  • Интеграционные тесты с `selenium`
  • Сколько кода покрыто тестами? Введение в `coverage`
  • Написание тестов к своему проекту, достижение покрытия в 70-80%
Занятие 18: Тестирование Javascript приложения

Результат занятия: напиание тестов для своего приложения

  • Почему у `js` так много фреймфорков для тестирования?
  • Тестировани при помощи `mocha`, `Chai` и `Sinon`
  • Изоляция: моки, шпионы и удары в спину
  • Тестирование картинками, или как работает `gemini`
  • Как запустить все тесты сразу? Знакомство с `polytester`
  • Автотесты локально на примере `Grunt` и удаленно на примере Travis CI
Занятие 19: Введение в TDD и BDD

Результат занятия: написание модуля в TDD стиле, создание BDD тестов

  • Что такое `Test Driven Development`?
  • Плюсы и минусы такого похода
  • Тестирование `Django` приложения при помощи `LiveServerTestCase` и `StaticLiveServerTestCase`
  • Почему TDD и BDD часто сравнивают?
  • Как описать поведение приложения? Введение в псевдо-язык `gherkin`
  • Сравнение BDD фреймворков для `Python`
  • Запуск BDD тестов
  • Когда такие подходы нужны, применимы и потивопоказаны? И когда писать какие тесты?
Занятие 20: Celery

Результат занятия: написание асинхронных задач для своего проекта

  • Настройка и установка `Celery with Redis`
  • Знакомство с асинхронными задачами
  • Периодичные задания с `Celery Beat`
  • Конроль выполнения задач с `Celerycam`
  • Мониторинг `Redis`
  • Как дебажить `Celery`?
  • Написание асинхронных задач
Занятие 21: Полезности для Django разработчика

Результат занятия:

  • Краткое знакомство с популярными библиотеками
  • `python-social-auth`
  • `django-rest-framework`
  • `django-cms`
  • `Elasticsearch`
  • `Sentry` и `Raven` (+ `raven.js`)
Четвёртый блок. Занятия 22-26.
Занятие 22: Безопасность

Результат занятия: скрипты для XSS атаки, добавление дополнительных настроек безопасности в проект

  • Какие бывают атаки?
  • Какие средства предлагает `Django`, чтобы избежать потенциальных атак?
  • Content Security Policy
  • Пишем свой XSS
  • Протокол HTTPS
  • Аудит сайта на безопасность
Занятие 23: Документация

Результат занятия: Документирование своих приложений, генерация документации

  • Как документировать `Python` приложение?
  • Умные `doc-string`, знакомство со `Sphinx`
  • Тесты в документации
  • Как документировать `CSS` и зачем? Знакомство с `KSS`
  • Создаем свой `styleguide` в два клика
  • Документривание `js`
  • Генерация документации по проектам
Занятие 24: Математика в Python
  • Что такое `anaconda`?
  • Фреймворк `Pandas`
  • Знакомство с `numpy`
  • `iPython Notebook`
  • `matplotlib`
Занятие 25: Деплой на UNIX сервер

Результат занятия: деплой своего приложения на сервер, создание шаблонов конфигураций

  • Отличия боевого сервера от сервера разработки
  • Создание окружения
  • `gunicorn` vs `uwsgi`
  • Создание сервисов в `supervisor`
  • Установка и конфигурация `nginx`
  • Установка дополнительных сервисов
  • Установка `pydevd` и удаленный дебаг
Занятие 26: Приложение в реальной жизни
  • Что делать, когда все пойдет не так
  • Как поддерживать свое приложение?
  • Как поддерживать чужое приложение?
  • Метрики (CTR, конверсия), AB-тестирование
  • Куда расти и что делать?

mari.tceh.com

Python разработчик (Красноярск)

Ищем разработчика веб-приложений на Python.

Про нас:

У нас работают талантливые разработчики, архитекторы, проектировщики, менеджеры, дизайнеры, инженеры, тестировщики, использующие новые технологии в реальных проектах, которые мы создаем с нуля. Мы решаем нетривиальные алгоритмы и задачи, которые позже переезжают жить на Amazon AWS / Azure / Google Apps при помощи нашей блистательной DevOps-команды.

Мы живем в разных странах, городах и часовых поясах, но совместно работаем над VR (Virtual Reality), IoT (Internet of Things), Wearables, веб-проектами и мобильными приложениями (вместе с бэкендом), Unity Gaming, Enterprise бизнес-приложениями. Мы профессионально говорим на разных языках - русском, английском, немецком, турецком, китайском, вьетнамском и ”без акцента” на Python, С#, PHP, Javascript, AngularJS, Java, Swift, Objective-C, C/C++. Мы находимся на трех континентах (Европа, Азия, Америка) и постоянно путешествуем между ними, по работе и просто так.

Про вас:

  • Отлично понимаете Python3, Python internals, структуры и алгоритмы (queue, binary tree, etc), шаблоны проектирования.

  • Предлагаете обдуманные и аргументированные решения и реализуете их с минимумом багов (или вообще без них)!

  • Планируете свое решение, прежде чем написать первую строчку кода.

  • Умеете тестировать свой собственный и чужой код (unit tests, integration tests, manual tests).

  • Понимаете, что такое сложность алгоритмов по O-нотации.

  • Ваше решение будет выдерживать рост нагрузки на сервера.

Плюсом будет:

  • Глубокие знания Django & Django Rest Framework.

  • Практические знания в области оптимизации и профилирования Python кода.

  • Практические знания в области оптимизации и профилирования SQL / NoSQL запросов (explain - ваш лучший друг!).

  • Опыт работы с AngularJS / React / Redux.

  • Хорошее понимание Frontend технологий: CSS3 / HTML / Javascript / Grunt / Webpack / Gulp.

  • Опыт или интерес к работе с другими языками (Scala, Go, C).

  • Интерес к проектированию API / DB / IoT apps.

  • Опыт работы и реализации real-time сервисов и приложений.

  • Опыт работы с Hadoop / HBase / Spark / MapReduce.

  • TDD.

Ваше личное желание ежедневно изучать новое - самый большой и главный плюс!

Мы ценим:

  • Как красивый код, так и минимум кода.

  • Понятный код, который покрыт автотестами и содержит комментарии.

  • Разработчиков, увеличивающих пул знаний и опыт команды.

  • Тех, кто не боится ответственности и работает на результат.

  • Разработчиков, не требующих микроменеджмента и постоянного менторства.

  • Людей, которые сказали, что все будет сделано в среду, и финишировали во вторник.

  • Документацию, которая обновляется (и тех, кто над ней работает).

  • Чувство юмора )

Какие задачи решать:

  • Создание API, Backend для мобильных, веб- и IoT- приложений.

  • Разработка новых приложений и проектов.

  • Работа с проектами, которые уже живут в production и где растет количество пользователей, трафик, базы данных и нагрузка на инфраструктуру.

С чем работать:

  • Python3 / Django / Django Rest Framework.

  • Postgresql / MongoDB / DynamoDB / Redis / RabbitMQ.

  • Amazon AWS (EC2, SQS, SNS, ELB, ECS, RDS, S3, DynamoDB).

  • Google Cloud.

  • Unit tests.

  • Docker.

  • Git / Linters / Jenkins / Upsource.

  • Javascript apps (React / Angular / EmberJS).

  • Linux preferred (Mac is fine as well. No Windows :).

Если вам интересны нетривиальные задачи и алгоритмы, работа c опытными людьми (как разработчиками, так и менеджерами), high traffic apps, то напишите нам о себе, приведите список проектов, над которыми вы работали, и опишите вашу роль в каждом из них. Также можете прислать пример вашего кода (или ссылку на профиль на github / bitbucket).

При возникновении любых вопросов не стесняйтесь писать.

Перейти к вакансии Другие вакансии

pythonworld.ru

Python-разработчик

OneTwoTrip — самый высокотехнологичный сервис путешествий. Ежедневно на нашем сайте и в мобильном приложении десятки миллионов поисковых запросов превращаются в десятки тысяч путешествий. Более 3 млн. человек — наши клиенты.

Наш сервис функционален, прост и удобен в использовании. Мы создаем уникальные предложения, собирая в реальном времени комбинации из авиабилетов и отелей, и легко комбинируем рейсы разных авиакомпаний, включая лоукостеры. Купить билет на Сапсан в нашем приложении можно за 1 минуту. Сервис находит, выписывает и бронирует лучшие варианты, принимает оплату картами, Apple Pay и оказывает круглосуточную поддержку по всем современным средствам связи, включая мессенджеры.

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

Мы всегда ищем талантливых и амбициозных специалистов и руководителей. Приходите к нам работать и рекомендуйте друзьям!

Сейчас нам нужен Python разработчик!

Что мы используем:

  • Python 3.5+
  • Node.js 8.11+
  • MongoDb
  • Redis
  • MySQL
  • Jenkins
  • docker, docker-compose (локальная разработка)
  • Atlassian-стек (Bitbucket, Jira, Confluence, etc)

Основные задачи:

  • Продумывание архитектуры python-приложений и воплощение в коде
  • Разработка, поддержка и мониторинг web-сервисов, связанных с оптимизацией поисковой выдачи

Мы ожидаем, что вы:

  • Работали с python-сервисами не менее года в коммерческом проекте и отлично знаете язык
  • Работали с документо-ориентированными БД, например Mongo
  • Работали с tornado/asyncio и понимаете принципы асинхронного программирования
  • Умеете тестировать свой код
  • Понимаете принципы работы с системами контроля версий (мы используем Git)

Большим плюсом будет:

  • Опыт работы с Node.js
  • Опыт работы в проекте с CI/CD и автоматизированными тестами
  • Опыт работы с docker и docker-compose

Мы предлагаем:

  • Достойный уровень заработной платы
  • ДМС
  • Интересные и амбициозные задачи
  • Неограниченный профессиональный рост
  • Ресурсы на реализацию смелых идей, идущих на пользу сервису
  • Работу по гибкому графику в одном из лучших офисов Москвы рядом с метро «Проспект мира», «Цветной Бульвар», «Достоевская»
  • Посещение профильных мероприятий, библиотека с хорошими книгами и обмен опытом с интересными людьми

А ещё вы будете работать в отличной команде, участвовать в необычных тимбилдингах и веселиться на пятничных вечеринках!

И, конечно же, в офисе всегда есть вкусный кофе и утренние фрукты :)

Расскажите о Себе

www.onetwotrip-jobs.com

Вакансии: python разработчик

1-10 из 363

По 102550 на странице, сортировать по Дате (самые свежие)РелевантностиЗарплате (высокая)Зарплате (низкая)

АНИМАРЕНДЕР - ЧЕЛЯБИНСК

Дружная компания в связи с расширением набирает новых сотрудников. У нас много интересных задач, хороший офис и достойная оплата. От вас помимо знаний мы ожидаем разделение корпоративных ценностей, стремление развиваться и расти, энтузиазм и желание делать ...30000-80000

SIBDEV - 91

в команду разработки sibdev требуется python backend-разработчик, способный самостоятельно решать комплексные задачи от проработки архитектуры программного решения до реализации ...ОТ 40000 ДО 60000

СКБ КОНТУР - ЕКАТЕРИНБУРГ

Команда машинного обучения СКБ Контур ищет крутого Python разработчика Чем мы занимаемся? Наша команда разрабатывает сервисы с машинным обучением для различных направлений Data ...ДОГОВОРНАЯ

HAYS - МОСКВА

Наш клиент в поисках Python разработчика на проект инвестиционной площадки (блокчейн). Основные задачи: Написание Backend на Django/DRF Проведение интеграции с API банка ... 

UTAIR DIGITAL - КРАСНОДАР

Компания «Utair Digital» ищет хорошего специалиста на вакансию «Python-разработчик». Россия, Краснодар. Можно удалённо. Требуемые навыки: Python, Flask, MongoDB, Git, Redis, Nginx ... 

ООО АКАДЕМ МЕДИА - НОВОСИБИРСКАЯ ОБЛАСТЬ

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

ИП SIBDEV - КРАСНОЯРСКИЙ КРАЙ, КРАСНОЯРСК

В команду разработки Sibdev требуется Python Backend-разработчик, способный самостоятельно решать комплексные задачи от проработки архитектуры программного решения до реализации ... 

СИМБИРСОФТ,ООО - САМАРА

Обязанности: - участвовать в разработке различных крупных международных проектов в команде высококлассных специалистов. Требования: - знание алгоритмов и ООП; - опыт коммерческой разработки на любом языке от одного года; - опыт успешного решения поставленных ... 

СИМБИРСОФТ,ООО - САРАНСК

Обязанности: - участвовать в разработке различных крупных международных проектов в команде высококлассных специалистов. Требования: - знание алгоритмов и ООП; - опыт коммерческой разработки на любом языке от одного года; - опыт успешного решения поставленных ... 

SIBDEV - КРАСНОЯРСК, ПР. МИРА 91

– Хорошее знание Python / Django; – Знание архитектурных и программных нюансов серверного приложения; – Возможно придется сталкиваться с фронтендом и версткой в некотрых задачах; – Умение аргументированно выбирать программные и архитектурные решения; – ... 

www.adzuna.ru