Язык программирования Python для начинающих. Подружиться с командной строкой
На прошлой неделе я ходил на собеседование, и основной вопрос ко мне был такой: «Почему вы решили поменять профессию и стать программистом?». В конце собеседования человек, который проводил собеседование - руководитель отдела перспективных разработок одной IT компании - прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."
Предыстория
Программирование мне нравилось всегда, еще в девятом классе, когда мы с друзьями забрели на областную станцию юных техников, в компьютерный класс и остались там до окончания школы (это был 1993 год, домашних компьютеров у нас не было, а там стояли IBM386).Поступил я, правда, в авиационный институт, т.к. самолеты в тот момент казались интереснее. По окончании института (2001г.), получив красный диплом и приглашение в аспирантуру, пять лет разрабатывал системы управления авиационными двигателями, защитил кандидатскую, подучил английский. И тут вплотную встал вопрос - а что дальше? Авиация тихо умирала. По ощущениям - перспектив не было, все было глухо.
Я решил, что нужно что-то делать, что-то менять! В общем, разместил резюме в интернете. Как бы это ни было странно моим коллегам, через три дня у меня случилось первое в жизни собеседование, была предложена хорошая зарплата и очень интересная работа. Компания, в которую я попал, занималась испытаниями и измерениями, и эта сфера меня привлекла надолго: новое оборудование, интересные, часто уникальные задачи, много командировок, общения с разработчиками оборудования, с отечественными и зарубежными поставщиками, неожиданные сложности и нетривиальные решения - в общем, было интересно! Это всегда интересно, когда создаешь что-то новое.
В карьерном плане - тоже все хорошо, поработал и инженером, и ведущим инженером, и руководителем технического отдела, и исполнительным директором, немножко побыл соучредителем нового бизнеса.
И вот теперь, как мне кажется, снова пришло время что-то менять.
И снова, как и в предыдущий раз, все спрашивают: Почему? Зачем? Всё ведь хорошо!
Попробую объяснить свою позицию
Чуть более чем десять лет я проработал в сфере разработки испытательного оборудования.Основной момент состоит в том, что когда человек работает над каким-либо вопросом, он обычно разбирается в этом вопросе, потом начинает разбираться в смежных вопросах, т.к. они влияют на его результат и потому, что ему просто любопытно, как это работает. Со временем меняется оборудование и программное обеспечение, но основные принципы остаются неизменными. Можно перейти в другую компанию, там будет другой коллектив и немножко другое оборудование, но по сути - всё тоже самое.
Можно попробовать построить в этой сфере свой бизнес - это дает несколько иной взгляд на вещи, но в текущей рыночной ситуации у такого бизнеса будет очень мало перспектив, и их количество в этой сфере неуклонно снижается.
Можно продолжать ходить на работу и попытаться реализовать себя в каком-нибудь хобби и пять раз в неделю, вставая по утрам, осознавать, что сегодня будет навсегда потерян еще один день - мрачноватая перспектива!
В общем нужно что-то менять! Но что и на что? - вот в чем вопрос!
Если посмотреть на программирование, то это направление представляется очень интересным:
- Оно с одной стороны - совершенно новое для меня, т.е. в нем можно учиться и развиваться: выбор ПО, задач, проблем практически не ограничен, от молекулярной биологии, физики и химии до верстки сайтов. Мне кажется, тут есть возможности и есть перспективы.
- С другой стороны - это направление, в котором у меня есть некоторый опыт: Fortran в институте, LabView - последние три года на работе, Си и Free Pascal (немножко для общего развития), PHP + WordPress + HTML+CSS - вполне рабочий сайт получился.
- Честно говоря, мне просто нравится кодить, и я люблю когда моя работа имеет результат: сделал - заработало!
Прелесть технологий разработки программного обеспечения, на мой взгляд, в том, что они быстро развиваются. Это значит, что многое из того, что было актуально десять лет назад, сейчас безнадежно устарело. И это значит, что очень многое зависит от того, насколько быстро и эффективно мы умеем учиться.
Да, возможно, у меня пока нет такого опыта разработки, какой мог бы быть, начни я десять лет назад, но так ли он критичен, или есть множество задач, в которых он не актуален?
Мне нравятся слова, адресованные Кирком Шупом молодым разработчикам на встрече в Яндексе :
Найдите вещи, которые вас мотивируют, пишите много кода и читайте много кода. Меня вдохновляет строить вещи, которые просуществуют много лет после того, как я их сделаю, и которые не сломаются даже после изменений, которые в них внесут люди, не понимающие их.
Когда я начинал программировать, смотрел на опытных разработчиков и думал, что через 10 лет я догоню их текущий уровень, но они уже уйдут вперёд на 10 лет. Через десять лет я понял, что на самом деле полностью их догнал. Технологии двигаются вперёд, так что мне не пришлось изучать старые, а новые я узнавал одновременно с ними.
Также у меня есть жизненный опыт, который говорит, что учусь новому я быстро и что если что-то делать и не стоять на месте - результат будет.
Рассмотрим финансовый вопрос. Да, при смене работы я существенно потеряю в деньгах, но кое-что при этом и приобрету:
- Во-первых программист не так сильно привязан к месту работы географически, а это значит, что при желании я смогу работать на удаленных заказчиков;
- Во-вторых, по моей оценке уровень дохода скорее всего через пару лет сравняется с моим текущим уровнем;
- В третьих, рынок программного обеспечения неуклонно растет, а значит растет спрос и на специалистов, а вот производство оборудования в РФ непрерывно сокращается (это безусловно мои личные субъективные ощущения, не претендующие на какую-либо объективность), а значит работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора - вряд ли!
Существует даже мнение, что не нужно учить Python первым языком .
Получилось так, что лет пять назад один мой друг, увлекающийся Linux, очень настоятельно мне его порекомендовал, были новогодние праздники и было время попробовать разные дистрибутивы, в общем последние пять лет я использую Debian. А дальше все просто: bash - это наше все, но хотелось возможности написать что-то более сложное: попробовал Си, по рекомендации того же друга попробовал Lazarus, немного повозился с PostgreSql. Потом был почти годовой перерыв, а потом, попробовал Python.
Python мне понравился сразу и по многим причинам: читаемость, подробнейшие описания на русском и на английском, масса примеров программ в том же Debian, большое количество модулей, возможность использовать Си там, где требуется скорость, перечислять можно долго. Именно после этого я понял, что это вполне интересное направление, которым можно заниматься и которого мне хватит надолго. Ознакомился с литературой, написал несколько не очень сложных программ.
Еще одна причина для меня выбрать Python - это то, что я считаю его более перспективным языком с точки зрения участия в различных технических, научных и просто интересных проектах, чем например PHP.
Сейчас, в свободное от работы время потихоньку начал изучать machine learning, а на прошлой неделе сходил на первое собеседование.
Получилось несколько длинно, но я хотел максимально подробно объяснить свои мотивы, и размышления.
В данный момент вопрос актуален для меня, и мне будет интересно получить мнения и комментарии читателей Хабра.
Должностные обязанности
Разработка приложений и сервисов на основе языка Python;
- поддержка, интеграция, оптимизация приложений и сервисов;
- написание технических заданий и документации.
Заработная плата и требования работодателей
Средняя заработная плата разработчика Python в Москве составляет 105 000 руб., в Санкт-Петербурге – 84 000 руб., в Волгограде – 50 000 руб., в Воронеже – 53 000 руб., в Екатеринбурге – 67 000 руб., в Казани – 53 000 руб., в Красноярске – 60 000 руб., в Нижнем Новгороде – 58 000 руб., в Новосибирске – 66 000 руб., в Омске – 53 000 руб., в Перми – 60 000 руб., в Ростове-на-Дону – 60 000 руб., в Самаре – 60 000 руб., в Уфе – 53 000 руб., в Челябинске – 61 000 руб.
I зарплатный диапазон
Без опыта работы на данной позиции
Требования к начинающим разработчикам Python достаточно лаконичны. Соискателям, не имеющим опыта работы, необходимо иметь законченное или неполное высшее образование (профильное либо техническое), знать CSS, HTML и основы программирования на Python. Стартовый оклад составляет от 50 000 до 70 000 руб. (Москва), от 40 000 до 56 000 руб. (Санкт-Петербург).
Город | Уровень дохода, руб.
|
|
Москва | 50 000 – 70 000 | - Высшее/неполное высшее образование (техническое/IT) - Знание основ программирования на Python - Базовые знания CSS, HTML Портрет соискателя в 1 диапазоне
|
Санкт-Петербург | 40 000 – 56 000 | |
Волгоград | 24 000 – 34 000 | |
Воронеж | 25 000 – 35 000 | |
Екатеринбург | 32 000 – 45 000 | |
Казань | 25 000 – 35 000 | |
Красноярск | 30 000 – 40 000 | |
Нижний Новгород | 28 000 – 40 000 | |
Новосибирск | 32 000 – 44 000 | |
Пермь | 25 000 – 35 000 | |
Омск | 30 000 – 40 000 | |
Ростов-на-Дону | 30 000 – 40 000 | |
Самара | 30 000 – 40 000 | |
Уфа | 25 000 – 35 000 | |
Челябинск | 30 000 – 40 000 |
II зарплатный диапазон
С опытом работы от 1 года
Вход в следующий зарплатный диапазон открыт программистам со стажем разработки на Python от 1 года. Также востребован опыт работы с MySQL и навыки разработки web-сервисов. Соискателям необходимо знать JavaScript и владеть «техническим» английским. Верхняя граница зарплатных предложений для разработчиков, соответствующих указанным требованиям, составляет 80 000 руб. (столица) и 64 000 руб. (Санкт-Петербург).
Город | Уровень дохода, руб.
|
Требования и пожелания к профессиональным навыкам |
Москва | 70 000 – 80 000 | - Знание английского языка на уровне чтения технической документации - Знание JavaScript - Опыт работы с MySQL - Опыт разработки web-сервисов - Опыт программирования на Python от 1 года Портрет соискателя во 2 диапазоне
|
Санкт-Петербург | 56 000 – 64 000 | |
Волгоград | 34 000 – 38 000 | |
Воронеж | 35 000 – 40 000 | |
Екатеринбург | 45 000 – 50 000 | |
Казань | 35 000 – 40 000 | |
Красноярск | 40 000 – 46 000 | |
Нижний Новгород | 40 000 – 44 000 | |
Новосибирск | 44 000 – 50 000 | |
Пермь | 35 000 – 40 000 | |
Омск | 40 000 – 45 000 | |
Ростов-на-Дону | 40 000 – 46 000 | Самара | 40 000 – 45 000 | Уфа | 35 000 – 40 000 | Челябинск | 40 000 – 46 000 |
III зарплатный диапазон
С опытом работы от 2 лет
Повышает «стоимость» специалиста на рынке труда стаж программирования от 2 лет, опыт разработки высоконагруженных проектов и навыки работы с системами контроля версий. Соискателям также необходимо знать Linux. Нередко работодатели требуют знания дополнительного языка программирования (PHP, Java, С). Дополнительными шансами на трудоустройство обладают программисты, имеющие портфолио выполненных проектов. Разработчики Python указанного профессионального уровня зарабатывают до 120 000 руб. в Москве и до 96 000 руб. в Санкт-Петербурге.
Город | Уровень дохода, руб.
|
Требования и пожелания к профессиональным навыкам |
Москва | 80 000 – 120 000 | - Высшее образование (техническое/IT) - Знание Linux на уровне пользователя - Опыт работы с системами контроля версий - Опыт разработки высоконагруженных проектов - Опыт программирования на Python от 2 лет Возможные пожелания: Портрет соискателя в 3 диапазоне
|
Санкт-Петербург | 64 000 – 96 000 | |
Волгоград | 38 000 – 58 000 | |
Воронеж | 40 000 – 60 000 | |
Екатеринбург | 50 000 – 77 000 | |
Казань | 40 000 – 60 000 | |
Красноярск | 46 000 – 68 000 | |
Нижний Новгород | 44 000 – 66 000 | |
Новосибирск | 50 000 – 75 000 | |
Пермь | 40 000 – 60 000 | |
Омск | 45 000 – 66 000 | |
Ростов-на-Дону | 46 000 – 68 000 | |
Самара | 45 000 – 67 000 | |
Уфа | 40 000 – 60 000 | |
Челябинск | 46 000 – 70 000 |
IV зарплатный диапазон
С опытом работы от 3 лет
Максимальный доход – у программистов Python с опытом работы более 3 лет и навыками руководства командой разработчиков. «Потолок» зарплатных предложений в Москве – 160 000 руб. В Санкт-Петербурге разработчики Python могут рассчитывать на доход до 130 000 руб.
Город | Уровень дохода, руб.
|
Требования и пожелания к профессиональным навыкам |
Москва | 120 000 – 160 000 | - Опыт руководства группой разработчиков - Опыт программирования на Python от 3 лет Портрет соискателя в 4 диапазоне
|
Санкт-Петербург | 96 000 – 130 000 | |
Волгоград | 58 000 – 75 000 | |
Воронеж | 60 000 – 80 000 | |
Екатеринбург | 77 000 – 100 000 | |
Казань | 60 000 – 80 000 | |
Красноярск | 68 000 – 90 000 | |
Нижний Новгород | 66 000 – 90 000 | |
Новосибирск | 75 000 – 100 000 | |
Пермь | 60 000 – 80 000 | |
Омск | 66 000 – 90 000 | |
Ростов-на-Дону | 68 000 – 90 000 | |
Самара | 67 000 – 90 000 | |
Уфа | 60 000 – 80 000 | |
Челябинск | 70 000 – 95 000 |
Портрет соискателя
Большинство претендентов на должность программиста Python – молодые мужчины с высшим образованием. Женщин среди соискателей немного – всего 5%. Молодежь составляет 70% кандидатов. Высшее образование имеют 74% программистов Python. 22% соискателей этой должности свободно владеют английским языком.
Код для вставки в блог
Разработчик Python