21 февраля в 14:34

Почему не нужно учить 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 почти такая же ситуация. Но тут я уже говорить с уверенностью не могу.
@hatman
карма
9,0
рейтинг 0,0
Самое читаемое Разработка

Комментарии (342)

  • +65
    Почему не нужно учить python первым языком?

    Ответ «питон не нужно учить, потому что я не нашёл работу»? Так где в этом ответе парадокс, и именно парадокс Python?

    По заголовку я ожидал увидеть что-то касающееся ЯП, а не историю «успеха/не успеха»…
    • +1
      Поправил заголовок, чтобы не было разногласий. Благодарю за фидбек.
      • +4
        Пожалуйста. Только, кмк, питон уж совсем здесь не причём. Замените его на любой другой ЯП, ситуация будет похожая. Всем нужен опыт, 3+ года стажа. Всем нужны «комбайнеры», тем более на web.
        • +13
          Ну, всё таки как абсолютно правильно написал автор статьи, на некоторых языках гораздо проще найти джуниорскую вакансию, чем на других.
          • +2
            Ну я понял, надо первым надо учить язык, по которому больше джуниорских вакансий. Потом пишешь свою имиджборду и далее по списку. До «уже через пол года ты будешь получать такие суммы»))
            А у меня вот другие приоритеты были — мне было просто интересно. Ну просто в кайф было понимать как это все работает. И сейчас в кайф.
            Вообще смущает меня подход к выбору профессии по максимальной планке зарплаты. И моде.
            • +1
              Да я тоже в программирование пошёл ради интереса :)
              До этого шесть лет работал в техподдержке/администрировании, в свободное время писал кое-что ради интереса на JS, PHP, VBA и по мелочам ещё на паре языков. Но всерьёз решил связать свою жизнь с программированием только после того, как познакомился с Питоном, и понял, что мне невероятно нравится этот язык.

              Однако же когда меня спрашивают «я решил стать программистом, какой язык посоветуешь?», я даю совет исходя из того, на каком языке человеку проще будет найти работу. Пусть человек получит стабильный кусок хлеба с маслом, начнёт получат реальный опыт. А там уж если программирование — это его тема, то он сам разберётся, какие языки и технологии ему интересны.
              • +2
                и понял, что мне невероятно нравится этот язык.

                Но чем именно?

                • 0
                  Я бы мог сейчас перечислить ряд прагматических достоинств питона, но на самом деле моя симпатия к нему имеет скорее эстетическую причину.
                  Мне просто приятно работать с питоном. Нравится ощущение ясности, простоты и лаконичного изящества, которые ему присущи.
                  • 0

                    Ясно, спасибо.


                    Интереса ради, а всякие функциональные языки вроде окамля или хаскеля вы пробовали?

                    • 0
                      Всерьёз пока не брался за них, но то, что я видел мне показалось очень интересным.
                      У меня в плане стоит выучить что-нибудь функциональное. Но этим я, наверное, займусь ближе к лету, а прямо сейчас хочу освоить Go.
                      • 0

                        Попробуйте. Я после хаскеля на скриптовые языки смотреть вообще не могу :)

                        • +1

                          Тут некоторые пишут типа "Изучите сначала Python, а потом уже и на PHP не так сильно говнокодить будете"… А я вот подумал, почему бы Haskell не советовать в качестве первого языка? Он гораздо ближе к математике, т.е. вначале изучения будет на порядок меньше WAT. Да и код на Python после Haskell будет гораздо лучше, т.к. на самом деле Python не так уж сильно ограничивает возможность говнокодить, по сравнению с Haskell.

                          • +2

                            Потому что для значимой части людей близость к математике является недостатком, а не преимуществом, к сожалению.

                            • 0

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

                          • 0

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

                            • +1

                              Это скорее вопрос подхода… лямбда-исчисление и теория категорий — это всё хорошо, но необязательно их глубоко изучать, чтобы начать учить язык. Для начинающих вполне можно писать в стиле "Learn You a Haskell for Great Good!" или даже ещё проще.
                              Сам же Haskell в базовых применениях гораздо легче и логичнее, чем тот же Python. Где ещё Вы можете для учебной задачи реализовать какую-нибудь стандартную функцию, потом заглянуть в исходники GHC и обнаружить, что она именно так и написана?

            • 0
              Ну допустим у меня был выбор срочно устраиваться в 1с ибо есть вакансии, или хз сколько времени жить на улице и питаться святым духом (альтернатива — работа не связанная с IT). И вполне здраво в таком случае ориентироваться на первый язык именно по наличию вакансий.
      • +1
        Я думаю, что Python — один из лучших языков для знакомства с программированием. Сам когда-то начинал с Паскаля(эх, времена!), но современным начинающим программистам все же стоит начать изучение с другого инструмента. А насчет вакансий — не знаю, это наверное не повод говорить о том, что Python плох в начале пути
  • +8
    Чет мне подсказывает. Что Вы когда собеседываетесь на вакансию на удаленку либо не показываете вообще никаких знаний о языке. Либо указываете заплатанные ожидания не меньше чем у тех дира.
    Иначе я ваши проблемы понять не могу. Толпы веб студий лепят сайтики на джанге.
    Джанга это почти также хорошо для веб студии как своя CMS (клиент так просто не уйдет.)

  • +26
    Нужно различать «учить язык чтобы научиться программировать» и «учить язык чтобы найти на нём работу».

    Многие советы по выбору первого языка — это именно первый вариант.

    Но в целом всё верно написано, если выбирать язык, чтобы на нём джуниорствовать в веб-программировании — то лучше начинать с PHP.
    • –3
      Разве, «не все уже перехали» на node.js?
      • +2
        Честно говоря, про то как обстоят дела с node.js, я мало что знаю — в моём кругу общения нет людей, которые на ней разрабатывают. И в тех информационных источниках, которые я читаю регулярно, она редко упоминается.
        Но PHP пока ещё вполне востребовано, даже если node.js и конкурирует с ним.
      • +4
        А что, разве есть такая тенденция? Все и на ноду?
        • 0
          Да. Как раз в таком проекте работаю. Все клиенты, новые приложения им — всё на «этих ваших нодах».
          Конкретно сейчас делаю инфрастуктуру одного неменцкого производителя алкогольной продукции — всё на Ноде. Ну и всякие реакты и иже с ними. Честно — не особо в их код лажу, кроме `npm install` и `npm run` — ничего не и не использую. Ну и `vim package.json`, когда начинаются танцы с зависимосятми :-)
          Честно говоря, с точки зрения девопс-инженера — с нодой чрезвычайно приятно иметь дело в плане простоты сборки и деплоя.
      • +2
        По востребованности, ситуация скорее всего такая же как с питоном. В Москве, Питере найти работу можно, в остальных регионах сложнее.
        • +1

          Ну востребованность react- angular- и прочих frontend-спецов достаточно большая. Хватает и вакансий по удалёнке. Я смотрю даже з\п до 250 т.р., предлагают. Тут, похоже, ситуация сильно лучше, чем с pyhton-ом.

      • +4

        А на что именно переехали? Разве на nodejs появились какие-либо популярные framework-и уровня топовых php, вроде yii? Я, честно говоря, упоминаний, кроме как exress.js и ему подобных, и не встречаю в сети. Сам какое-то время назад поискал варианты — что-то есть, но скорее как личные движки энтузиастов. А express.js явно не про веб-студии. По-быстрому сбацать простенький бакенд — ок. А делать полноценную CMS ― увольте. Или нашлись такие герои? Да и вообще асинхронная природа JS не располагает к написанию рутинных конвеерных сайто-поделий, на кои столь большой спрос наблюдается. Нужно чтобы каждый первый джун был готов на этом работать, после полутора часов втыкания в кодовую базу.

        • 0
          Вашими словами «react- angular-» — они уже и на стороне бэка используются.

          А на что именно переехали?

          Я не знаю, поэтому и спрашиваю. У меня ощущения, что новое (а новое сейчас, наверное, на 90% — лэндинги) — только js. И опять же «react- angular-» позволяют вообще обойтись без бэка, начиная с роутинга на стороне клиента.
          • +4
            И опять же «react- angular-» позволяют вообще обойтись без бэка, начиная с роутинга на стороне клиента.

            Ну все эти реактивные штуки нужны для серьёзных web-приложений, но зачем они рядовому web-сайту? Как ежу футболка. Одни только минусы и проблемы. А чего нужно больше — SPA или обычных сайтов? Думаю ответ очевиден. Просто за хайпом не видно реального положения вещей. Серёьзный "взрослый" frontend нужен большим долгостроящимся web-приложениям. В то время как большая часть интернета представляет из себя скорее брошюры, газеты и пр. печатные издания. Люди ищут на них информацию, а не интерактив.


            Причём пишу как тот самый frontend-разработчик (который про тот самый react- и пр.). Я не понимаю этой шумихи. И сильно негодую от попыток обеспечить render какого-нибудь текстового блога на react-е (причём на frontend-части), причём когда на лету формируется из markdown-а html.

            • 0
              И сильно негодую от попыток обеспечить render какого-нибудь текстового блога на react-е (причём на frontend-части), причём когда на лету формируется из markdown-а html.

              Почему?
              Кмк, react+redux делают веб-разработку может и не такой стройной, как static HTML, но осмысленной и логичной.
              • +11

                Зачем вам вообще state в текстовом блоге? Зачем вам реактивный шаблонизатор для рендера статики? Зачем вообще всё это нужно, когда клиент от вас ждёт просто стили и html-статьи? Зачем забивать гвозди микроскопом?

                • –5
                  Зачем вам реактивный шаблонизатор для рендера статики?

                  Как вариант, разработка в этом случае становится ближе к «декстопной».

                  Зачем забивать гвозди микроскопом?

                  Даже, если отойти от web, этот вопрос также актуален. Такие тренды.
                  • +6
                    разработка в этом случае становится ближе к «декстопной»


                    И что в этом хорошего?

                    Такие тренды


                    Какие тренды могут заставить вменяемого разработчика использовать не подходящие под проект технологии?
                    • 0
                      Например, использование всяких трендовых технологий в своих бложиках и прочих pet projects для обучения этим технологиям.
                      • +1
                        С одной стороны, логично, с другой — всё равно не понимаю. Т.е. мы берем какой-то «трендовый» молоток и пытаемся забивать им обычные гвозди, для которых лучше подходит старый добрый обычный молоток. А потом бежим всем рассказывать о своем непрофессионализме. Получается так.
                        • +1
                          > Т.е. мы берем какой-то «трендовый» молоток и пытаемся забивать им обычные гвозди, для которых лучше подходит старый добрый обычный молоток.

                          Не забывайте, плотник опытом работы обычным молотком в течении 10 лет может стоит в разы меньше чем плотник с опытом работы «трендовым» молотком (сравните, стоимость разработчика с 10 лет AngularJS/React c стоимостью человека, который умеет только рисовать статические HTML странички и натягивать шаблоны на CMS). При этом вряд ли кто-то поймет на следующей работе насколько обоснованным был выбор «трендового» молотка. Поэтому чисто из меркантильных побуждений разработчикам выгодно использовать технологии, которые позволят себя потом продать выгоднее.
                          • 0
                            Так я не говорю, что не нужно пробовать новые технологии. Пробуйте на здоровье, только выбирайте соответствующие проекты. А то запилят hello world на Hibernate — ясен хрен он там хорош, а потом пихают куда ни попадя, городя костыли.
                            • +1
                              Пробуйте на здоровье, только выбирайте соответствующие проекты.

                              А если нет соответствующих проектов у твоего работодателя/в твоем городе? Вот тебе предлагают делать сайт и ты понимаешь что самое простое это статические страницы либо край простенькая CMS на PHP. А другой вариант AngularJS, React, питон и т.п.

                              В принципе, в конкретных проектах они может быть не сильно нужны (но клиент готов их оплатить), но зато через пару лет можно будет уйти на зар.плату в 5 раз большую, либо вечно делать статические страницы и натягивать шаблоны CMS за копейки. Что по вашему предпочтительнее с точки зрения разработчика?
                              • +1
                                А если нет соответствующих проектов у твоего работодателя/в твоем городе?

                                Можно самому создавать соответствующие проекты или искать дистанционные.


                                Что по вашему предпочтительнее с точки зрения разработчика?

                                Профессионал должен стремиться выбрать наиболее подходящее решение. Желание что-то новое попробовать — это не аргумент. Должно быть что-то ещё.

                                • 0

                                  Желание попробовать что-то новое с целью последующего выбора наиболее подходящего решения — аргумент? Как выбирать подходящее, если знаешь только одно?

                                  • +1
                                    Желание попробовать что-то новое с целью последующего выбора наиболее подходящего решения — аргумент?

                                    Если работа подразумевает research, то да. А если нет, то в свободное время изучать. Я считаю, что такой подход более честен и профессионален.

                                • 0
                                  Можно самому создавать соответствующие проекты или искать дистанционные.

                                  Можно, если у тебя 10+ лет опыта в разных технологиях. На ранних стадиях все печальнее.

                                  Профессионал должен стремиться выбрать наиболее подходящее решение.

                                  Для этого надо сначала стать профессионалом и понимать какое решение наиболее подходящее. Если на данный момент наиболее подходящее это скажем нечто устаревшее, вроде Visual FoxPro, но при этом стоимость профессионала на рынке после такого опыта будет нулевой, есть ли смысл выбирать такое решение?

                                  Надо понимать что идеальное решение для заказчика и для исполнителя могут быть несколько разными. Конечно, не должно быть явного вредительства, но и работать с ненужной рынку технологией без очень хорошей компенсации это быть самому себе злобным буратино.
                                  • 0
                                    Можно, если у тебя 10+ лет опыта в разных технологиях. На ранних стадиях все печальнее.

                                    Без опыта можно начать помогать существующим OpenSource-проектам, там всегда можно найти несложные задачи, до которых у мейнтейнеров просто руки не доходят.
                                    А как вы хотели, работодатели не будут становиться в очередь, чтобы джуниоры за их счёт учились, а как только обрели минимальный уровень — слиняли на более высокую зарплату.


                                    Если на данный момент наиболее подходящее это скажем нечто устаревшее, вроде Visual FoxPro

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

                              • 0
                                Что по вашему предпочтительнее с точки зрения разработчика?

                                Не зацикливаться на том, что предлагают работодатели данного города в данный момент. Почему бы не попробовать запилить свой проект?
                                • 0

                                  Это означает стать бизнесменом, а не разработчиком.

                                  • 0
                                    У меня на гитхабе есть проекты, которые я пилю в свободное время, с использованием технологий «не с работы». Еще есть закрытый проект, который я тоже пилю в свободное время. Есть надежда, что когда-нибудь он выстрелит, но я не тешу себя иллюзиями насчет быстрой окупаемости. И что, эти проекты делают меня «бизнесменом, а не разработчиком»?
                                    • 0
                                      У меня на гитхабе есть проекты, которые я пилю в свободное время, с использованием технологий «не с работы».

                                      Не делает


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

                                      Делает. Вы рассуждаете в бизнес-категориях типа "выстрелит" и "окупаемость". Раз уж говорите об окупаемости, значит и себестоимость постоянно подсчитываете, типа "на работе я получаю 20 баксов в час, на проект потратил уже 1000 часов и ещё столько нужно потратить чтоб хоть как-то запустить, значит он должен принести минимум 40 000 баксов или я зря его пишу".

                                      • 0
                                        Раз уж говорите об окупаемости, значит и себестоимость постоянно подсчитываете


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

                                        Но это не важно, т.к. open source projects, как мы выяснили, не делают меня бизнесменом и при этом не мешают пробовать новые технологии и не ограничивают тем, что выбрал работодатель.
                                        • 0

                                          Тогда о какой окупаемости речь? ) Хоть копейку принесет, уже окупился? Ну ладно, хостинг окупит, так? )


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

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


                                            Такой вариант тоже может быть, почему бы нет, но вообще я хотел сказать, что рассчитывать только на работодателей в плане саморазвития — как-то не то. Главное оправдание тут — «я и так 8 часов работаю, нужно поддерживать баланс и т.д. и т.п.»
                                            • –1
                                              рассчитывать только на работодателей в плане саморазвития — как-то не то.

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

  • +16
    Почему не нужно учить python первым языком

    Дело не в питоне. Изучения одного языка недостаточно, чтобы "быть программистом". Как минимум, не будет достаточного кругозора, чтобы принимать взвешенные решения. Нужно знать хотя бы 2-3 существенно разных языка.


    Когда говорят, что питон хорош как первый язык, подразумевают, что вслед за первым языком будет изучение других, например С/С++ (а вместе с ними и архитектуры ЭВМ), потом например Java (вместе с ней принципов построения надёжного ПО), ещё какого-нибудь Хаскеля, и т.д.

  • 0
    Печальная ситуация, но и вы и ваш знакомый — правы!
  • 0
    *СПб
    • 0
      Благодарю.
  • +6
    имхо, если вы первоочерёдно учите программирование, то синтаксис конкретного языка впринципе не имеет значения,
    если учите синтаксис языка, то программировать вы будете учиться ещё долго.
    Имея хорошее внятное представления об алгоритмах, можно писать буквально на любом языке, погуглив синтаксис на ходу.
    • +5
      А как же знание инфраструктурного софта? (работа с субд, веб серверами, ос (например человек из мира микроконтроллеров в веб переходит)), библиотеки и фреймворки специфичные для данного языка (не тот объем кода, тонкости использования которого можно понять за пару месяцев), специфичные для данного языка/платформы архитектурные паттерны и принципы построения кода?
      • +8
        Создаётся ощущение что вы подменяете ширину знаний на глубину знаний в предметной области.
        Без знания алгоритмов, вам знание набора функций фреймворка поможет мало, «бумажный» результат может и будет, и будет код, но кодревью такой результат пройти не сможет.
        И каждый раз будут тыкать в неэффективность решений,
        пока кто-то, либо кодер, либо ревьюер не прийдёт к осознанию, что надо учить основы. И по моему убеждению, в основе должен быть не фреймворк, а алгоритмические знания.
        • +5
          Но и без знаний фреймворков/библиотек/инструментов предметной области работать тоже не получиться, и освоить их выше уровня junior за пару месяцев не выйдет насколько хорошо бы вы не знали алгоритмы. Важно сочетание знаний базовых (алгоритмы, структуры, паттерны, подходы, парадигмы и т.п.) и знаний инструментов и предметной области. Все это мифы, имхо, что можно запросто и без потерь перейти с одного стека на другой имея только базу. Разработчик драйверов не сваяет нормальный сайт и не напишет учет на 1с без более-менее длительной переподготовки, как верно и обратное. Знание специфики предметной области и стека инструментов все таки важно.
          • 0
            Не получится работать без фреймворков? наверно да.
            А получить работу без фреймворков наверно всё-таки можно.

            Освоить их на уровне Джуна можно, автор вроде как и есть джуниор.

            Многие берут джунов на вырост. Некоторые даже берут студентов на неполный рабочий день без опыта работы, тоже на вырост, если голова есть, то применение найдётся. Но это МСК, согласен, тут если не подходит, то держать особо смысла нет, интереснее на других обратить внимание. Как я представляю, в не МСК, при отсутствии альтернативы взять джуна ещё больше смысла, ибо выбирать почти не из кого, и действительно проще научить просто толкового парня без опыта, чем захантить, ибо хантить бывает не на что.
            • +1
              Не получится работать без фреймворков? наверно да.

              Именно это и имел в виду. Хотя кроме фреймворков все же стоит добавить и другие инструменты, перечисленные мной выше. Очень часто у людей создается ложное впечатление что стоит изучить некую «базу» и на остальное можно не обращать внимания, что, имхо, не так, изучение вещей привязанных к языкам тоже важно. Ну и в провинции обычно важны уже готовые специалисты, ибо нет ресурсов (или желания) у предприятий ожидать пока человек переучится под другие технологии, даже месяц-два, чаще нужно «фигак-фигак и в продакшен» иначе разоримся если через неделю продукт не выкатим. По крайней мере у меня именно такое ощущение возникло.
        • +6
          Без знания алгоритмов, вам знание набора функций фреймворка поможет мало

          Часто вижу эту фразу.
          А не подскажете, на жизненном примере, без знания каких (или даже какого) алгоритма, фреймворки мало помогут? Ну вот есть, например, типовая задача и решить ее без знания некоего алгоритма никак.
          • +2
            Конкретные примеры вспоминать не стану, выдумывать синтетическую ситуацию тем более.
            Но ситуация за полтора десятилетия взращивания джунов примерно одинаковая — человек сразу ищет библиотечные ф-ии, которые, как он полагает подходят, и потом, если на каких-то определённых входных данных получается результат, сдаёт работу, типа «готово».
            В итоге оказывается, что взял он не то и не тогда, и не с теми параметрами. Почему? Потому, что вот он фреймворк, и вот из него ф-ия которая ему якобы нужна, а про инициализацию/деинициализацию или передаваемые типы вообще ни в зуб ногой, но на тестовом примере каким-то местом отрабатывает (шаманство ).
            О том чтобы понять, как это работает, об инициализациях/финализациях либо надо каждый раз подсказывать, либо учить азам, откуда берутся ресурсы в программе, и куда они уходят.
            Так лучше бы он не знал конкретного фреймворка, но зато шарил в типах, их скоростях, и занимаемых ими ресурсах, а фреймворк уже на джуна можно и натянуть.
            • +4
              Классная фраза — «Натянуть фреймворк на джуна». Записал себе, спасибо :-)
            • 0
              Я так и не понял из ваших слов какие алгоритмы надо-то? Если за полтора десятилетия не получается вспомнить примеры…

              вот из него ф-ия которая ему якобы нужна

              Выглядит как-будто он не разобрался в том что именно надо и что дает фреймворк.

              про инициализацию/деинициализацию или передаваемые типы вообще ни в зуб ногой

              Таки не везде инициализация/деинициализация есть, на сколько мне известно. А типы это всё-таки не алгоритмы и в разных языках немного по-разному себя ведут. О том, что есть строки и прочие типы, наверное, знает любой ждуниор.

              Вот если бы пример ближе к теме — языку python… Было бы намного интереснее узнать ваше мнение. А так выходит что вроде бы что-то написали и в тоже время ничего существенного.
              Наверное так называют idle talk.
          • +2
            А не подскажете, на жизненном примере, без знания каких (или даже какого) алгоритма, фреймворки мало помогут?

            Всё очень сильно зависит от того, что вы понимаете под алгоритмами. Вот, например, разница в скорости при работе с массивом и связным списком. Если её не знать, то можно серьёзно влететь. Сталкивается с этим вообще каждый программист. В 99% случаев он выбирает динамический массив, потому что знает, что он лучше подходит под задачу.


            Или вот что делать, если нам надо часто проверять, есть ли элемент в коллекции. Заюзать Set? А какой? Или, всё-таки массив, потому что его перебирать надо часто. А если массив, то его надо поддерживать в отсортированном состоянии. А как? Всё это алгоритмы. Всё это типовые задачи.

            • +2
              В реальности разницу в скорости массива и списка можно потестить за небольшое время.
              Моно погуглить в конце концов.
              Все, что вы перечислили часто просто пробуют, не зная заранее, что подойдет лучше.
              Опять же сфера деятельности сильно зависит.
              Создатели массовых небольших сайтов, тоже вполне себе программисты, могут и не столкнутся с такими вещами.
              Я вообще сторонник, на собеседовании задавать вопросы, больше относящиеся к работе, которую будет выполнять кандидат, а не про академических алгоритмических сферических коней в вакууме.
              Компаний, разрабатывающих прорывные технологии очень мало на реальном рынке труда (в статье речь ведь о нем).
              Если бы товарищ мега озадачился алгоритмами, изучил книги Кнута, потратил на это год, это в реальности, вряд ли помогло бы ему найти работу в его городе.
              Будет день и будет пища, как говориться. Появится нужда и алгоритмы посмотришь.
              • 0
                В реальности разницу в скорости массива и списка можно потестить за небольшое время.
                Моно погуглить в конце концов.


                Напомнило: «Окей гугл, как пересадить сердце?»
            • +3
              Вот, например, разница в скорости при работе с массивом и связным списком.

              И массив будет почти всегда быстрее. Потому что cache-friendly, а связный список — нет.


              Если её не знать, то можно серьёзно влететь.

              Лучше знать о существовании профайлеров и о том, что эффективнее с точки зрения людских ресурсов сначала написать корректную программу, а потом уже заниматься её оптимизацией.

              • +1
                И массив будет почти всегда быстрее. Потому что cache-friendly, а связный список — нет.

                Вот именно. Надо знать о таких вещах. А это и есть алгоритмы и структуры данных.


                Лучше знать о существовании профайлеров и о том, что эффективнее с точки зрения людских ресурсов сначала написать корректную программу, а потом уже заниматься её оптимизацией.

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

                • +2
                  Вот именно. Надо знать о таких вещах. А это и есть алгоритмы и структуры данных.

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


                  Хотя при наличии начальных знаний о структурах данных можно сразу написать быстрый код.

                  На уровне алгоритмов немного другого рода. Квиксорт действительно будет быстрее пузырька на больших объёмах данных, это так. Но брать связный список или массив — я лично всегда беру массив, это структура данных по умолчанию, она почти всегда, в подавляющем большинстве случаев быстрее. Списки всякие берутся только в том случае, если нужны особые требования по семантике операций (вставка или удаление в массив инвалидирует итераторы, в список — нет, список чуть проще, на мой взгляд, сделать lock-free, и так далее).

          • +1
            Объясните за 1 минуту, чем левый джойн отличается от правого.
            Не можете? До свидания, учите свои фреймворки дальше.
            Задачи типа таких джойнов встречаются примерно каждый день в любой предметной области. Будь то сайт, геймдев или там суровый матан. Если человек этого не видит, то ему назад за парту, учить основы. Нагуглить, в отличие от фреймворка, он не сможет, потому что он просто не знает что именно гуглить.
            • +2

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

              • +1

                нельзя эффективно использовать ORM без понимания смысла SQLя, который он генерирует.

              • +1
                ORM-ы тут вообще не при чём. Есть два множества объектов (массива, коллекции, чего угодно), А и В, некоторые из объектов А имеет какое-то отношение к некоторым объектам из В. Нужно по заданным объектам из А выбрать те из связанных с ними В, которые удовлетворяют неким условиях. Или найти все А, для которых связанные В удовлетворяют тому-то и тому-то. Таких задач по 10 штук на дню в любой сфере.
                Например, «программисты» (множество А) делятся на три категории (множество В). Первые не знают джойны, считают, что орм за них всё сделает, и постоянно изобретают неработающие велосипеды. Вторые считают, что знают джойны, но объяснить за 1 минуту по факту не могут, начинают бе-ме, а на работе постоянно изобретают неработающие велосипеды. И третьи знают джойны, велосипеды не изобретают и могут нарисовать примерно такую картинку:
                тымц
                image
                • 0
                  Можно знать теорию множеств и не знать что такое «JOIN» (такого понятия в ней не существует). Работе это не помешает.
                  • 0
                    Ну положим это реляционная алгебра, а не теория множеств
                • –1
                  Ну вот, пришел человек, который никогда раньше про эти джойны не слышал, а вы за пару минут рассказали и картинку нашли. Все. Проблема устранена. Если человек имеет пробелы, пусть даже фундаментальные, в теории, но достаточно хорош в практике — смысл в таком отношении, похвастать своими знаниями, унизить другого человека?
                  А другой пришедший человек, может быть, диплом с отличием получил, но дальше лаб, курсовых и дипломного проекта ничего не делал (и перечисленное делал, вероятно, с чужой помощью), то опять же, большой вопрос — уместна ли будет вся его зазубренная теория с нулем практики?
                  Вот если у человека нет ни теории, ни практики, тогда да, надо с чего-то начинать.
                  • 0
                    Проблема в том, что нет, после одной картинки проблема не устранена. Человек перешёл из категории 1 (не знаю и горжусь этим) в категорию 2 (да фигли там знать-то?). Но применять-то он это не умеет, просто не чувствует, что это про джойны. И встретив какую-нибудь задачку типа «один объект может принадлежать нескольким категориям», начинает что? Правильно, изобретать велосипеды.
                    Без практики в конкретной технологии программист идёт джуном и эту практику быстро набирает под руководством более опытного коллеги. Впрочем, и теряет квалификацию тоже быстро, модные фреймворки меняются каждые 2-3 года.
                    Без фундамента потолок программиста — максимум мид. Если он пролез выше и его код уже серьёзно не проверяют, он может накосячить в сложной задаче просто потому, что не понимает основ. Причём на простых случаях его велосипед будет работать.
                    • +1
                      Программист любого уровня может встретить задачу, которую он ранее не решал.
                      И, соответственно, он будет изобретать велосипед.
                      Фундамент программиста, понятие весьма размытое, на самом деле.
                      Если брать аналогии со строительством, подавляющее большинство строителей частных домов используют какой нибудь ленточный фундамент и строят всю жизнь.
                      Конечно, они не построят бункер или мега высотку.
                      Но… оно им и не нужно, просто такой работы нет.
                      Конечно, нужно стремиться к недостижимому идеалу. Вопрос, сколько ресурсов будет на это затрачено и окупиться ли, в конечном итоге.
                      Я бы все таки не стал начинающего программиста посылать изучать академические фундаментальные вещи. По простой причине. Возможно программирование это вообще не его сфера. И он покинет ее через время.
                      А вот поработав, если это его, он поймет, чего ему не хватает, интуитивно и станет изучать нужные ему темы.
                      Если смотреть шире, я бы вообще, сначала посылал молодых людей не в институты, а поработать на разных работах, а когда они осознают себя и свое призвание, дальше уже учиться :)
          • 0
            Из недавнего.
            Есть коллекция непересекающихся периодов времени с пропусками
            <date1, date2> <пропуск> <date1, date2>…
            и коллекция фактов, случайно распределенных по датам, включая пропуски в коллекции 1
            Порядок количества периодов времени — от едениц до сотен.
            Порядок количества фактов — от едениц до сотен тысяч.
            Лежат в разных базах, join на стороне базы недопустим.
            Задача — разложить факты по периодам по условию date3 >= date1 && date3 < date2+ interval '1 day'.
            Всё это нужно сделать примерно 100<n <2000 с разными коллекциями 1 и 2.
            Наивное и лучшее решение различаются по времени на 1-2 порядка.
            • +1
              Если без лукавства, как будут делать подавляющее большинство программистов?
              Так: «Ага, знаю вот я такой то алгоритм, лучше его применить, будет по времени быстрее»?
              А вот и нет.
              Сделают в лоб. Посмотрят время выполнения. Если устраивает, то так тому и быть.
              Если не устраивает, будут думать, гуглить, изобретать велосипед, все в меру своего таланта.
              И это не означает, что это плохие программисты.
              Повторюсь, компаний, работающих на пике ИТ сложности (Гугл, там, Яндекс, Касперский… не знаю, еще кто то) мало. И нет такого широкого рынка для знающих мега алгоритмы.
              И огромные массы людей работают в разработке бизнес приложений, для которых то, что я описал выше это самый рациональный путь с точки зрения затрат ресурса программиста.
              • +1
                Если без лукавства, как будут делать подавляющее большинство программистов?
                Так: «Ага, знаю вот я такой то алгоритм, лучше его применить, будет по времени быстрее»?
                А вот и нет.
                Сделают в лоб. Посмотрят время выполнения. Если устраивает, то так тому и быть.

                По вашему получается, что подавляющее большинство программистов потратят время на решение в лоб, потом потратят время на замеры, а потом, на поиск в интернете оптимального решения и на изготовление велосипедов. Это вместо того, чтобы сразу написать оптимальное решение.


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

                • 0
                  Как это не удивительно, но замечание "получается, что подавляющее большинство программистов потратят время на решение в лоб, потом потратят время на замеры, а потом, на поиск в интернете оптимального решения и на изготовление велосипедов. Это вместо того, чтобы сразу написать оптимальное решение." является истинным. Не смотря на то, что "Скорее всего замеры будут плохие и тот факт, что всё очень медленно — выяснится уже на продакшне."
                  Просто потому, что сделать не очень хорошо и доводить до приемлемого уровня в разы быстрее, чем сделать сразу хорошо.
                  К примеру, у вас есть один суперпрофессионал (больше на рынке не нашлось), который точно делает сразу очень хорошо. И два десятка молодцов, которые думают, что делают сразу хорошо. Можно конечно нагрузить всё на профи, а остальные пусть получают свою зарплату. А можно распределить работу между молодцами. И если вдруг всё будет плохо, то подключится профи и ткнёт неумех в их грязный вонючий код. Код перестанет вонять, продукт станет лучше, а ребята подрастут в профессиональном плане и всё это за разумное время и за разумные деньги.
                  • 0
                    Просто потому, что сделать не очень хорошо и доводить до приемлемого уровня в разы быстрее, чем сделать сразу хорошо.

                    Тут нужно соблюдать какой-никакой баланс. Например, нанимать разработчиков, которые с первого раза делают на 60 из 100 и стоят немного дороже, чем разработчики, которые делают на 30 из 100. Или вообще столько же, я такое видел. И подготовка по алгоритмам для этих 60 из 100 нужна вообще базовая, никаких излишеств.

            • 0

              А скорость разработки этих решений, включая получение теоретических знаний?

    • +1
      Не только синтаксис) Как минимум встроенные функции и стандартную библиотеку.
      • 0
        Имя ф-ий в том или ином языке я имею неоторожность называть синтаксисом (прошу прощения), JSON.stringify и json_encode по мне одно и тоже обозначающих одно и то же действие на разных языках программирования.
        Вот выстроить из доступных действий эффективный компактный и понятный код, это уже алгоритмические знания. Когда алгоритмические знания будут достаточно качественными, можно углубляться в языковые фреймворки, которые смогут сделать код ещё более быстрым, и компактным. (и тут я засомневался, что получится сделать с фреймворком более эффективный код )
    • +1
      В институте основы алгоритмизации преподавали на примере асемблера 16бит… дисциплинирует :)
    • 0
      Ну, на самом деле все имеет значение, конечно.

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

      Синтаксис — он не имет значения при сравнении, при условии что это языки из одной группы, скажем так. Т.е. вот например javascript vs python — это различие вряд ли значимо, а вот замена любого языка из этой пары на кложу или Haskell — и ваш дальнейший путь может серьезно измениться.
      • 0
        Если вы выберете первым ассемблер — то шансы остаться работать на всю жизнь, программируя микроконтроллеры, будут намного выше, чем при выборе javascript.

        Если позволите, немного перефразирую. Если начнете трудится, используя асм, то шансы да. Т.е. мое мнение — учится можно на чем угодно, получать реальные практики уже важно на чем(тоже относительно, конечно).

        Хотя, талантливые люди талантливы во всём, бездарности выбирают что-то одно :)
        • 0
          Ну в общем да. Если изучать что-то в качестве хобби — то все немного иначе, чем если вы на этом уже зарабатываете.
  • +4
    Добро пожаловать в Россию. Хотите разрабатывать не на 1С — езжайте в столицы.
    • 0
      Путем нехитрых размышлений мы получаем, что Саратов таки столица. Судя по всему — Поволжья. В Саратове не просто есть возможность писать не на 1С. Тут есть возможность начать свой путь в разработке. И есть выбор для продолжения. Нюанс — джуниорские позиции на хх.ру не всегда выкладываются, но часто рекламируются в ВУЗах города.
      • +1
        И тут Волгоград, Самара, НиНо и даже Казань резко задумались, насчет такого утверждения, что именно Саратов — столица Поволжья)
  • +7

    Не найти работу с Django — это еще постараться нужно. Имхо, Пайтон — тут не виноват.

    • +6
      Хед хантер, Воронеж. 2 вакансии для мидла на миллион жителей. 0 — для джуниора. Особо не старался даже.
      • 0
        Миллион миллиону рознь. Угадайте, где больше программерских вакансий: в Новосибирском Академгородке со 130 тыс. жителей или в остальном полуторамиллионном Новосибирске?
      • 0

        Многое можно написать на эту тему, но, достаточно того, что, если следовать логике автора, лучший язык программирования — 1C — с ним можно в любом сельпо устроиться. Верно?


        Я сейчас нахожусь в СПБ и работаю в команде с разработчиком из Дагестана, он живет в городе (?), название которого я даже запомнить не могу, и в команду он пришел практически после института (это к вопросу об уровне). Очень хороший разработчик если что. А компания, на которую мы работаем, находится в Германии. Как вы думаете, "плохие" языки программирования мы используем, или "хорошие"?

        • +1
          Но согласитесь что это скорее исключение, на одного такого дагестанца приходится пара тысяч тех кто так не смог устроиться (ошибка выжившего вроде...), мы же говорим про людей около среднего уровня (не по опыту).
          • +1

            Ну хороший программист — это всегда исключение. Это в принципе профессия не для всех.

        • +1
          в команду он пришел практически после института (это к вопросу об уровне)


          Зря недооцениваете вышку (если она профильная). К концу обучения у человека уже 4-6 лет опыта программирования, пусть и не «коммерческого». Это лучше, чем 1 год самоучкой в «реальных» проектах.
          • 0

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

  • +12
    Вообще говоря прежде чем учиться чему то два года, что бы на этом зарабатывать, то нужно было начать с просмотра вакансий, а не заканчивать им.
    • 0
      За два года рынок вакансий может несколько измениться
      • 0
        на этот случай уже голову надо включать, тут ничего другое не поможет. Взвешивать шансы, сравнивать варианты. Иметь план. «прикольно, выучу, авось что выйдет» это не план, а его отсутствие. План это «перспективно, выучил, нашел работу, вырос», где каждый шаг продуман заранее. Очевидно над шагом «нашел работу» автор и не думал, и словил проблемы. А ведь могло что угодно еще вылезти. Например что работы много, но берут только с высшим профильным. Или автор женщина в мусульманской стране, бред конечно, но всякое может быть.
        Все вопросы с которыми столкнулся автор, узнаются за пять-десять минут гуглинга (сам через это проходил), и непонятно почему за два года изучения языка автор не додумался это сделать.
  • –3
    Я не начинающий программист и полностью полностью согласен с вашим мнением.
  • +13
    Epic fail.

    Но при чём тут питон? :-D
    • 0
      Главная идея в том, что достаточно большое число людей советуют учить первым языком Python. В итоге, если ваша цель «не просто для себя выучить», а найти работу. То это плохой вариант, если вы не житель Москвы/СПб + студент тех-вуза, которых хантят в гиганты.

      Чтобы у людей не было иллюзий =)
      • +5
        большое число людей советуют учить первым языком Python.

        Это не значит, что вы получите работу, связанную с этим языком. Речь идет о том, чтобы изучить его, чтобы вообще «въехать в тему». А потм учиться дальше. И дальше. И еще. А уж потом искать работу. И это будет вовсе не первый язык.
      • +1

        Вы совершенно неправильно понимаете эти советы. Питон нужно учить для основы — там прекрасная, логическая стандартная библиотека, язык очень хорошо продуман и структурированный. За месяц или 2 можно разобраться, а потом уже можно переходить на что-то востребованное в вашем городе.

        • 0
          Дык в этом то и проблема, что люди спрашивают для работы.
          • +1
            Люди обычно не говорят, для чего спрашивают.

            Когда явно спрашивают для работы, им отвечают что учить для работы. Когда просто спрашивают что учить, отвечают что именно надо учить.
          • +1

            А я про что. Без основы вы не найдете нормальную работу, не важно какой язык у вас востребован. Питон дает это основу легче всего, а потом уже можно переходить на пхп/js и тд. Это не означает, что нужно питон учить 2 года, вместе с базами, джанго и всем стеком для веба, только основы, написать какой-то скриптик, чтобы облегчал себе жизнь, какойто каталогизатор музыки или фоток и тд. А тогда уже смотреть популярные вакансии. Я когда переходил с пхп на питон, я переучивался заново, потому что на пхп в веб-студии научился костылям и гамнокоду. В питоне тоже можно в гамнокод, но это труднее, он отлично сбалансирован по легкости изучения и строгости, хоть и динамично-типизированный

          • 0

            А если для работы, то что, не нужно уметь программировать?

            • 0

              Разные метрики выбора. Учиться программировать джаст фор фан можно годами и даже десятилетиями. Для работы обычно важно как можно быстрее получить работу.

        • –1

          Не продуман этот язык.


          Скрытый текст
          Почему
          ```
          In [1]: { False: 'a', True: 'b', 0: 'c', 1: 'd' }
          Out[1]: {False: 'c', True: 'd'}
          ```
          ?

          Почему `len(stuff)`, но `stuff.sort()`?

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

          Как там с хвостовой рекурсией?

          И это я уже не спрашиваю про всякий паттерн-матчинг, который здорово помогает декомпозировать типы.


          И создавался он человеком, который о всяком связанном с языками программирования матане (и это, условно, не только описанное в Dragon Book, но и всякие там теории типов и прочее счастье) вообще ничего не знает.
          • –1

            Люблю людей, которые абсолютно не разбираются в теме и любят высказывать свое "проффесиональное" мнение)
            Отвечу в обратном порядке


            Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию)

            (с) Вики
            По поводу хвостовой рекурсии


            С лямбдами все впорядке, не вижу, чего с ними не так


            len(abc) — потому что в питоне простые типы написаны на чистом С и использование функции len() будет намного быстрее по скорости, актуально для больших строк — это компромис между елегантностью и скоростью


            Потому что в питоне True = 1, a False = 0 и хеш у них тоже одинаковый.


            У каждого языка есть свои компромисы, я не говорю, что он идеальный, но то что продуманный — так это видно, если сравнить с js или php

            • 0

              Люблю людей, которые видят намёки на утверждения о профессиональности мнения где попало.


              По поводу хвостовой рекурсии

              Накостылять можно почти что угодно где угодно, речь идёт о том, что в языке из коробки.


              С лямбдами все впорядке, не вижу, чего с ними не так

              Как мне в лямбде написать два стейтмента, например?


              len(abc) — потому что в питоне простые типы написаны на чистом С и использование функции len()

              Реализации интерпретатора есть разница, вызывать свободную функцию или метод объекта, учитывая, что к объекту нужно обращаться? Всё ещё хуже, чем я думал.


              Потому что в питоне True = 1, a False = 0

              А почему? У них же даже типы разные.
              Да и ipython мне говорит, что нет:


              In [1]: True is 1
              Out[1]: False

              У каждого языка есть свои компромисы, я не говорю, что он идеальный, но то что продуманный — так это видно, если сравнить с js или php

              Не надо сравнивать с этими языками.

              • –1
                Накостылять можно почти что угодно где угодно, речь идёт о том, что в языке из коробки.
                Как мне в лямбде написать два стейтмента, например?

                А еще там написано, что Гвидо против оптимизации хвостовой рекурсии и я с ним согласен, тоже касается лямбд, если нужна функция с несколькими действиями — бери и создавай именно функцию, в которой хотя бы через имя можно понять, что она делает. Питон как раз не перегружен функциональщиной, для этого есть Clojure или Haskell, но позволяет познакомиться с самыми базовыми концепциями, как то функции первого порядка, лямбды, мап и тд.


                А почему? У них же даже типы разные.
                Да и ipython мне говорит, что нет:

                Вы сравниваете ссылки


                -> [1]: 1 == True
                <- [1]: True

                Не надо сравнивать с этими языками.

                Именно с пхп автор предлагает начинать программировать — логично с ним и сравнивать, ну и также с очень популярным нынче javascript

                • 0
                  А еще там написано, что Гвидо против оптимизации хвостовой рекурсии

                  Но почему? В чём смысл быть против какой-либо оптимизации?


                  если нужна функция с несколькими действиями — бери и создавай именно функцию, в которой хотя бы через имя можно понять, что она делает

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


                  Питон как раз не перегружен функциональщиной

                  Её там вообще нет. Наличие лямбд и функций с именами map и fold/reduce — не критерий функциональщины совсем.


                  Haskell

                  В котором WTF-моментов существенно меньше, например.


                  функции первого порядка

                  Высшего, кстати.


                  Вы сравниваете ссылки

                  Ссылки на что? На внутреннее представление объектов в интерпретаторе? А почему это меня вообще должно волновать?


                  И аргумент о том, что у них семантически типы разные, всё равно остаётся в силе.


                  Ну и то, что можно сделать True + True и получить 2, это круто. В языке со строгой типизацией я бы ожидал, что операция сложения к ним не применима, либо какое-то разумное определение сложения и умножения для поля из двух элементов (например, сложение — and, умножение — or).


                  Именно с пхп автор предлагает начинать программировать — логично с ним и сравнивать, ну и также с очень популярным нынче javascript

                  Тогда уж с точки зрения перспектив, лёгкости освоения и прочих подобных вещей, а не продуманности, про которую у автора не было ни слова.

                  • 0
                    Но почему? В чём смысл быть против какой-либо оптимизации?

                    Тут более подробно про "функциональность" в питоне и почему именно так все организовано


                    Ссылки на что? На внутреннее представление объектов в интерпретаторе? А почему это меня вообще должно волновать?

                    В питоне нету выражения для передачи по ссылке, поэтому


                    True is 1

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


                    Тогда уж с точки зрения перспектив, лёгкости освоения и прочих подобных вещей, а не продуманности, про которую у автора не было ни слова.

                    Как раз с точки зрения освоения он намного лучше подходит чем пхп или js

                    • 0
                      Тут более подробно про «функциональность» в питоне и почему именно так все организовано

                      Выглядит именно как следствие хренового и непродуманного дизайна, на мой взгляд.


                      Как раз с точки зрения освоения он намного лучше подходит чем пхп или js

                      Это другой разговор, а мы ведь сейчас обсуждаем не это, верно?


                      И так всё-таки, ну просто интересно очень, почему нет типа Bool, а вместо этого какой-то костыль?

                      • 0
                        Выглядит именно как следствие хренового и непродуманного дизайна, на мой взгляд.

                        Прям в с++ все продумано и логично — с трудом верится. Там четко описаны причины ввода функциональных елементов — это желание сообщества, изначально он был продуман именно для ООП, поэтому пришлось находить компромиссы.


                        А что з точки зрения математики 0 и 1? Лично мне очень удобно подобное сравнение, так же как пустой список или словарь означает False. В питоне любое значение отличное от 0 приравнивается к True если проверку делать в if — и это чертовски удобно для разработки.


                        И вообще для критики принято показывать сравнение, которого вы ни разу не сделали, поэтому спорить с вами нету никакого смысла

                        • +2
                          В питоне любое значение отличное от 0 приравнивается к True если проверку делать в if — и это чертовски удобно для разработки.

                          Мммм запахло старым добрым С.
                        • +1
                          Прям в с++ все продумано и логично — с трудом верится.

                          Нет. Но у плюсов был серьёзный констрейнт задачи в виде совместимости с C. У питона такого констрейнта не было.


                          А что з точки зрения математики 0 и 1?

                          Единичный элемент по сложению и по умножению соответственно.


                          так же как пустой список или словарь означает False

                          Ужас какой-то, если честно. Не принцип питона ли, что явное лучше, чем неявное?


                          В питоне любое значение отличное от 0 приравнивается к True если проверку делать в if — и это чертовски удобно для разработки.

                          У меня есть достаточно долгий опыт разработки на C++, где что-то похожее, и опыт на хаскеле поменьше, где нет неявных преобразований. В общем, отсутствие неявных преобразований удобнее.


                          И вообще для критики принято показывать сравнение, которого вы ни разу не сделали, поэтому спорить с вами нету никакого смысла

                          Сравнение с чем? Кем принято? Для демонстрации непоследовательности и внутренней противоречивости системы никаких сравнений делать не надо.

                          • 0
                            У питона такого констрейнта не было.

                            Мне как раз кажется, что был. Думаю, что автор хотел упростить написание биндингов к C, а потом пришлось поддерживать груз обратной совместимости ©. // впрочем, что им мешало сделать по-человечески в третьей ветке, я ума не приложу. Видимо никому в продакшене это не мешает.


                            В общем, отсутствие неявных преобразований удобнее.

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

                            • 0
                              При условии, что тебя бьют за не сделанное вовремя преобразование на этапе компиляции.

                              Конечно. Без тайпчекера никуда!

          • 0

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


            Второе поведение логично и правильно.
            Метод sort меняет массив in-place, меняя состояние, так что логично, что это метод данного объекта. есть отдельная функция sorted, если менять объект не нужно.


            Лямбды принесли в жертву читаемости кода и упрощению интерпретатора. Код с многострочными анонимными кусками кода, кмк, сложнее понимать из-за возможной потери контекста внешнего куска при чтении. В однострочную лямбду ничего сложного засунуть принципиально нельзя без явного уродования кода.

            • 0
              Метод sort меняет массив in-place, меняя состояние, так что логично, что это метод данного объекта. есть отдельная функция sorted, если менять объект не нужно.

              Это логичное и разумное объяснение, спасибо. Но почему тогда есть свободная функция next(), которая, судя по документации, вполне себе меняет состояние передаваемого ей итератора?


              Код с многострочными анонимными кусками кода, кмк, сложнее понимать из-за возможной потери контекста внешнего куска при чтении.

              Но как? Вот же он, внешний кусок, прям где лямбда написана!

              • +2
                Но почему тогда есть свободная функция next(), которая, судя по документации, вполне себе меняет состояние передаваемого ей итератора?

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


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


                Вот же он, внешний кусок, прям где лямбда написана!

                Да, и это может быть проблемой.
                Чем длиннее у нас непрерывная портянка кода, тем больше сущностей в ней задействовано, и тем сложнее все их отследить.
                Если исходить из предположений, что люди удерживают в голове ~7 переменных и имён функций (немного адаптируем предположение из практики UX), и что количество новых сущностей линейно зависит от длины кода, то длинное замыкание втаскивает много сущностей в ограниченную голову, из-за этого можно потерять понимание поведения функции в целом.
                От этого можно спастись, пытаясь не читать эту лямбду, пока не понадобится, но её нельзя не прочитать, потому что


                • она прямо на глазах маячит
                • у неё нет имени, т.е. автор кода явно не указал, что она делает.

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


                Так что это способ авторов языка провоцировать пользователей именовать сложные операции над элементом коллекции, например, или писать цикл for вместо map или спискового выражения, т.к. python — императивный язык.

                • 0
                  Зачем гадать, когда есть документация, в данном случае PEP-3114. Если его почитать, то понятно что встроенная функция next() имеет спорное происхождение. Там, среди прочего, закреплено особое мнение Martin von Loewis о том, что она не нужна. И мнение о том, что она нужна для унификации и единообразия с getattr, iter.
  • 0
    HR в целом плевать есть у тебя опыт или нет, им главное закрыть вакансию.
    джун/мид/сеньёр/бог — это всё условные разделения/лычки, часто просто за выслугу лет: знаю я пару не джунов которые гитом пользуются кое как: история/ветки — нислышали, ребейс/сташ+поп — нислышали, в итоге открываешь гит а так куча ниток и все перепутаны в гордеев узел.

    Главное это то что у тебя есть в портфолио, уверенность в себе, адекватность.

    Для примера: я устроился разрабом на сях без «подтверждённого опыта» в трудовой, ВО в этой области.
    В трудовой всякие инженера по обслуживанию техники, сетей, с огромными окнами между ними. Ответ на вопрос «чем занимался» — фрилансил, нынче многих устраивает. Но всякие HR на предприятиях которым не платят за закрытие вакансий и не напрягают за то что они не закрываются, а также госы будут смотреть и на профильное ВО и на «непрерывный трудовой стаж» фапать. Хотя и там HR начинают дрочить и они спамять вакансиями даже мне, тот же ростелек и почтарф :) Ну и постепенно приходит понимание что работу работать важнее чем такие мелочи.
    Однако к этим «минусам»/мутноте у меня была кучка своих опенсорц проектов, пачки коммитов в другие проекты и ОС, бэкграунд по сетям и крипте.

    Ради интереса я смотрел как HR смотрят резюме — как правило они не смотрят ссылки на проекты/коммиты, написанному верят, особенно когда там простыни на страницы. Те по моим ссылкам на хаха в основном ходили тех спецы перед собеседованием, да и то далеко не всегда. Хуже всего когда ты знаешь что они не смотрели ничего с твоего и при этом суют свои тесты, прям неуважение в полный рост.
    Ещё один нюанс — написать о десятках коммитов и багфиксов в разные проекты это страница текста и их можно за месяц настрогать, а написать о прошлом месте работы — страницу нужно ещё очень постараться и потратить минимум год, ибо меньше года — значит неуживчивый/накосячил-выгнали/тп, либо нужно отдельно пояснять что пришёл на проект, сделал и ушёл, это если не отсеят раньше и вообще пригласят пообщаться.

    Поэтому не гони волну на пайтон, настрогай коммитов, опиши красиво в резюме, напиши что фрилансил 20 лет до этого и будь счаслив.
  • 0
    Python конечно в данном случае не причем, но то что вакансий на нем меньше чем PHP это факт.
    И да, вакансии нужно анализировать до того как начал изучать что то (если хочешь именно работать с этим).
    • 0
      На Python не просто вакансий меньше, они все еще сконцентрированы в одном месте. Когда тот же php гораздо обширней используется по всей рф.
      • 0
        С этим согласен, но не совсем.
        Даже если пробежаться по моим соседним регионам, то найду по 10-20 вакансий на python, 2 их которых будут на junior позицию (смотрел Ростов и Краснодар), но да, вакансии в основном в областных центрах, а php и в более мелких городах можно найти.

        И все это не проблема Python-а, а уж тем более пайтона как первого языка (т.е. заголовок считаю совершенно не описывающим сути статьи).
        Да, если учить сразу php/1c, то действительно легче найти работу, но рекомендовать их как «первый» я бы не стал.
        • 0
          Ростов и Краснодар это показательно. А давайте по Хабаровскому краю и ЕАО попробуем?
          • 0
            Ну пробовать я не буду, догадываюсь раз вы это пишите то там не много предложений для python разработчика, а подскажите, вакансий для php/1c сколько?
            Но опять же, о чем это говорит?
            О том что python плохой или что у бизнес о нем не знает (является ли это проблемой самого языка, не берусь судить)?

        • +1
          Ох, выбрали вы… Краснодар это Тандер, даже у нас в Брянске несколько вакансий от них висит. Кроме них собственно вакансии по python появляются по одной раз в пол года, и то чаще всего это доп. язык. И это в городе с ~ 400к населения.
  • 0

    Мне кажется автор вполне может претендовать на миддла. То что он пилил для себя а не для дяди решающего значения не имеет. Ищите адекватного нанимателя в столицах.

  • +1
    В общем, за год я

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

    Марк Лутц — Изучаем Python
    Марк Лутц — Программирование на Python
    Чед Фаулер – Программист Фанатик
    Билл Любанович – Простой Python

    Я за 8 лет прочитал меньше книг по PHP. :)

    2) Изучил множество роликов от Украинских/Буржуйских авторов по Django

    Не смотрел ни одного ролика.
    Хотя нет. Один посмотрел :) Чисто из интереса к автору :)

    3) Прошел курс от codeacademy

    Не проходил никакие курсы

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

    1) Изучил книги:
    Джон Дакетт — HTML и CSS. Разработка и дизайн веб-сайтов
    Дэвид Флэнаган — JavaScript. Подробное руководство
    Бен Форта — Освой самостоятельно SQL.

    В начальном создании сайта вообще ничего не изучал.
    Ну кроме курса HTML в институте (учился на экономиста, вдруг что :))

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

    Это самое главное. :)
    Главное, что его поддержка на Python приносит Вам радость. :)

    И так уж сложилось, что их концентрация находится в столицах.

    Так а почему Вы не захотели переехать? :)

    А учить стоит не столько сам язык, сколько подходы к программированию. Они примерно везде одинаковые. :)
  • +1
    Ой, что-то мне подсказывает, что не знаете вы Питон. Думаете, что знаете, но нет.

    98%, что вас поймают на собеседовании и по основам и по тонкостям.

    Ты всё правильно делал, только где примеры кода, где проект, который ты поднял на питоне, покажи.

    Я допускаю вариант, что ты действительно гуру-питонист и можешь писать сходу реальные проекты и коммитить грамотный код, не уступая остальным в команде, а злые компании/HR такого способного и умного не берут. Да, это и впраду неспреведливо и обидно, гений в провинции пропадает, не найдя признания.

    Но есть вероятность, что дело обстоит несколько не так.
    • +2
      Как я понял — автор не об этом, а о том что как раз с вакансиями на python начального уровня все печально. Был бы он гуру — он бы не грустил по поводу отсутствия вакансий на junior)
      • 0
        Дак пусть отправит свой сайт и код в компанию какую-нибудь удалённую, что он потеряет, денег у него не возьмут.

        Только идиот на месте руководства не возьмёт способного парня с 2 годами самообучения. Ему же и платить много не надо, если провинция, то 30 тысяч и нормально. Нормальный опытный питонист меньше чем за 100 из дома не выйдет в Питере и уже тем более в Москве.
        • 0
          Все же 2 года самообучения совместно с работой не связанной с программированием(как я понял) и два года работы полноценной — вещи разные.
  • –3
    Трудный заход у автора на Хабрахабр, но видно что наболело! За старания — плюс, но в следующий раз лучше не поднимать холиварных тем.
  • +2
    С Ruby ситуация еще плачевней
    • –1
      Руби #нинужен
    • +1

      Хм, а Вы что так же усердно, как автор, изучали Ruby и свои OpenSource-проекты есть? Если да, то пришлите в личку резюме.

  • +10
    Вам не повезло.

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

    Два месяца мы набивали шишки. Наш код работал, но он был уродливым. И эта уродливость никого не беспокоила бы, если бы не странная вещь: при внесении изменений то здесь, то там Python вставал в позу и говорил «лучше убейте меня, я не буду так работать». Всё то, что PHP прощал и даже поощрял, этот засранец вываливал на нас исключениями при первой же возможности. Примерно в этот момент была замечена одна характерная питонячья особенность, которой я постоянно тыкал коллегу на ревью:

    Если код на Python получается уродливым – вероятно, он неправильный.

    Потом был «import this», и не без гордости для себя я обнаружил

    Beautiful is better than ugly.

    Наступило просветление, мы взялись переписывать изначально неправильно написанные участки кода (под «неправильно» я подразумеваю «написанные в PHP-стиле», без использования фич Python – с циклами while..do вместо for..in, без слайсов, операций со списками, с велосипедами, которые есть в стандартной библиотеке или на PyPI). Хорошая стандартная библиотека, экосистема, документация и философия Python вообще здорово добавляла энтузиазма, пропал страх, что мы зря ввязались в эту аватнюру «с нуля». Потом настал черёд

    There should be one — and preferably only one — obvious way to do it.

    И мы взялись пересматривать участки кода, которые ну просто не могли быть неправильными. И они оказались неправильными. Например, нашлась функция генерации slug, почти 1-в-1 скопипащенная с PHP. Посмотрите на транслитерацию. Ведь это написано не от хорошей жизни – PHP может быть собран без iconv, а если собран с iconv, то всё-равно флаг //TRANSLIT может не работать для конкретного языка. А может лучше intl? А если intl, то transliterator_transliterate или new Transliterator()? Что у нас там в конструкторе… «id — The id» PHP, да какого хрена? Но ведь и предлагаемый на SO велосипед тоже сломан, там будут проблемы с str_replace/mb_str_replace и чёрт-знает что ещё. И тут в стандартной библиотеке, которую, как нам казалось, мы уже облазили вдоль и поперёк был обнаружен неприметный модуль string с его string.maketrans и string.translate и либа transliterate на случай, если стандартных средств не хватит (хватило). На этом этапе всё очень напоминало комикс XKCD :)



    Заголовок спойлера
    Вижу в режиме Ванги комментарии вроде «вы там в своём питоне просто готовые кубики собираете, я тоже могу composer install %whatever%» – нет, просто не отвлекаемся на дурную работу.

    За 4 месяца проект был закончен и успешно запущен. Просто небольшой широко известный в узких кругах интернет-магазин на Flask/PyMongo/WTForms + что-то вроде CRM для управления закупками. Работал и приносил деньги вплоть до 2014 года, после чего медленно загнулся из-за событий в/на Украине (вероятно, у ЦА просто кончились деньги и желание вкладываться в предметы роскоши). Из особенностей можно отметить pure-python стек технолоний: сайт крутился на gunicorn, сервисные задачи на Celery, полнотекстовый поиск был реализован на Whoosh и весьма шутро искал даже в пиковые праздничные дни.

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

    Единственная книга по Python, которую я прочёл до сих пор – https://learnpythonthehardway.org/book/. Она хороша, рекомендую.
    • +3
      на пхп ваш магаз заработал бы гораздо раньше. И что важно без анальных утех.
    • +2
      Это пример, когда ваше увлечение оплачивает работодатель.
      Готовых скриптов магазинов туча и платных и бесплатных.
      Это так отвлечение.
      И по вашему примеру я понял, что поизучав Питон на некоем проекте, вы продолжаете работать на PHP.
      Казалось бы, вот он шанс перейти на классный язык, но вот нет, продолжаете есть кактус.
      Из вашего поста я не понял в чем вы возражаете автору?
      У него основная мысль — взяв язык для изучения типа Питона, вам будет гораздо труднее найти работу.
      Собственно так и есть.
      • +2
        У меня основная мысль – взяв язык для изучения типа Питона, вы научитесь писать код лучше, чем в случае старта с PHP.

        И на это не нужно тратить 2 года, сутками сидеть на курсере или, не дай Бог, смотреть видеоуроки (более бесполезной траты времени и придумать сложно). Изучили технологию, применили, GOTO 10. Если хочется Python, но в Урюпинске только вакансии PHP – на веб-фреймворках свет клином не сошёлся:

        • Понадобилась вам в проекте на PHP лопатить табличные данные – выбросите нафиг понаписанные в консоли Symfony скриптики с fgetcsv, Pandas отлично их заменит.
        • А может документация к проекту? Почему бы не заюзать Sphinx-doc, он проще и лучше phpDocumentor, подключается через sphinxcontrib-phpdomain.
        • Плохо работают очереди? Нафиг Gearman, засуньте воркеры на PHP в Celery, даже такой комбайн будет удобнее в обслуживании.
        • Задеплоить приложение? Ansible подойдёт.
        • Логи/отчёты об ошибках/статистика? Разверните Sentry, поставьте sentry-php/raven и у вас божественный агрегатор логов.

        Это всё тоже Python. Смешать, но не взбалтывать.
  • +2
    Проект показал свою жизнеспособность (по сей день приносит мне определенные деньги, чему я безумно рад).

    Можт еще пару таких проектов и нафик эту работу вообще. ;)
  • 0
    А можно выучить Scala и получить работу. Скалистов сейчас не хватает.
    • 0
      А где без опыта возьмут скалиста?)
    • +1

      Наступят ли времена, когда хаскелистов будет не хватать?

    • 0
      А можно выучить Scala

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


      Спасибо, Вы сделали мой день.
    • 0
      В дополнение к Scala обычно требуют знание Java + зоопарк какого-нибудь эдишена
  • 0
    Просто раньше вместо Питона начинали с Бейсика или Паскаля. Сейчас они слишком неактуальны.

    Perl тоже сдал позиции универсального скриптового языка в пользу Питона.

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

    P.S. А PHP слишком активно привязан к web, поэтому большинство примеров сразу связано с тем, что надо учить html/css и настраивать веб-сервер. Конечно, можно использовать stand-alone php, но попытки беглого гугления будет выдавать большую часть примеров именно для веб, что опять таки требует установки и настройки веб-сервера.

    • +1
      В пхп встроенный веб-сервер для разработки. Вся настройка пару ключей.
      • +1

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


        На реальной работе скорее всего придётся пилить какой-нибудь битрикс или сайт на, прости господи, 5.3, где никаким встроенным веб-сервером не пахнет, да и обойтись им не выйдет.

        • 0

          Речь о том, что если нужен веб для экспериментов и тестов, то отдельного веб-сервера не нужно уже лет 5.


          А на реальной работе мне ничто не мешает тестировать встроенным сервером на 7.1 то, что на продакшене крутится под 5.3.

          • 0
            ничто не мешает тестировать встроенным сервером на 7.1 то, что на продакшене крутится под 5.3.

            На самом деле мешает.
            В новых версиях интерпретатора есть функции и синтаксис, которые не поддерживаются в старых версиях. Мы в своё время здорово стукнулись об этот момент, когда разработчик написал код у себя на 5.4, а в проде был ещё 5.2. Подобное должен лечить и бить по рукам CI, но лучше сразу писать под ту же версию, что и в проде.

            • 0

              Мешают вещи наоборот, которые выпилились или сильно изменились в новых версиях. Но я вроде, их все переписал на совместимый манер постепенно. Я пишу под 5.3, но тестирую под 7.1.


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

              • 0

                возможно, да. но речь как раз о том, чтобы уменьшить вот это "на моей машине работает".
                Чем меньше разница между машиной разработчика и продакшеном, тем лучше.
                Разумеется, должен быть разумный баланс между удобством и совпадением окружений, и если можно позволить себе обновить систему на проде, то лучше это сделать.

                • 0

                  В случае 5.3 на одном проекте и 7.0 на остальных разве что виртуалки или контейнеры городить для локального тестирования. Да, речь исключительно о локальном, о проверки перед тем как запушить в дев-ветку.

                  • 0
                    В случае 5.3 на одном проекте и 7.0 на остальных разве что виртуалки или контейнеры городить для локального тестирования.

                    Хм, а что PHP не позволяет несколько версий параллельно на один комп поставить?

                    • 0

                      О, что-то нашлось: phpbrew.

                    • 0

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

      • 0
        как будто мир крутится вокруг веба
        • 0
          Окей, может меня не так поняли.

          Если встречается непонятка в php, и вы начинаете ее гуглить, 90% ответов ведут в сторону того, как эта проблема решается в web-приложении. Просто потому что PHP популярен под веб. И ответ будет overqualified для задачи. Мы же говорим даже не о начинающем программисте, а о первом языке программирования.
  • +6

    "Почему не надо учить только python, чтобы работать web-разработчиком в провинции" было бы правильнее.

  • +1
    Я, с точки зрения бизнеса, не вижу ни одной причины начинать новый проект на Питон. Всегда есть лучший выбор.

    С точки зрения разработчика — тоже. Как вспомогательный язык-клей, возможно, не более.

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

    Вот свежая статистика вакансий.

    А вот статистика по языкам для хобби-проектов выходного дня.

    • 0
      А вот статистика по языкам для хобби-проектов выходного дня.

      Добавлю перевод.

      • 0
        Благодарю, в английской версии я даже кое что неверно понял =)

        Кстати, статистика по языкам обучения в США из того же источника. Не думаю, что в ВУЗах за два года принципиально что то поменялось.
  • 0

    Да, это не о Питоне. Это о том, что прежде, чем делать вложение, надо задуматься: "А смогу ли я это продать?" Хотя тут и сюрпризы бывают. Мал спрос — мало и предложение. Если ты обладатель эксклюзивной компетенции, есть шанс продаться подороже.


    Но база в технологии разработки тут ох, как нужна, а она от (осмысленного) опыта...

  • +2

    Первый язык и язык для первой работы — существенно разные вещи.
    И мне, честно говоря, трудно представить даже джуниора, владеющего всего одним языком.
    К примеру, я к моменту выпуска из вуза (20 лет назад, когда популярных языков было поменьше) знал и мог использовать полдюжины и имел представление ещё о нескольких, и освоение нового (императивного) языка воспринималось как в том анекдоте: "Методичка есть? Тогда докурим и пойдём сдавать".


    Я понимаю, что два года у вас ушло не на изучение Питона (что там учить?), а на освоение библиотек и фреймворков. Вот это и было ошибкой: изучив один язык (допустим, это заняло бы у вас пару месяцев) стоило остановиться и оглядеться.


    P.S. Правда, не знаю, насколько питон хорош в качестве первого языка. Мне им воспользоваться в первый раз довелось всего пару недель назад, для написания скрипта. Просто в macOS "из коробки" для правки JSON не оказалось ничего проще: javascript есть, но в весьма странном варианте, а править JSON sed-ом — не самое разумное.

    • +4
      К примеру, я к моменту выпуска из вуза (20 лет назад, когда популярных языков было поменьше) знал и мог использовать полдюжины и имел представление ещё о нескольких

      Вопрос, что означает понятие «знал».
      Нужно срочно менять объявления о вакансиях.
      Писать, что то типа: Опыт работы на <языке программирования> три недели.
      • +5

        Тут фокус не в уровне знаний (гуру я не был, но на трёх языках я к тому моменту выполнял заказы за деньги), а в том, что шесть языков — это довольно небольшой объём знаний. Сколько занимает BNF + описание Си или Паскаля?


        Объём — это библиотеки, не языки. В те времена они были меньше. Turbo Vision казался монструозным :-).


        Выучить свой первый язык программирования — не значит изучить фреймворки и стать квалифицированным разработчиком на нём, как это постарался сделать автор. Это значит именно изучить язык программирования. Понять, как он устроен и как им пользоваться. На это не надо тратить два года.
        А после трёх-четырёх языков освоение ещё одного — обычно ерунда (если не меняется парадигма — к примеру, с императивной на функциональную). Т.е. при необходимости изучил язык за несколько дней и не спеша вкуриваешь библиотеки/фреймворки/API.

      • 0
        Знать — это значит суметь самостоятельно сделать что-то. И для этого реально не нужно изучать язык два года. Надо садиться и делать проекты. На заказ. Читая книжки ничему не научишься.

        Ну вот вы помнится по базам специалист? Расскажите, как по-вашему, сильно отличаются процедурные языки в MS SQL, Oracle, PostgreSQL? Сколько у вас уйдет времени, чтобы начать самостоятельно писать под любую из этих трех платформ, зная другую?

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

          Полностью согласен.
          Расскажите, как по-вашему, сильно отличаются процедурные языки в MS SQL, Oracle, PostgreSQL?

          Я начинал не с SQL. Были всякие Турбо паскали и Си.
          Потом Фокспро и далее.
          SQL и реляционные базы чем хороши? Основаны на реляционной алгебре. Очень хорошо описано в книге К. Дж. Дэйт «Введение в системы баз данных» (которую кстати никто из коллег, с кем я работал, не читал :))
          И можно понимать логически, что делает язык (правда в последнее время все больше идет отсутпление, вводятся такие понятия как оконные функции и прочая лабуда, которую приходится просто запоминать, как это работает, что на мой взгляд плохо, но повлиять на это я не могу, увы).
          Насчет отличий языков, основа у них одна, и это хорошо.
          Конечно я потрачу времени меньше, чем человек с SQL не работавший.
          Но! Речь ведь о том, что человек не отработавший с SQL n-лет, будет изучать две-три недели один, потом 2-3 недели другой, потом 2-3 недели третий. И вот это будет хрень.
          Когда мне приходится переходить, я чертыхаюсь, потому, что приходится изучать, как реализованы нужные мне фишки, которые я изучил за годы работы.
          Человек, проскакавший, как я описал выше, просто не дойдет до этого, не успеет.
          Есть задачи, наверное, где этого будет достаточно, но это примитив.
          • +1
            Я читал Дейта, если что :) хотя это не показатель конечно — просто я начинал в другие времена.

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

            И три недели опыта для такой работы — очень даже немало, потому что вы спокойно за это время просмотрите документацию вдоль и поперек, и все что вам будет нужно — найдете и поймете. То есть, если у вас уже был проект, реальный, где вы поработали с каким-то инструментом — то на освоение другого похожего инструмента три недели как правило более чем достаточно.

            Я кстати предпочитаю несколько другие языки, вместо python, и для обучения советую тоже другие (например groovy, который примерно такой же по стилю, но в тоже время не имеет некоторых неприятных свойств и острых углов python). И на python пишу раз в три года по необходимости. И это совершенно не мешает работе с собственно языком, а все сложности как правило лежат в плоскости фреймворков, API и прочего (как скажем сейчас нужно сваять что-то работающее с docker). И в такой ситуации чтобы вспомнить сам язык, вообще нужно пару дней.
  • +1
    Автор, скажите, вы прочли «учить Питон первым языком» где-то в русскоговорящих интернетах или в англоговорящей его части? Дело в том, что востребованность программистов, знающих Питон, у нас и у них — разная. Да, возможно приведу некорректное сравнение, но для них Питон, это как для нас многие годы был Pascal/Delphi. Т.е. у них ему учат почти везде и давно, на нем накоплена (в связи с этим) большая кодовая база, у них там много легаси-проектов и много вчерашних стартапов, у которых «поперло» и которые расширяются… У нас ничего этого нет, вся жизнь со всякими модными словами (или просто иностранными) крутится в столицах.
  • 0
    Приезжайте к нам в Краснодар)
    Огромный стек технологий, в т.ч. python, постоянное расширение, всегда есть вакансии и возможность устроиться на работу с уровнем «ничего не знаю, хочу в IT» :)
    Не сочтите за рекламу
    • +3
      Это антиреклама. Самые ценные специалисты у вас, похоже, по 1С.

      По Питону даже стыдно было написать цену =)
      • 0
        Да у них там по программистам 1С зарплата указана «до» (110 000 и 80 000), а для специалиста по внедрению 1С зарплата указана «от» (50 000). А судя по указанной зарплате для системотехника (от 30 000 до 35 000), у программистов зарплата «до» может оказаться меньше чем у внедренца 1С.

        Отсюда вопрос к HR из Краснодара, «Сколько предлагаете для «ничего не знаю, хочу в IT»? и Сколько стоит аренда отдельного жилья в Краснодаре?»

        p.s. вопрос риторический.
        • 0
          Я не HR, я руководитель сектора мобильной разработки, но могу ответить)

          Сколько предлагаете для «ничего не знаю, хочу в IT

          Если нормально подготовиться к собеседованию, самостоятельно поизучать целевые технологии(плюс пробежаться по вопросам собеседованию), если вы адекватный, честный и быстро соображающий(пускай и с помощью Гугла), то от 50.

          Сколько стоит аренда отдельного жилья в Краснодаре?

          Комната в квартире от 6 т.р.
          Однокомнатная квартира от 12 т.р.
          Если нужно быстро, то за 14-15 найти можно за день однушку.

          P.S. Снова не сочтите за пиар, но мне нравится моя работа и я не могу не упомянуть преимущества работодателя: Магнит предоставляет место в корпоративной квартире на две недели, при переезде из другого города. Этого времени хватает на поиски жилья :)
      • 0
        Siemargl, выше ответил по ценам)
        Это подход конкретных HR, они разные по разным технологиям, мне не понять почему они так цены проставляют))
        Самые ценные у нас, насколько я помню — ораклоиды.
        А 1С, да у нас есть несколько довольно серьезных ИС на базе 1С, поэтому человек 100 работает по этому направлению.
        Но на фоне ~1500 IT-шников, это не особо то и много)
  • –7
    Где-то была табличка, ссылку забыл, средние зарплаты программистов на разных языках. Так вот, Питон был в явных аутсайдерах. И проблема наверно в том, что любой дурак практически каждый может взять и начать писать на нем, прочитав книжку для чайников (да, будет неэффективно, но всегда ли это заказчиков волнует). В итоге, если куча студентов может делать это, зачем платить больше… Т.е. одним питоном сыт не будешь, причем в прямом смысле этого слова :)

    Мне лично питон нравится, но для небольших проектов. Когда проект разрастается, многое начинает раздражать — и убогость IDE (Pycharm отстает от Visual Studio лет на 10 имхо), и отсутствие проверок типов при компиляции, и неудобный синтаксис в ООП, и прочие такие мелочи.

    PS: Насчет программистов в глубинке, это вообще отдельная тема имхо. Идя в ИТ имхо надо быть готовым к востребованности только в Москве и Питере, или надо выбирать другую профессию.
    • +1
      убогость IDE (Pycharm отстает от Visual Studio лет на 10 имхо)

      Серьёзно? В чем же он отстаёт? На мой взгляд, для C++ Visual Studio — это самый отсталый инструмент с точки зрения удобства редактора и "интеллектуальных" возможностей работы с кодом (особенно без расширений, вроде Visual Assist или Resharper C++). Да и Visual Studio Tools for Python тоже не блещут какими-то заоблачными возможностями.

      • –1
        Ну самое простое — как например по-быстрому посмотреть список методов текущего файла? И в VS и в XCode есть удобный такой выпадающий список. И чтобы по вводу первых букв список фильтровался. Сходу не нашел, хотя может плохо искал.
        • 0

          Пффф, я то думал…
          Список всего в модуле (файле): Ctrl+F12 (всплывающее окно), Alt+7 (Structure). Поиск почти во всей IDE работает по вводу букв с клавиатуры, в любом подобном окошке. Начинаете вводить буквы, список фильтруется.


          То, что вы привели в пример — это вообще ерунда. Хотя бы рефакторинги попробовали, ну или Search Everywere (Shift-Shift). В общем, изучите инструмент сначала, потом сравнивайте. :)

          • 0
            Спасибо, посмотрю. Это просто первое что пришло в голову. Или к примеру, есть строка с HTML внутри, VS умел показывать ее при отладке в виде html еще в VS2005.
            Но может плохо искал, да.

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

              Ну-ну.
              • 0
                Я предпочту иметь кучу warnings при компиляции, чем ловить их в run time. И что тут не так?

                Что проверить тип в коде можно, знаю, спасибо, но вопрос был не о том.
                • 0
                  Только по тому, что вы не знаете как даже посмотреть в пайчарме список методов уже понятно, как глубоко вы его изучали.
                  • 0
                    Я вообще-то спросил как вывести popup со списком методов на тулбар.

                    И как мне его вывести таким способом?


                    Возможно где-то настройка и запрятана, но сходу не нашел.
            • +1
              Но это не так уж критично. Вот фундаментальные ограничения типа отсутствия проверки типов при компиляции раздражают куда больше.

              Это уже претензии к языку, а не к IDE, зачем всё в кучу мешать?
              Что вы хотите от интерпретируемого языка с динамической типизацией? Проверку типов? Пожалуйста: mypy, typing.
              От ошибок в рантайме тут только тесты спасают. Конечно, на этапе компиляции приятнее ловить ошибки, насколько это вообще может быть приятно, но вот, к примеру, проект на С++, в который я вовлечён, с нуля собирается за 6 часов на топовом железе. Если мне надо разработать прототип или какой-то алгоритм, естественно, я возьму Python, потому что он сэкономит мне время на разработку.

              • 0
                Так именно это я и написал выше: «мне лично питон нравится, но для небольших проектов. Когда проект разрастается, многое начинает раздражать».

                А взять ООП например, вызов метода базового класса: super(BaseClassView, self).method()
                Это же ужас. Ну кто такой синтаксис придумал? Такое ощущение что добавили как костыль «задним числом» (хотя возможно так и было).
                • 0
                  Еще к примеру, только сегодня пригодилось — чтобы сделать include файла в поддиректории, нужно туда добавить пустой файл __init__.py, иначе не сработало. Может у разработчиков языка и были причины, но после С++ выглядит крайне коряво.
                  • 0

                    А header-файлы в С++ не выглядят коряво?


                    Еще к примеру, только сегодня пригодилось — чтобы сделать include файла в поддиректории,

                    Опять же изучите инструмент прежде чем с ним работать. Почитайте про пакеты и модули и станет ясно зачем так сделано.

                    • –1
                      Мне не нужны были отдельные модули. Цель была просто разбить исходники проекта на логические части в подпапках, типа views, models и пр.

                      А в общем, я не говорю что все плохо, язык в целом нравится, но вот куча таких мелочей всплывает то тут то там.
                      • 0

                        Для разбиения проекта на логические части Python предлагает модули. И это правильно.

                        • –2
                          Что значит правильно? Я не могу разложить исходники по подпапкам в проекте если мне так удобнее и читабельнее? Извините но это бред. Класть в подпапку пустой файл — это в данном случае костыль и не более того.
                          • +1

                            Потому что в этом инит файле можна прописать, какие модули можно импортировать, а какие нельзя, что позволяет скрыть тесты в библиотеках. Никто не запрещает вам разлаживать исходники как вам хочется. Как раз в с++ с этим все коряво

                            • –1
                              Я не против возможности создания такого файла. Но требовать от юзера держать пустые файлы в проекте — это костыль. Почему если файла нет, нельзя считать его пустым по умолчанию?
                              • 0

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


                                from module import *
                    • 0
                      А header-файлы в С++ не выглядят коряво?

                      Почему, по вашему мнению, файлы, в которые выделяются объявления и интерфейсы, корявые?
                      • 0
                        объявления и интерфейсы
                        Как же другие то без них живут? Java, Go, Rust и даже Pascal.

                        Вам нравится править код в двух местах одновременно? Даже не смотря на наличие всяких утилит рефакторинга и кодогенерации в современных IDE. Вам нравятся защитные дефайны и pragma once? Вам нравятся заголовочные файлы с многоэтажными шаблонными классами? Вам нравится долгая и мучительная перекомпиляция всего этого?


                        Заголовочные файлы — это рудимент С/C++ из-за отсутствия архитектуры модулей в этих языках.

                        • 0
                          Как же другие то без них живут? Java, Go, Rust и даже Pascal

                          Есть те, что не живут. В некоторых реализациях Фортрана есть .FI файлы, в МС Бейсике опять же есть .BI для описания интерфейсов процедур во внешних библиотеках. В Java в принципе есть понятие интерфейса.

                          Вам нравится править код в двух местах одновременно?

                          В том же Паскале, если вы объявили forward процедуру, тоже придется править в двух местах. Если вы меняете описание класса, скажем, в Object Pascal, вам тоже придется править как интерфейсную, так и implementation часть. Это не нечто самое для С.

                          Вам нравятся защитные дефайны и pragma once?

                          Нет, но и не напрягает. Костыль как костыль.

                          Вам нравятся заголовочные файлы с многоэтажными шаблонными классами?

                          Шаблоны — отдельный разговор, тут заголовочные файлы, как сущность, ни при чем.
                • +1

                  В Python3 можно писать просто:


                  super().method()
              • 0

                C++ не является образцом языка с правильно сделанной типизацией.

                • 0

                  Строгой типизации ему не хватает, да. Вообще я не отношусь к почитателям и любителям C++, скорее наоборот. К сожалению, приходится писать на нём рабочие проекты, но люблю я Python. :)

                  • –1

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


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

  • –2
    Но есть другой путь!

    И тут я подумал, что автор пошел работать на стройку/в магазин/еще куда-то где платят и его настиг хэппи-энд.

    Идти в сторону php можно ведь очень долго, а программистом стать можно не только через пайтон, но даже через visual basic и excel (да-да, первый язык). Язык надо не учить, язык надо использовать для получения результата, тогда знания языка (и возможно нескольких смежных областей) появятся.

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

    В России волнуют либо связи человека, либо реальный результат, который вы можете показать (или обещаете) работодателю.
    И при чем здесь пайтон? По мне так отличный язык — его можно в школе преподавать вместо паскаля (или что там сейчас) и будет лучше. Можно и пых-пых выучить, но это не гарантирует вам работы, еще и при нежелании переезжать.
    В целом — удачи и стремления что-то сделать (даже чисто для себя, для интереса, чтобы просто друзей удивить, даже посмеяться чтобы или развлечься) — тогда все у вас получится!
  • –4
    Заголовок есть, для полноты картины не хватает только фотомодели с большими глазами в качестве иллюстрации, чтоб побольше народа привлечь.
    Python ПРЕКРАСНО подходит на роль первого языка для изучения, он простой и мощный.
    Очевидно, что УЧЕБНЫЕ инструменты не подходят для профессиональной трудовой деятельности.
    Ваш К.О.
  • –6
    Читая хабр, может появиться ложное ощущение, что всякие там js, python, ruby и прочие go ух как развиты и распространены. Однако статистика показывает, что 50% рынка программистов — это 1С. А вот что не видно из статистики и об этом молчат: что 1С — это внутренний рынок, а все остальные технологии — это на 1/2 аутсорс заграницу.
    Почему хабр создает такое ложное ощущение? Потому что 1С и php программисты работают, а все остальные — пишут статьи на хабре.
    • 0
      Хабр несколько интернационален, ничего удивительного.
    • 0
      Ну тут еще стоит отметить что 1с к сожалению очень обособленное и закрытое сообщество, которое предпочитает свои тематические ресурсы для общения. К технологиям это, увы, тоже относится, в 1с предпочитают использовать то что дают разработчики платформы, и только единицы используют что то вроде тестов или git (((
    • +1
      > Потому что 1С и php программисты работают, а все остальные — пишут статьи на хабре.
      Лихое предположение. А Вы почему на хабре комменты пишете? Тоже не работаете?
      • –2
        мой коментарий в 23:44, ваш — 11:45. И вы у меня спрашиваете?
        • +1
          Да, Вас. Где прямая связь между количеством материала и занятостью тех, кто его пишет? Или это типа очевидно? Вам самому не смешно с таких «выводов»?
          И будто это имеет значение, работал я в 11:45 или нет. Может, я в другом часовом поясе живу. Может, у меня какой-то гибкий график. Может, я в отпуске или вообще безработный студент. А может мне работодатель разрешает посидеть на хабре во время рабочего дня, в обеденное время или даже в любое, когда нет неотложных дел. Суть в том, что ни количество материала по каким-то технологиям, ни время их публикации не говорит о том, кто работает, а кто нет, ровным счетом НИ ЧЕ ГО.
        • 0

          О, ещё один живущий в единственном часовом поясе.


          Мой комментарий в 11:45 по вашему времени будет в 03:45 по моему.

    • +1
      Однако статистика показывает, что 50% рынка программистов — это 1С.


      Ссылку на это исследование и статистику — в студию.
      • +1
        Ссылка на исследование и статистика есть на сайте 1с )
        • 0
          Еще в недавней статье от hh. Там под первой табличкой https://habrahabr.ru/company/hh/blog/318450/
          • 0
            Нормас, неплохие цифры по PHP. По ощущениям JS должен быть выше, но с другой стороны hh показывает текучку по технологиям, но не использование. Но что-то около того. Любопытно, спасибо.
      • –1
        за меня уже ответили: https://habrahabr.ru/company/hh/blog/318450/
        Статистика — она такая статистика. Обсуждать рынок без учета главного игрока, у которого под 50% — это подтасовка данных.
        И кстати второе место — php. Не знаю, кто его там ненавидит последние 10 лет, эстеты какие-то наверно, но на нем просто берут и пишут. И всё больше и больше.
        А дальше — ява, она же Андроид.
        Все остальные технологии — на уровне стат.погрешности по сравнению с первой тройкой.
        • +1
          Обсуждать рынок без учета главного игрока, у которого под 50% — это подтасовка данных.
          И кстати второе место — php.

          Я вам очень умный вещь скажу, только ты не обижайся. (с)

          По вашему, эникейщик, умеющий делать батники — программист, девочка-секретарь/'экономист наловчишься писать макросы в ворде — программист, админ пишущий bash скрипты программист? Очевидно нет, как и многие 1С'ники. Дело в том, что 1С'ков в массе своей нельзя назвать занимающимися программированием, программист это человек, который может решать любые проблемы с помощью компьютера и потенциально способен сделать программный продукт под абсолютно любые требования (в смысле и вебприложение и рест микровервисы и искуственный интеллект), даже если текущий ЯП не позволяет например программировать под смартфоны, настоящему программисту нет проблемы переучится на другой язык.
          Тоже самое верстальщики или люди настраивающие шаблонные СМС под требования заказчика. Сложно говорить о том что человек программист, если он не понимает ни патернов проектирования, ни солид принципов, не помнит ни одного алгоритма, ни того как сделать например рест сервис (или обратиться к рест сервисы).

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

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

          Так же можно сказать что эникейщиков может быть в массе своей больше чем сисадминов, но это не значит, что на техническом ресурсе эникейщики должны иметь больше вес.

          А дальше — ява, она же Андроид

          Ява не только Андроид, ява это и энтерпарайз и биг.дата и крупные порталы. На данный момент, по кол-ву вакансий Ява Андроидов меньше чем не Андроидов в том числе и в России.
          • –3
            Вам и барышне ниже.

            У вас сильное заблуждение на счет 1С программистов. Им конечно не приходится каждый год изучать очередную ненужную технологию, и ООП у них нет и функциональных фишек тоже. Ничего модного.
            Однако сила 1С-ника с тех задачах, которые он решает. Начиная от средних предприятий и выше, задачи у 1С ников как на подбор книги писать. Потому что экономика, производство, законы физики и законодательво очень сложны и иногда противоречат друг другу. А оно должно работать.

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

            Кстати, о тётеньках с Экселем…
            Если понимать программирование как «процесс создания компьютерных программ.
            По известному выражению Никлауса Вирта «Программы = алгоритмы + структуры данных»» (википедия),
            то формально самый распространенный язык программирования — это формылы экселя. Там есть и алгоритмы и структуры данных. И котики.
            Нет только снобов и зазнаек в виде программистов, ничего не понимающих в предметной области.
            Кстати, одно из достижений идеи стартапов в том, что программисты массово стали задаваться вопросом «а что нормальные люди делают с компьютером». До этого они слабо это себе представляли.
            • +2

              Занимаюсь веб-программированием, и разрешаю все противоречия в "экономика, производство, законы физики и законодательство очень сложны и иногда противоречат друг другу" в рамках веб ERP/CRM систем, выгружая в 1С только итоговые бухгалтерские операции, уже разнесенные по счетам аналитического и синтетического учета. Ей остаётся только провести их по свои регистрам. Что я делаю не так? Отбираю хлеб у 1Сников?

              • –3
                Хлеб у них вы не отберете.
                Основная разница между «1С-ником» и «веб-программистом» — разная глубина внедрения в предметную область. Вы по сути тот-же 1С-ник, но на другом стеке технологий.

                Вопрос тут был в том, что почти половину рынка программистов предлагалось игнорировать по причине того, что 1С — это не программирование. И пхп — тоже почти не программирование.
    • +3
      статистика показывает, что 50% рынка программистов — это 1С

      1с — это разве программирование? Если не считать его таковым, статистика будет в норме.
      • –2
        у вас чем развить мыслЮ?
  • +1
    Получается ситуация, что можно изучить клевый язык программирования Python и остаться на улице. А можно выучить «ненавистный» php/1c и получить работу.

    Правильнее будет сказать, если учитесь с целью работать, заранее смотрите на рынок; Python не виноват. Смотрите позитивнее, изучив Python и познакомившись с C Вам легче изучить тот же PHP, уже есть понимание программирования. Если есть цель и интерес, составьте график обучения недель на 6, подготовьтесь к собеседованию, и в джуниоры. А там освоитесь и начнёте пропаганду Python.

  • 0
    На php/1C действительно много где берут практически ничего не знающих людей, в основном из-за дешевизны и низкого порога вхождения.
    На основе своего опыта могу сказать что план должен быть такой:
    — иметь самописный проект (а лучше несколько) на нужном языке в открытом доступе (github), идеально если запущен и работает, но не обязательно
    — проект должен содержать хоть какую-то сложность и включать большинство реально используемых технологий (бд/очереди/кеш/отправка писем/js фреймворк/css фреймворк и т.д.)
    — нужно уметь привести из практики примеры спроектированных решений
    — придется согласиться работать за еду скорее всего (если повезет то только на испытательный срок)
    — уже после ~полугода работы вы наберете достаточно опыта чтобы потребовать/найти более приятные условия работы
  • 0
    Мне кажется, что первым языком программирования, для русскоязычного человека, должен быть русский язык. Для начала, нужно научиться думать алгоритмически. Научиться мыслить от общего к деталям и наоборот. Научиться предвидению невероятного, сосредоточенности и аккуратности мышления.
    Язык программирования — это просто инструмент, который служит для того, чтобы объяснить свои мысли компьютеру.
    Если у программиста нет четкого понимания и стройности мышления, никакой язык программирования не поможет.
    «Бардак невозможно автоматизировать».
    Несомненно, есть языки программирования, на которых проще выполнять одни задачи и сложнее другие. Каждый язык имеет свой «вкус», и каждый язык требует свою «приправу».

    Я начинал с Си, я люблю Си, он мне приятен. Я писал на Паскале, на Бейсике, на С++, на JavaScript, Rexx, Bash и еще несколько shell scripts и языков, все они вкусны с правильной приправой.
    Вкус Питона мне тоже очень нравится. К нему подходит множество приправ: «Linux shell» и «Web development», «Database programming» etc.

    С уверенностью могу сказать, что каким бы по счету Питон не был для автора, лишним он точно не будет. Конечно, если автор будет заниматься программированием.
    • 0
      Если у программиста нет четкого понимания и стройности мышления, никакой язык программирования не поможет.
      «Бардак невозможно автоматизировать»

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

      P\S: Вкусы, приправы. Какое образное у вас мышление.
      • 0
        Если бы изучение языка программирования занимало время, хотя бы, как загрузка программы с перфоленты :-), то можно было бы изучать их, по параметру «восстребованности». Но, как правило, между изучением первого языка и свободным его владением проходит от года до двух.
        Я изучил Питон для решения определенного круга задач, о Питоне тогда много говорили на Хабре, и еще потому что он мне понравился. Потом оказалось, что Питон подходит для решения и некоторых других моих задач.
        Я стараюсь выбирать инструмент для работы, а не работу под инструмент. Еще есть способ все клепать на том, чем владеют работнички :-) Так появляется «Расчет зароботной платы» на Лиспе.
        А Лисп очень горький (для меня). Не осилил.
        • 0
          Лисп не пробовал.
          А вот Prolog приходилось мучить в институте.
          Вот где жесткая головоломка. :)
    • 0
      Мне кажется, что первым языком программирования, для русскоязычного человека, должен быть русский язык.

      Хах, вспомнил как мы в школе РАЯ учили..

  • 0
    Ну когда вы видите, что вдруг как из неоткуда появился новая крутейшая технология/фреймворк/язык программирования (нужное подчеркнуть), и информация об этом льется как из ведра, то надо понимать, что идет обычная раскрутка.

    Собственно программирования тут ничем не отличается от любого другого вида маркетинга, например от раскрутки нового фильма.

    А уж является ли действительно эта крутейшая новая технология действительно крутейшей, и какие у неё перспективы, надо смотреть и думать своей головой.

    Вполне обычное дело, что через пару лет на смену одному «крутом» фреймворку придет другой «крутой». А об первом и забудут.

    Собственно этим например и объясняется весь тот зоопарк технологий, что приходится изучать например в web-разработке
  • –4
    Все правильно автор описал, было ощущение что не все с питоном так гладко, как говорят евангелисты, по мне так python очень странный язык, для админов, кто не осилил perl и для программистов, кто не осилил java.
  • +1
    Про удаленку странно. Ни разу еще не работал в офисе.
    • 0
      И самая первая работа была сразу удалённой?
  • +3
    Ничего не мешает работать удалённо. Хоть на компанию, хоть фриланс, хоть upwork и т.д. Кто ищет, тот всегда найдёт.

    Если хочется выучить тот же php/1C и устроиться в своём регионе — то и зарплаты там обычно очень низкие.
    • 0
      Кстати, по поводу Python и работы, есть отличное видео с Moscow Django Meetup «Ваши собеседования — отстой»: https://www.youtube.com/watch?v=TzfqgKVg8wE

      P.S.: Попробуйте, может этим ребятам ещё требуются люди. Но их подход, очень меня впечатлил.
  • 0
    Всегда в жизни есть элемент случайности.
    Немножко удачи не помешает.
    Может быть подвернется проект или ситуация у работодателя сложится удачно.
    У меня был прецедент, когда мне говорили, закрывай вакансию или мы ее отберем, больно вы привередливы.
    Взял первого пришедшего после этого студента. Хороший паренек оказался :)
    Всем рулит случай и вероятности.
    Мы просто увеличиваем или уменьшаем вероятность.
    Изучая востребованный на рынке язык увеличиваешь вероятность трудоустроится.
    — P\S: 1С тут как некое антипрограммисткое направление почему то считается.
    Но что мешает, обладая ясным мышлением, делать красивые программы в 1С?
    Потрать автор 2 года на 1С, думаю был бы трудоустроен. А обладая денежным генератором, далее мог заниматься другими «классными» языками. А когда голоден, как то концепции «правильных» языков плохо впитываются.
    • 0
      Кстати да, я так поступил и не сильно жалею) В свое время был выбор либо возвращаться в деревню после вуза, либо устроиться на 1с писать (благо повезло, взяли на первом же в жизни собеседовании). Сейчас, спустя 2 года, понял что этого мне мало, собираюсь окончательно определиться что мне более интересно в программировании и готовиться к переходу туда. Пусть даже и в зп потеряю что то, но благодаря 1с есть возможность скопить денег на какой то период времени пока получать заметно меньше буду.
    • +1

      Среди всех знакомых 1С-разработчиков я наблюдал довольно печальное непонимание необходимости чёткого процесса разработки, автоматизации тестирования, контроля версий, документирования, аккуратной обработки ошибок и вменяемого управления требованиями.
      Эти люди с одной стороны отлично понимают нужды бизнеса, но с другой стороны из-за его сиюминутных нужд часто пренебрегают качеством и процессом.
      Когда в такую систему приходит начинающий, он привыкает и считает, что так и надо, а потом при смене области деятельности на него внезапно сваливается пресс из git/Unit tests/Integration tests/apidoc/CI/Jira/Agile и прочих страшных слов без которых я не представляю современную разработку ПО.

      • 0
        Ну, я пытаюсь начальство пинать по поводу начала использования git, тестов, CI и т.п. Скидываю ссылки на записи вебинаров, в т.ч. от 1сников по данным темам, открытым текстом говорю что все печально с постановкой и управлением задачами, но начальство считает что это все лишнее, хотя проекты на тысячи человекочасов для нас норма, и явно видны дыры которые данными практиками закрываются. Но все это бесполезно, начальство требует обосновывать каждый человекочас трудозатрат из доступных, и любое подобное предложение воспринимает в штыки, да и кто будет слушать человека с парой лет опыта в 1с, и без опыта во всем остальном, в т.ч. выше перечисленном.
      • +1
        Могу объяснить из-за чего это.
        «необходимости чёткого процесса разработки, автоматизации тестирования, контроля версий, документирования, аккуратной обработки ошибок и вменяемого управления требованиями».

        Все это есть у каждого из нашего отдела 1С (32 человека). Главная проблема, если все делать «по-правильному», то время выполнения любой задачи вырастит, как минимум, в 2 раза. В бизнесе — все происходит мгновенно. Нет времени, что-то тестировать, отлаживать, писать документацию и т.д. Нужно пробовать. Бизнес запускает новое направление, если мы в течении того времени, которое выделено для решения организаторских моментов, не внедрим программную поддержку этого направления — произойдет эпик фейл и собственникам будет абсолютно фиолетово про тесты, CI, документацию. Они будут терять деньги. Из моей практики, за неделю запускается новое направление бизнеса, группой в 3 каски запиливаем сложнейший бизнес-процесс, «рисуем» удобный для пользователей интерфейс. В последний день перед запуском, начинаем прогонять цепочку в боевом режиме — и привет. У руководство приходит понимание, что все должно быть по другому организовано, появились другие требования к процессам. Сам бизнес поменялся за эту неделю. Направление запускается, а мы на ходу переделываем архитектуру. После стабилизации — обычно через 2 недели, начинается отдача технологического долга.

        По базе 1С с которой работаем — 15 Тб, MSSQL, 1600+ активных пользователей, в пике до 2500.

        ЗЫ. Кроме 1С, для нужд компании пишу на C#, python, Golang, asm. Инструмент выбирается под конкретные задачи. Другие пишут под Android, MacOS/iOS. Вот такие мы — программисты 1С =)
        • 0

          А вам не приходило в голову, почему вообще появились тесты, continuous integration и тд.? Это все реализовано для удобства нормального бизнеса, где понимают что надежность ПО может сэкономить очень много денег в перспективе. А у вас не знаю что за бизнес такой. Если 1с-ники не залаживают тесты и разработку архитектуры в оценку — то это проблема 1с-ков, которые не доносят важность стабильного ПО до заказчика

          • 0
            Собственно выше написали уже:
            Главная проблема, если все делать «по-правильному», то время выполнения любой задачи вырастит, как минимум, в 2 раза.

            Я не 1С программист (для понимания).
            Но, был у меня недавний случай.
            Программист клиентской части (в банке происходит событие), при доработке очередной фичи, в процессе чаепития озвучил, какое все шлак, нужно переписать модуль «по правильному», что если перепишем, такие фичи будет запиливать за один день, а не за 3, очевидная экономия и странно, что начальство этого не видит.
            Пьем чай, настроение хорошее, говорю, давай друг, посчитаем.
            Посмотрел в контроль версий.
            Доработка данного модуля возникала исторически, раз в год, примерно.
            Посчитали затраты текущие, затраты на переписывание модуля.
            Получилось, переработать модуль стоило около 500 тыс. рублей (стоимость работы программиста клиентщика, программиста базовика, тестировщика, развертывание).
            И при текущей потребности в доработках данного модуля (исходя из статистики прошлых лет), срок окупаемости (с учетом ускорения будущих доработок) около 20 лет.
            Собственно вопрос на этом закрылся :)
            • 0

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

          • 0
            то это проблема 1с-ков, которые не доносят важность стабильного ПО до заказчика

            Это не задача программистов доносить важность стабильного ПО до заказчика. Задача программистов в подобных случаях дать две оценки: "чтоб работало — N единиц времени", "чтоб работало и было правильно — 2N", а задача заказчика решить, что важнее.

        • 0

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


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


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

  • 0
    Да, первым языком лучше Pascal.
  • 0

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

  • 0
    Для меня python не первый язык, но, пожалуй, самый приятный. Согласен, вакансий немного. Посмотрите на js, php, java (касаемо веба). Понравится — учите и устраивайтесь, коль в Вашем регионе это востребовано, на знания для джуна хватит пары месяцев. Но лично я бы не стал давится и учить, к примеру, 1С только ради работы. Если Вы знаете, умеете, а главное, Вам нравится — задачи найдутся. Ну, выше все расписали: удаленка, переезд… Можете попытаться кое-где протолкнуть вместо того же php, если шарите реально.
  • 0
    -Потратив в общей массе 2 года на изучение
    -Открыв вакансии на ЯзыкПрограммирования№1 в общем поисковике, я обнаружил следующие тенденции
    -Сейчас иду в сторону ЯзыкПрограммирования№2, так как на нем банально есть работа

    Проблемма не в ЯзыкеПрограммирования№1, а в неправильной последовательности действий.
    Вообще в этой профессии то что «клево» и на чем «банально есть работа» очень часто не совпадает, особенно если Вы не готовы переезжать.
    • 0
      В том то и дело, что на том же тостере, когда обычно идут вопросы по типу: php vs python, python vs 1C итд -все говорят, что иди учи питон, он крутой и все дела. В итоге и получается ложное представление, что в итоге нужно человеку.
      • +2
        Ну у людей с тостера другой рынок труда в городе и другие требования к зп может быть.
        В среднем по больнице(тренды на хабре, индекс tiobe и т.д.), Python популярный, а в Вашем регионе ситуация другая.

        Я был в такой же ситуации, только в моем случае язык№1 была Java, а язык№2 — C#. А теперь я переехал в другой регион и ситуация поменялась.

        Пару советов, которые я хотел бы сам услышать, когда начал искать работу:
        — Если Вам нужно найти работу, то нужно ходить по собеседованиям, а не ждать пока Вы вырастите до тех требований что накидал в описание вакансии ничего в этом не понимающий HR.
        — Не бойтесь, что Вас завалят на техническом интервью, т.к. Вас завалят много раз. Расслабьтесь и получайте удовольствие опыт прохождения интервью.
        — В половине тех мест где написано, что требуется опыт 5+ лет, не спросят даже про прошлые проекты.
        — Про опыт можно, а иногда нужно врать.
        — Вас могут взять на работу без интервью просто потому что есть вакансии где Вас некому интервьюировать.
      • 0
        Обычно на тостере не спрашивают язык для первой работы.
    • 0
      Все хорошо, автор познал значение «преждевременной оптимизации» в программировании — ценный и необходимый навык.
  • +3
    Ща запилю.
    Почему не нужно осваивать первым инструментом совковую лопату.
    Если вы будете искать ответ на вопрос «какой инструмент освоить первым», то в 90% случаев вам предложат совковую лопату — как наиболее простую в освоении. И вот тут начинается проблема…
    О себе
    Еще в детском саду я понял, что моя песочница не такая уж и радужная, и, наслушавшись историй, как брат находит много интересного на свалке около гаражей, я также решил пойти работать в ЖЭК.
    Изначально это была уборка территории и вывоз мусора, Потом я занялся сбором стеклотары и в один момент наткнулся на задворки музея при вино-водочном, после чего решил стать полноценным алкоголиком. В коньяках я особо не разбирался, поэтому остановился на беленькой.

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

    Прошу не судить строго мой полет фантазии. Это не злая ирония и почти не сарказм. Да и не осилил так перевести всю статью, но если публика сочтет тему интересной, то создам репозиторий в битбакете и приглашу всех на краудсорсинг по написанию сего опуса.
    Готов сформировать неформальное ТЗ и заготовку глоссария для обсуждения и развития.
    Подумываю насчет битбакета, но если народ знает более подходящую площадку — предлагайте.

    Это я к чему… Говорят, что самая лучшая работа — это высокооплачиваемое хобби. Я с этим полностью согласен. Работа должна быть в первую очередь интересной, а всё остальное компромиссы. А ещё, настоящий профессионал и ценитель своего дела найдёт свой особенный интерес в решении любой профильной задачи.
  • +2
    Не знаю, я на бэкэнд несколько месяцев выискивал чисто питониста. Других языков знать не требовалось.
    Да, нужен был опыт хотя бы 1 год, увы, тратить время на обучение совсем с нуля не всегда можно позволить.
    Еще мне нужно было знание linux хотя бы на уровне общего понимания — как процессы работают, как файлы пишутся, как память выделяется. Без глубины, самая база.
    Нашел с большим трудом. Приходили всякие — и с опытом 8 лет, и с опытом 1 год… И много слов умных в резюме добавили, но не могли толком объяснить, что они означают. Я сам кода почти не пишу, но на моих элементарных вопросах по первым главам штатной документации на питон «плавали» все. Про linux вообще молчу.
    Зато вынь-да-полож «от 90 тыр» (junior'ы ныне такие).

    Так что с другой стороны баррикад, поверьте, тоже не ясно небо.
    СПб.
  • +1
    Та же фигня. Начинал изучать Python и Django, не смог этим зарабатывать, ушёл в PHP. Не Москва, провинция.
  • 0
    Сам Python как язык для вхождения в программирование очень неплох, поэтому всё-таки его можно учить первым. Просто надо понимать, что этого недостаточно и осознавать перспективы работать с этим языком как основным.
  • +3

    Если гора не идет к Магомеду… Приходите к нам на собеседование, мы не из столицы и берем на удаленку без опыта в трудовой. Главное чтобы голова была и работала)))

  • +1

    Моим первым языком был Spectrum BASIC. По нему вакансий как не было, так и не будет. :) Но это автоматически не делает его плохим языком для обучения программированию.

  • 0

    И правда, никогда не задумывался о