Если вы будете искать ответ на вопрос: «Какой язык программирования выбрать первым», то где-то в 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 почти такая же ситуация. Но тут я уже говорить с уверенностью не могу.
Поделиться с друзьями
-->

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


  1. tmnhy
    21.02.2017 14:45
    +65

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

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

    По заголовку я ожидал увидеть что-то касающееся ЯП, а не историю «успеха/не успеха»…


    1. hatman
      21.02.2017 14:59
      +1

      Поправил заголовок, чтобы не было разногласий. Благодарю за фидбек.


      1. tmnhy
        21.02.2017 15:05
        +4

        Пожалуйста. Только, кмк, питон уж совсем здесь не причём. Замените его на любой другой ЯП, ситуация будет похожая. Всем нужен опыт, 3+ года стажа. Всем нужны «комбайнеры», тем более на web.


        1. fireSparrow
          21.02.2017 15:07
          +13

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


          1. eihwaz07
            22.02.2017 08:43
            +2

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


            1. fireSparrow
              22.02.2017 09:07
              +1

              Да я тоже в программирование пошёл ради интереса :)
              До этого шесть лет работал в техподдержке/администрировании, в свободное время писал кое-что ради интереса на JS, PHP, VBA и по мелочам ещё на паре языков. Но всерьёз решил связать свою жизнь с программированием только после того, как познакомился с Питоном, и понял, что мне невероятно нравится этот язык.

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


              1. 0xd34df00d
                22.02.2017 20:11
                +2

                и понял, что мне невероятно нравится этот язык.

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


                1. fireSparrow
                  22.02.2017 20:16

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


                  1. 0xd34df00d
                    22.02.2017 20:28

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


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


                    1. fireSparrow
                      22.02.2017 20:33

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


                      1. 0xd34df00d
                        22.02.2017 22:05

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


                        1. Source
                          23.02.2017 01:55
                          +1

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


                          1. 0xd34df00d
                            23.02.2017 02:07
                            +2

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


                            1. Source
                              23.02.2017 13:52

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


                          1. romanegunkov
                            23.02.2017 09:27

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


                            1. Source
                              23.02.2017 13:39
                              +1

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


            1. Neikist
              22.02.2017 09:34

              Ну допустим у меня был выбор срочно устраиваться в 1с ибо есть вакансии, или хз сколько времени жить на улице и питаться святым духом (альтернатива — работа не связанная с IT). И вполне здраво в таком случае ориентироваться на первый язык именно по наличию вакансий.


      1. breakoffbrain
        22.02.2017 12:42
        +1

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


  1. basili4
    21.02.2017 14:53
    +8

    Чет мне подсказывает. Что Вы когда собеседываетесь на вакансию на удаленку либо не показываете вообще никаких знаний о языке. Либо указываете заплатанные ожидания не меньше чем у тех дира.
    Иначе я ваши проблемы понять не могу. Толпы веб студий лепят сайтики на джанге.
    Джанга это почти также хорошо для веб студии как своя CMS (клиент так просто не уйдет.)


  1. fireSparrow
    21.02.2017 14:57
    +26

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

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

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


    1. tmnhy
      21.02.2017 14:59
      -3

      Разве, «не все уже перехали» на node.js?


      1. fireSparrow
        21.02.2017 15:05
        +2

        Честно говоря, про то как обстоят дела с node.js, я мало что знаю — в моём кругу общения нет людей, которые на ней разрабатывают. И в тех информационных источниках, которые я читаю регулярно, она редко упоминается.
        Но PHP пока ещё вполне востребовано, даже если node.js и конкурирует с ним.


      1. LeoKudrik
        21.02.2017 15:54
        +4

        А что, разве есть такая тенденция? Все и на ноду?


        1. setevoy4
          23.02.2017 03:54

          Да. Как раз в таком проекте работаю. Все клиенты, новые приложения им — всё на «этих ваших нодах».
          Конкретно сейчас делаю инфрастуктуру одного неменцкого производителя алкогольной продукции — всё на Ноде. Ну и всякие реакты и иже с ними. Честно — не особо в их код лажу, кроме `npm install` и `npm run` — ничего не и не использую. Ну и `vim package.json`, когда начинаются танцы с зависимосятми :-)
          Честно говоря, с точки зрения девопс-инженера — с нодой чрезвычайно приятно иметь дело в плане простоты сборки и деплоя.


      1. kernel72
        21.02.2017 16:03
        +2

        По востребованности, ситуация скорее всего такая же как с питоном. В Москве, Питере найти работу можно, в остальных регионах сложнее.


        1. faiwer
          21.02.2017 18:26
          +1

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


      1. faiwer
        21.02.2017 18:24
        +4

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


        1. tmnhy
          21.02.2017 18:42

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

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

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


          1. faiwer
            21.02.2017 18:54
            +4

            И опять же «react- angular-» позволяют вообще обойтись без бэка, начиная с роутинга на стороне клиента.

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


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


            1. tmnhy
              21.02.2017 19:04

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

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


              1. faiwer
                21.02.2017 19:26
                +11

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


                1. tmnhy
                  21.02.2017 19:47
                  -5

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

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

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

                  Даже, если отойти от web, этот вопрос также актуален. Такие тренды.


                  1. s-kozlov
                    22.02.2017 07:51
                    +6

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


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

                    Такие тренды


                    Какие тренды могут заставить вменяемого разработчика использовать не подходящие под проект технологии?


                    1. jodaka
                      22.02.2017 10:10

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


                      1. s-kozlov
                        22.02.2017 11:23
                        +1

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


                        1. terryP
                          22.02.2017 13:52
                          +1

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

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


                          1. s-kozlov
                            22.02.2017 15:16

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


                            1. terryP
                              22.02.2017 15:41
                              +1

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

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

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


                              1. Source
                                23.02.2017 02:03
                                +1

                                А если нет соответствующих проектов у твоего работодателя/в твоем городе?

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


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

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


                                1. VolCh
                                  23.02.2017 08:45

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


                                  1. Source
                                    23.02.2017 14:45
                                    +1

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

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


                                1. terryP
                                  23.02.2017 11:49

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

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

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

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

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


                                  1. Source
                                    23.02.2017 14:54

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

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


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

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


                              1. s-kozlov
                                26.02.2017 18:32

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

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


                                1. VolCh
                                  27.02.2017 07:27

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


                                  1. s-kozlov
                                    27.02.2017 10:20

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


                                    1. VolCh
                                      27.02.2017 10:50

                                      У меня на гитхабе есть проекты, которые я пилю в свободное время, с использованием технологий «не с работы».

                                      Не делает


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

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


                                      1. s-kozlov
                                        27.02.2017 12:00

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


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

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


                                        1. VolCh
                                          27.02.2017 12:13

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


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


                                          1. s-kozlov
                                            27.02.2017 16:03
                                            +2

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


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


                                            1. VolCh
                                              27.02.2017 16:39
                                              -1

                                              рассчитывать только на работодателей в плане саморазвития — как-то не то.

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


  1. Akon32
    21.02.2017 14:58
    +16

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

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


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


  1. q1x
    21.02.2017 14:58

    Печальная ситуация, но и вы и ваш знакомый — правы!


  1. time2rfc
    21.02.2017 15:02

    *СПб


    1. hatman
      21.02.2017 15:10

      Благодарю.


  1. SpyDeX
    21.02.2017 15:10
    +6

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


    1. Neikist
      21.02.2017 15:28
      +5

      А как же знание инфраструктурного софта? (работа с субд, веб серверами, ос (например человек из мира микроконтроллеров в веб переходит)), библиотеки и фреймворки специфичные для данного языка (не тот объем кода, тонкости использования которого можно понять за пару месяцев), специфичные для данного языка/платформы архитектурные паттерны и принципы построения кода?


      1. SpyDeX
        21.02.2017 15:38
        +8

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


        1. Neikist
          21.02.2017 15:49
          +5

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


          1. SpyDeX
            21.02.2017 16:47

            Не получится работать без фреймворков? наверно да.
            А получить работу без фреймворков наверно всё-таки можно.

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

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


            1. Neikist
              21.02.2017 17:36
              +1

              Не получится работать без фреймворков? наверно да.

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


        1. VMichael
          21.02.2017 16:02
          +6

          Без знания алгоритмов, вам знание набора функций фреймворка поможет мало

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


          1. SpyDeX
            21.02.2017 16:40
            +2

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


            1. cjbars
              21.02.2017 18:11
              +4

              Классная фраза — «Натянуть фреймворк на джуна». Записал себе, спасибо :-)


            1. alek0585
              26.02.2017 14:18

              Я так и не понял из ваших слов какие алгоритмы надо-то? Если за полтора десятилетия не получается вспомнить примеры…

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

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

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

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

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


          1. poxvuibr
            21.02.2017 18:04
            +2

            А не подскажете, на жизненном примере, без знания каких (или даже какого) алгоритма, фреймворки мало помогут?

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


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


            1. VMichael
              21.02.2017 20:41
              +2

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


              1. s-kozlov
                22.02.2017 07:55

                В реальности разницу в скорости массива и списка можно потестить за небольшое время.
                Моно погуглить в конце концов.


                Напомнило: «Окей гугл, как пересадить сердце?»


            1. 0xd34df00d
              22.02.2017 20:13
              +3

              Вот, например, разница в скорости при работе с массивом и связным списком.

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


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

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


              1. poxvuibr
                27.02.2017 15:03
                +1

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

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


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

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


          1. vanxant
            22.02.2017 03:14
            +1

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


            1. asm0dey
              22.02.2017 09:19
              +2

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


              1. Igelko
                22.02.2017 10:02
                +1

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


              1. vanxant
                22.02.2017 10:08
                +1

                ORM-ы тут вообще не при чём. Есть два множества объектов (массива, коллекции, чего угодно), А и В, некоторые из объектов А имеет какое-то отношение к некоторым объектам из В. Нужно по заданным объектам из А выбрать те из связанных с ними В, которые удовлетворяют неким условиях. Или найти все А, для которых связанные В удовлетворяют тому-то и тому-то. Таких задач по 10 штук на дню в любой сфере.
                Например, «программисты» (множество А) делятся на три категории (множество В). Первые не знают джойны, считают, что орм за них всё сделает, и постоянно изобретают неработающие велосипеды. Вторые считают, что знают джойны, но объяснить за 1 минуту по факту не могут, начинают бе-ме, а на работе постоянно изобретают неработающие велосипеды. И третьи знают джойны, велосипеды не изобретают и могут нарисовать примерно такую картинку:

                тымц
                image


                1. Siemargl
                  22.02.2017 10:14

                  Можно знать теорию множеств и не знать что такое «JOIN» (такого понятия в ней не существует). Работе это не помешает.


                  1. vanxant
                    22.02.2017 10:25

                    Ну положим это реляционная алгебра, а не теория множеств


                1. Areso
                  22.02.2017 10:28
                  -1

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


                  1. vanxant
                    22.02.2017 11:01

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


                    1. VMichael
                      22.02.2017 21:30
                      +1

                      Программист любого уровня может встретить задачу, которую он ранее не решал.
                      И, соответственно, он будет изобретать велосипед.
                      Фундамент программиста, понятие весьма размытое, на самом деле.
                      Если брать аналогии со строительством, подавляющее большинство строителей частных домов используют какой нибудь ленточный фундамент и строят всю жизнь.
                      Конечно, они не построят бункер или мега высотку.
                      Но… оно им и не нужно, просто такой работы нет.
                      Конечно, нужно стремиться к недостижимому идеалу. Вопрос, сколько ресурсов будет на это затрачено и окупиться ли, в конечном итоге.
                      Я бы все таки не стал начинающего программиста посылать изучать академические фундаментальные вещи. По простой причине. Возможно программирование это вообще не его сфера. И он покинет ее через время.
                      А вот поработав, если это его, он поймет, чего ему не хватает, интуитивно и станет изучать нужные ему темы.
                      Если смотреть шире, я бы вообще, сначала посылал молодых людей не в институты, а поработать на разных работах, а когда они осознают себя и свое призвание, дальше уже учиться :)


          1. nightwolf_du
            22.02.2017 20:13

            Из недавнего.
            Есть коллекция непересекающихся периодов времени с пропусками
            <date1, date2> <пропуск> <date1, date2>…
            и коллекция фактов, случайно распределенных по датам, включая пропуски в коллекции 1
            Порядок количества периодов времени — от едениц до сотен.
            Порядок количества фактов — от едениц до сотен тысяч.
            Лежат в разных базах, join на стороне базы недопустим.
            Задача — разложить факты по периодам по условию date3 >= date1 && date3 < date2+ interval '1 day'.
            Всё это нужно сделать примерно 100<n <2000 с разными коллекциями 1 и 2.
            Наивное и лучшее решение различаются по времени на 1-2 порядка.


            1. VMichael
              22.02.2017 21:24
              +1

              Если без лукавства, как будут делать подавляющее большинство программистов?
              Так: «Ага, знаю вот я такой то алгоритм, лучше его применить, будет по времени быстрее»?
              А вот и нет.
              Сделают в лоб. Посмотрят время выполнения. Если устраивает, то так тому и быть.
              Если не устраивает, будут думать, гуглить, изобретать велосипед, все в меру своего таланта.
              И это не означает, что это плохие программисты.
              Повторюсь, компаний, работающих на пике ИТ сложности (Гугл, там, Яндекс, Касперский… не знаю, еще кто то) мало. И нет такого широкого рынка для знающих мега алгоритмы.
              И огромные массы людей работают в разработке бизнес приложений, для которых то, что я описал выше это самый рациональный путь с точки зрения затрат ресурса программиста.


              1. poxvuibr
                23.02.2017 13:59
                +1

                Если без лукавства, как будут делать подавляющее большинство программистов?
                Так: «Ага, знаю вот я такой то алгоритм, лучше его применить, будет по времени быстрее»?
                А вот и нет.
                Сделают в лоб. Посмотрят время выполнения. Если устраивает, то так тому и быть.

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


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


                1. gimntut
                  28.02.2017 15:43

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


                  1. poxvuibr
                    28.02.2017 17:28

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

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


            1. VolCh
              23.02.2017 08:48

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


    1. Wedmer
      21.02.2017 15:35
      +1

      Не только синтаксис) Как минимум встроенные функции и стандартную библиотеку.


      1. SpyDeX
        21.02.2017 15:49

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


    1. ivkomn
      21.02.2017 15:43
      +1

      В институте основы алгоритмизации преподавали на примере асемблера 16бит… дисциплинирует :)


    1. sshikov
      21.02.2017 19:41

      Ну, на самом деле все имеет значение, конечно.

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

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


      1. ivkomn
        22.02.2017 10:36

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

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

        Хотя, талантливые люди талантливы во всём, бездарности выбирают что-то одно :)


        1. sshikov
          22.02.2017 11:12

          Ну в общем да. Если изучать что-то в качестве хобби — то все немного иначе, чем если вы на этом уже зарабатываете.


  1. GaroRobe
    21.02.2017 15:31
    +4

    Добро пожаловать в Россию. Хотите разрабатывать не на 1С — езжайте в столицы.


    1. TheKnight
      22.02.2017 08:08

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


      1. Areso
        22.02.2017 10:30
        +1

        И тут Волгоград, Самара, НиНо и даже Казань резко задумались, насчет такого утверждения, что именно Саратов — столица Поволжья)


  1. i360u
    21.02.2017 15:36
    +7

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


    1. sefus
      21.02.2017 16:09
      +6

      Хед хантер, Воронеж. 2 вакансии для мидла на миллион жителей. 0 — для джуниора. Особо не старался даже.


      1. s-kozlov
        22.02.2017 07:59

        Миллион миллиону рознь. Угадайте, где больше программерских вакансий: в Новосибирском Академгородке со 130 тыс. жителей или в остальном полуторамиллионном Новосибирске?


      1. i360u
        22.02.2017 13:47

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


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


        1. Neikist
          22.02.2017 14:59
          +1

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


          1. i360u
            22.02.2017 19:08
            +1

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


        1. s-kozlov
          22.02.2017 15:19
          +1

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


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


          1. i360u
            22.02.2017 19:06

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


  1. kozzztik
    21.02.2017 15:46
    +12

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


    1. timkip
      22.02.2017 21:36

      За два года рынок вакансий может несколько измениться


  1. ScreamTV5
    21.02.2017 15:49
    -3

    Я не начинающий программист и полностью полностью согласен с вашим мнением.


  1. Tiendil
    21.02.2017 16:07
    +13

    Epic fail.

    Но при чём тут питон? :-D


    1. hatman
      21.02.2017 16:12

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

      Чтобы у людей не было иллюзий =)


      1. MacIn
        21.02.2017 23:00
        +5

        большое число людей советуют учить первым языком Python.

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


      1. Crandel
        22.02.2017 00:33
        +1

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


        1. TheKnight
          22.02.2017 08:09

          Дык в этом то и проблема, что люди спрашивают для работы.


          1. Tiendil
            22.02.2017 10:18
            +1

            Люди обычно не говорят, для чего спрашивают.

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


          1. Crandel
            22.02.2017 11:02
            +1

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


          1. i360u
            22.02.2017 13:49

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


            1. VolCh
              23.02.2017 09:02

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


        1. 0xd34df00d
          22.02.2017 20:27
          -1

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


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

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

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

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

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


          1. Crandel
            22.02.2017 21:50
            -1

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


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

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


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


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


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


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


            1. 0xd34df00d
              23.02.2017 00:08

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


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

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


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

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


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

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


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

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


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

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

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


              1. Crandel
                23.02.2017 00:19
                -1

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

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


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

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


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

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

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


                1. 0xd34df00d
                  23.02.2017 00:28

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

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


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

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


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

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


                  Haskell

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


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

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


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

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


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


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


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

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


                  1. Crandel
                    23.02.2017 00:42

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

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


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

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


                    True is 1

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


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

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


                    1. 0xd34df00d
                      23.02.2017 02:10

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

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


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

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


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


                      1. Crandel
                        23.02.2017 10:17

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

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


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


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


                        1. MacIn
                          23.02.2017 15:04
                          +2

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

                          Мммм запахло старым добрым С.


                        1. 0xd34df00d
                          23.02.2017 19:22
                          +1

                          Прям в с++ все продумано и логично — с трудом верится.

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


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

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


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

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


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

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


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

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


                          1. Igelko
                            28.02.2017 11:36

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

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


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

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


          1. Igelko
            28.02.2017 11:28

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


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


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


  1. Ivan_83
    21.02.2017 16:13

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

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

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

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

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


  1. Pentblch
    21.02.2017 16:22

    Python конечно в данном случае не причем, но то что вакансий на нем меньше чем PHP это факт.
    И да, вакансии нужно анализировать до того как начал изучать что то (если хочешь именно работать с этим).


    1. hatman
      21.02.2017 16:29

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


      1. Pentblch
        21.02.2017 16:52

        С этим согласен, но не совсем.
        Даже если пробежаться по моим соседним регионам, то найду по 10-20 вакансий на python, 2 их которых будут на junior позицию (смотрел Ростов и Краснодар), но да, вакансии в основном в областных центрах, а php и в более мелких городах можно найти.

        И все это не проблема Python-а, а уж тем более пайтона как первого языка (т.е. заголовок считаю совершенно не описывающим сути статьи).
        Да, если учить сразу php/1c, то действительно легче найти работу, но рекомендовать их как «первый» я бы не стал.


        1. GaroRobe
          21.02.2017 17:02

          Ростов и Краснодар это показательно. А давайте по Хабаровскому краю и ЕАО попробуем?


          1. Pentblch
            21.02.2017 17:15

            Ну пробовать я не буду, догадываюсь раз вы это пишите то там не много предложений для python разработчика, а подскажите, вакансий для php/1c сколько?
            Но опять же, о чем это говорит?
            О том что python плохой или что у бизнес о нем не знает (является ли это проблемой самого языка, не берусь судить)?


        1. Neikist
          21.02.2017 17:39
          +1

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


  1. Nakosika
    21.02.2017 16:29

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


  1. http3
    21.02.2017 16:51
    +1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


  1. Mugik
    21.02.2017 17:17
    +1

    Ой, что-то мне подсказывает, что не знаете вы Питон. Думаете, что знаете, но нет.

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

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

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

    Но есть вероятность, что дело обстоит несколько не так.


    1. Neikist
      21.02.2017 17:42
      +2

      Как я понял — автор не об этом, а о том что как раз с вакансиями на python начального уровня все печально. Был бы он гуру — он бы не грустил по поводу отсутствия вакансий на junior)


      1. Mugik
        21.02.2017 17:47

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

        Только идиот на месте руководства не возьмёт способного парня с 2 годами самообучения. Ему же и платить много не надо, если провинция, то 30 тысяч и нормально. Нормальный опытный питонист меньше чем за 100 из дома не выйдет в Питере и уже тем более в Москве.


        1. Neikist
          21.02.2017 18:20

          Все же 2 года самообучения совместно с работой не связанной с программированием(как я понял) и два года работы полноценной — вещи разные.


  1. Begetan
    21.02.2017 17:21
    -3

    Трудный заход у автора на Хабрахабр, но видно что наболело! За старания — плюс, но в следующий раз лучше не поднимать холиварных тем.


  1. AdminLP
    21.02.2017 17:49
    +2

    С Ruby ситуация еще плачевней


    1. basili4
      21.02.2017 18:54
      -1

      Руби #нинужен


    1. Source
      22.02.2017 01:51
      +1

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


  1. JTG
    21.02.2017 18:01
    +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%» – нет, просто не отвлекаемся на дурную работу.


    1. basili4
      21.02.2017 18:21
      +3

      на пхп ваш магаз заработал бы гораздо раньше. И что важно без анальных утех.


    1. VMichael
      21.02.2017 20:49
      +2

      Это пример, когда ваше увлечение оплачивает работодатель.
      Готовых скриптов магазинов туча и платных и бесплатных.
      Это так отвлечение.
      И по вашему примеру я понял, что поизучав Питон на некоем проекте, вы продолжаете работать на PHP.
      Казалось бы, вот он шанс перейти на классный язык, но вот нет, продолжаете есть кактус.
      Из вашего поста я не понял в чем вы возражаете автору?
      У него основная мысль — взяв язык для изучения типа Питона, вам будет гораздо труднее найти работу.
      Собственно так и есть.


      1. JTG
        22.02.2017 13:37
        +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. Смешать, но не взбалтывать.


  1. LonelyCruiser
    21.02.2017 18:41
    +2

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

    Можт еще пару таких проектов и нафик эту работу вообще. ;)


  1. potan
    21.02.2017 19:02

    А можно выучить Scala и получить работу. Скалистов сейчас не хватает.


    1. pudovMaxim
      21.02.2017 19:11

      А где без опыта возьмут скалиста?)


    1. 0xd34df00d
      21.02.2017 19:18
      +1

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


    1. zolt85
      22.02.2017 06:53

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

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


      Спасибо, Вы сделали мой день.


    1. paratagas
      22.02.2017 12:32

      В дополнение к Scala обычно требуют знание Java + зоопарк какого-нибудь эдишена


  1. saboteur_kiev
    21.02.2017 19:27

    Просто раньше вместо Питона начинали с Бейсика или Паскаля. Сейчас они слишком неактуальны.

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

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

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


    1. VolCh
      22.02.2017 07:13
      +1

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


      1. Igelko
        22.02.2017 10:07
        +1

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


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


        1. VolCh
          23.02.2017 09:11

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


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


          1. Igelko
            28.02.2017 11:42

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

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


            1. VolCh
              28.02.2017 13:18

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


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


              1. Igelko
                28.02.2017 15:47

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


                1. VolCh
                  28.02.2017 17:26

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


                  1. Source
                    01.03.2017 00:24

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

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


                    1. Source
                      01.03.2017 00:29

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


                    1. VolCh
                      01.03.2017 13:35

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


      1. dezconnect
        22.02.2017 14:44

        как будто мир крутится вокруг веба


        1. saboteur_kiev
          23.02.2017 18:28

          Окей, может меня не так поняли.

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


  1. ctacka
    21.02.2017 19:46
    +6

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


  1. Siemargl
    21.02.2017 19:56
    +1

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

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

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

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

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


    1. BlackRaven86
      22.02.2017 08:08

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

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


      1. Siemargl
        22.02.2017 11:20

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

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


  1. Danik-ik
    21.02.2017 19:58

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


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


  1. aamonster
    21.02.2017 20:02
    +2

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


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


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


    1. VMichael
      21.02.2017 20:55
      +4

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

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


      1. aamonster
        22.02.2017 02:19
        +5

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


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


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


      1. sshikov
        22.02.2017 09:08

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

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

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


        1. VMichael
          22.02.2017 21:44

          Надо садиться и делать проекты.

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

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


          1. sshikov
            22.02.2017 22:07
            +1

            Я читал Дейта, если что :) хотя это не показатель конечно — просто я начинал в другие времена.

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

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

            Я кстати предпочитаю несколько другие языки, вместо python, и для обучения советую тоже другие (например groovy, который примерно такой же по стилю, но в тоже время не имеет некоторых неприятных свойств и острых углов python). И на python пишу раз в три года по необходимости. И это совершенно не мешает работе с собственно языком, а все сложности как правило лежат в плоскости фреймворков, API и прочего (как скажем сейчас нужно сваять что-то работающее с docker). И в такой ситуации чтобы вспомнить сам язык, вообще нужно пару дней.


  1. Areso
    21.02.2017 22:24
    +1

    Автор, скажите, вы прочли «учить Питон первым языком» где-то в русскоговорящих интернетах или в англоговорящей его части? Дело в том, что востребованность программистов, знающих Питон, у нас и у них — разная. Да, возможно приведу некорректное сравнение, но для них Питон, это как для нас многие годы был Pascal/Delphi. Т.е. у них ему учат почти везде и давно, на нем накоплена (в связи с этим) большая кодовая база, у них там много легаси-проектов и много вчерашних стартапов, у которых «поперло» и которые расширяются… У нас ничего этого нет, вся жизнь со всякими модными словами (или просто иностранными) крутится в столицах.


  1. Krat0S
    21.02.2017 22:27

    Приезжайте к нам в Краснодар)
    Огромный стек технологий, в т.ч. python, постоянное расширение, всегда есть вакансии и возможность устроиться на работу с уровнем «ничего не знаю, хочу в IT» :)
    Не сочтите за рекламу


    1. Siemargl
      21.02.2017 22:41
      +3

      Это антиреклама. Самые ценные специалисты у вас, похоже, по 1С.

      По Питону даже стыдно было написать цену =)


      1. vasiliysenin
        22.02.2017 00:30

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

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

        p.s. вопрос риторический.


        1. Krat0S
          23.02.2017 08:59

          Я не HR, я руководитель сектора мобильной разработки, но могу ответить)

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

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

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

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

          P.S. Снова не сочтите за пиар, но мне нравится моя работа и я не могу не упомянуть преимущества работодателя: Магнит предоставляет место в корпоративной квартире на две недели, при переезде из другого города. Этого времени хватает на поиски жилья :)


      1. Krat0S
        23.02.2017 09:05

        Siemargl, выше ответил по ценам)
        Это подход конкретных HR, они разные по разным технологиям, мне не понять почему они так цены проставляют))
        Самые ценные у нас, насколько я помню — ораклоиды.
        А 1С, да у нас есть несколько довольно серьезных ИС на базе 1С, поэтому человек 100 работает по этому направлению.
        Но на фоне ~1500 IT-шников, это не особо то и много)


  1. DmitrySpb79
    21.02.2017 23:39
    -7

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

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

    PS: Насчет программистов в глубинке, это вообще отдельная тема имхо. Идя в ИТ имхо надо быть готовым к востребованности только в Москве и Питере, или надо выбирать другую профессию.


    1. iroln
      22.02.2017 08:25
      +1

      убогость IDE (Pycharm отстает от Visual Studio лет на 10 имхо)

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


      1. DmitrySpb79
        22.02.2017 10:27
        -1

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


        1. iroln
          22.02.2017 13:39

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


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


          1. DmitrySpb79
            22.02.2017 13:54

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

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


            1. YaakovTooth
              22.02.2017 14:11
              -1

              Пастернака не читал, но с пеной у рта осуждает.

              Ну-ну.


              1. DmitrySpb79
                22.02.2017 14:56

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

                Что проверить тип в коде можно, знаю, спасибо, но вопрос был не о том.


                1. YaakovTooth
                  22.02.2017 17:52

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


                  1. DmitrySpb79
                    22.02.2017 18:03

                    Я вообще-то спросил как вывести popup со списком методов на тулбар.

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


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


            1. iroln
              22.02.2017 15:23
              +1

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

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


              1. DmitrySpb79
                22.02.2017 15:34

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

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


                1. DmitrySpb79
                  22.02.2017 15:47

                  Еще к примеру, только сегодня пригодилось — чтобы сделать include файла в поддиректории, нужно туда добавить пустой файл __init__.py, иначе не сработало. Может у разработчиков языка и были причины, но после С++ выглядит крайне коряво.


                  1. iroln
                    22.02.2017 15:54

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


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

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


                    1. DmitrySpb79
                      22.02.2017 16:00
                      -1

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

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


                      1. VolCh
                        23.02.2017 09:16

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


                        1. DmitrySpb79
                          23.02.2017 12:50
                          -2

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


                          1. Crandel
                            23.02.2017 12:59
                            +1

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


                            1. DmitrySpb79
                              23.02.2017 13:18
                              -1

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


                              1. Crandel
                                23.02.2017 13:25

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


                                from module import *


                    1. MacIn
                      22.02.2017 16:01

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

                      Почему, по вашему мнению, файлы, в которые выделяются объявления и интерфейсы, корявые?


                      1. iroln
                        22.02.2017 16:11

                        объявления и интерфейсы
                        Как же другие то без них живут? Java, Go, Rust и даже Pascal.

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


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


                        1. MacIn
                          22.02.2017 16:48

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

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

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

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

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

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

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

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


                1. iroln
                  22.02.2017 15:48
                  +1

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


                  super().method()


              1. 0xd34df00d
                22.02.2017 20:31

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


                1. iroln
                  22.02.2017 21:11

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


                  1. 0xd34df00d
                    23.02.2017 00:09
                    -1

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


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


  1. Denkenmacht
    21.02.2017 23:44
    -2

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

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

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

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

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


  1. AdVv
    21.02.2017 23:44
    -4

    Заголовок есть, для полноты картины не хватает только фотомодели с большими глазами в качестве иллюстрации, чтоб побольше народа привлечь.
    Python ПРЕКРАСНО подходит на роль первого языка для изучения, он простой и мощный.
    Очевидно, что УЧЕБНЫЕ инструменты не подходят для профессиональной трудовой деятельности.
    Ваш К.О.


  1. max1gu
    21.02.2017 23:44
    -6

    Читая хабр, может появиться ложное ощущение, что всякие там js, python, ruby и прочие go ух как развиты и распространены. Однако статистика показывает, что 50% рынка программистов — это 1С. А вот что не видно из статистики и об этом молчат: что 1С — это внутренний рынок, а все остальные технологии — это на 1/2 аутсорс заграницу.
    Почему хабр создает такое ложное ощущение? Потому что 1С и php программисты работают, а все остальные — пишут статьи на хабре.


    1. MacIn
      21.02.2017 23:50

      Хабр несколько интернационален, ничего удивительного.


    1. Neikist
      22.02.2017 00:25

      Ну тут еще стоит отметить что 1с к сожалению очень обособленное и закрытое сообщество, которое предпочитает свои тематические ресурсы для общения. К технологиям это, увы, тоже относится, в 1с предпочитают использовать то что дают разработчики платформы, и только единицы используют что то вроде тестов или git (((


    1. Ctacfs
      22.02.2017 11:45
      +1

      > Потому что 1С и php программисты работают, а все остальные — пишут статьи на хабре.
      Лихое предположение. А Вы почему на хабре комменты пишете? Тоже не работаете?


      1. max1gu
        22.02.2017 22:46
        -2

        мой коментарий в 23:44, ваш — 11:45. И вы у меня спрашиваете?


        1. Ctacfs
          22.02.2017 23:20
          +1

          Да, Вас. Где прямая связь между количеством материала и занятостью тех, кто его пишет? Или это типа очевидно? Вам самому не смешно с таких «выводов»?
          И будто это имеет значение, работал я в 11:45 или нет. Может, я в другом часовом поясе живу. Может, у меня какой-то гибкий график. Может, я в отпуске или вообще безработный студент. А может мне работодатель разрешает посидеть на хабре во время рабочего дня, в обеденное время или даже в любое, когда нет неотложных дел. Суть в том, что ни количество материала по каким-то технологиям, ни время их публикации не говорит о том, кто работает, а кто нет, ровным счетом НИ ЧЕ ГО.


        1. 0xd34df00d
          23.02.2017 00:10

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


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


    1. YaakovTooth
      22.02.2017 13:48
      +1

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


      Ссылку на это исследование и статистику — в студию.


      1. bertmsk
        22.02.2017 14:09
        +1

        Ссылка на исследование и статистика есть на сайте 1с )


        1. Neikist
          22.02.2017 15:03

          Еще в недавней статье от hh. Там под первой табличкой https://habrahabr.ru/company/hh/blog/318450/


          1. YaakovTooth
            22.02.2017 17:54

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


      1. max1gu
        22.02.2017 17:50
        -1

        за меня уже ответили: https://habrahabr.ru/company/hh/blog/318450/
        Статистика — она такая статистика. Обсуждать рынок без учета главного игрока, у которого под 50% — это подтасовка данных.
        И кстати второе место — php. Не знаю, кто его там ненавидит последние 10 лет, эстеты какие-то наверно, но на нем просто берут и пишут. И всё больше и больше.
        А дальше — ява, она же Андроид.
        Все остальные технологии — на уровне стат.погрешности по сравнению с первой тройкой.


        1. terryP
          23.02.2017 14:06
          +1

          Обсуждать рынок без учета главного игрока, у которого под 50% — это подтасовка данных.
          И кстати второе место — php.

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

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

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

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

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

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

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


          1. max1gu
            23.02.2017 20:40
            -3

            Вам и барышне ниже.

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

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

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


            1. VolCh
              24.02.2017 11:27
              +2

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


              1. max1gu
                24.02.2017 12:25
                -3

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

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


    1. Elizavetta
      23.02.2017 13:22
      +3

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

      1с — это разве программирование? Если не считать его таковым, статистика будет в норме.


      1. max1gu
        23.02.2017 20:42
        -2

        у вас чем развить мыслЮ?


  1. romanegunkov
    21.02.2017 23:44
    +1

    Получается ситуация, что можно изучить клевый язык программирования Python и остаться на улице. А можно выучить «ненавистный» php/1c и получить работу.

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


  1. Apelsinka223
    21.02.2017 23:44

    На php/1C действительно много где берут практически ничего не знающих людей, в основном из-за дешевизны и низкого порога вхождения.
    На основе своего опыта могу сказать что план должен быть такой:
    — иметь самописный проект (а лучше несколько) на нужном языке в открытом доступе (github), идеально если запущен и работает, но не обязательно
    — проект должен содержать хоть какую-то сложность и включать большинство реально используемых технологий (бд/очереди/кеш/отправка писем/js фреймворк/css фреймворк и т.д.)
    — нужно уметь привести из практики примеры спроектированных решений
    — придется согласиться работать за еду скорее всего (если повезет то только на испытательный срок)
    — уже после ~полугода работы вы наберете достаточно опыта чтобы потребовать/найти более приятные условия работы


  1. Zolotoys
    21.02.2017 23:44

    Мне кажется, что первым языком программирования, для русскоязычного человека, должен быть русский язык. Для начала, нужно научиться думать алгоритмически. Научиться мыслить от общего к деталям и наоборот. Научиться предвидению невероятного, сосредоточенности и аккуратности мышления.
    Язык программирования — это просто инструмент, который служит для того, чтобы объяснить свои мысли компьютеру.
    Если у программиста нет четкого понимания и стройности мышления, никакой язык программирования не поможет.
    «Бардак невозможно автоматизировать».
    Несомненно, есть языки программирования, на которых проще выполнять одни задачи и сложнее другие. Каждый язык имеет свой «вкус», и каждый язык требует свою «приправу».

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

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


    1. VMichael
      22.02.2017 01:00

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

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

      P\S: Вкусы, приправы. Какое образное у вас мышление.


      1. Zolotoys
        22.02.2017 02:43

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


        1. VMichael
          22.02.2017 21:49

          Лисп не пробовал.
          А вот Prolog приходилось мучить в институте.
          Вот где жесткая головоломка. :)


    1. Source
      22.02.2017 02:09

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

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


  1. web1nick
    22.02.2017 00:29

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

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

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

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

    Собственно этим например и объясняется весь тот зоопарк технологий, что приходится изучать например в web-разработке


  1. uldashev
    22.02.2017 00:30
    -4

    Все правильно автор описал, было ощущение что не все с питоном так гладко, как говорят евангелисты, по мне так python очень странный язык, для админов, кто не осилил perl и для программистов, кто не осилил java.


  1. Vogr
    22.02.2017 00:30
    +1

    Про удаленку странно. Ни разу еще не работал в офисе.


    1. Lsh
      23.02.2017 14:46

      И самая первая работа была сразу удалённой?


  1. ZoomLS
    22.02.2017 00:36
    +3

    Ничего не мешает работать удалённо. Хоть на компанию, хоть фриланс, хоть upwork и т.д. Кто ищет, тот всегда найдёт.

    Если хочется выучить тот же php/1C и устроиться в своём регионе — то и зарплаты там обычно очень низкие.


    1. ZoomLS
      22.02.2017 00:41

      Кстати, по поводу Python и работы, есть отличное видео с Moscow Django Meetup «Ваши собеседования — отстой»: https://www.youtube.com/watch?v=TzfqgKVg8wE

      P.S.: Попробуйте, может этим ребятам ещё требуются люди. Но их подход, очень меня впечатлил.


  1. VMichael
    22.02.2017 01:08

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


    1. Neikist
      22.02.2017 07:17

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


    1. Igelko
      22.02.2017 10:39
      +1

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


      1. Neikist
        22.02.2017 12:16

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


      1. agolub
        22.02.2017 16:53
        +1

        Могу объяснить из-за чего это.
        «необходимости чёткого процесса разработки, автоматизации тестирования, контроля версий, документирования, аккуратной обработки ошибок и вменяемого управления требованиями».

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

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

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


        1. Crandel
          22.02.2017 18:33

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


          1. VMichael
            22.02.2017 21:59

            Собственно выше написали уже:

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

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


            1. Crandel
              22.02.2017 22:29

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


          1. VolCh
            23.02.2017 09:21

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

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


        1. Igelko
          28.02.2017 12:45

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


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


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


  1. Myosotis
    22.02.2017 01:33

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


  1. Source
    22.02.2017 01:48

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


  1. defrel
    22.02.2017 01:50

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


  1. Hayao
    22.02.2017 01:56

    -Потратив в общей массе 2 года на изучение
    -Открыв вакансии на ЯзыкПрограммирования№1 в общем поисковике, я обнаружил следующие тенденции
    -Сейчас иду в сторону ЯзыкПрограммирования№2, так как на нем банально есть работа

    Проблемма не в ЯзыкеПрограммирования№1, а в неправильной последовательности действий.
    Вообще в этой профессии то что «клево» и на чем «банально есть работа» очень часто не совпадает, особенно если Вы не готовы переезжать.


    1. hatman
      22.02.2017 01:58

      В том то и дело, что на том же тостере, когда обычно идут вопросы по типу: php vs python, python vs 1C итд -все говорят, что иди учи питон, он крутой и все дела. В итоге и получается ложное представление, что в итоге нужно человеку.


      1. Hayao
        22.02.2017 03:05
        +2

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

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

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


      1. VolCh
        22.02.2017 07:20

        Обычно на тостере не спрашивают язык для первой работы.


    1. JekaMas
      22.02.2017 11:46

      Все хорошо, автор познал значение «преждевременной оптимизации» в программировании — ценный и необходимый навык.


  1. trapwalker
    22.02.2017 02:11
    +3

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

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

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

    Это я к чему… Говорят, что самая лучшая работа — это высокооплачиваемое хобби. Я с этим полностью согласен. Работа должна быть в первую очередь интересной, а всё остальное компромиссы. А ещё, настоящий профессионал и ценитель своего дела найдёт свой особенный интерес в решении любой профильной задачи.


  1. pansa
    22.02.2017 03:05
    +2

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

    Так что с другой стороны баррикад, поверьте, тоже не ясно небо.
    СПб.


  1. Hayate
    22.02.2017 05:27
    +1

    Та же фигня. Начинал изучать Python и Django, не смог этим зарабатывать, ушёл в PHP. Не Москва, провинция.


  1. ertegix
    22.02.2017 07:34

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


  1. Yralov
    22.02.2017 07:54
    +3

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


  1. lumini
    22.02.2017 08:46
    +1

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


  1. Scf
    22.02.2017 08:57

    И правда, никогда не задумывался о проблеме выбора первого языка с такого ракурса. Наверное, дело в том, что подобная целеустремленность — самостоятельно изучить с нуля первым! языком именно язык для работы — встречается очень редко. В качестве первого языка предлагают как питон, так турбо паскаль или бейсик там — простые "обучающие" языки для закладывания в голову основ. Но при такой целеустремленности можно было бы сразу брать Java/Шарп/С++/JS


  1. newpy
    22.02.2017 11:46
    +2

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

    мне кажется если разделить всех кто отписался на два потока(привет import threading), и попросить написать их город (или условно Мск/Питер и провинция) то получится ровно такая статистика как написал автор. Я в провинции. Вакансии по питону в среднем колеблются около 0. Если вы найдете одну-две, то это будет вакансия от HR из другого города, другой провинции, или двух столиц. Когда знакомый директор стал интересоваться питонистами, не нашел ни одного тоже. Мой не богатый опыт удаленной работы в качестве фриланса-подработки внутрироссийской (другие провинции), показывает что там такая же ситуация. На вопрос «а почему не на питоне?» ответ примерно одинаковый «тут специалистов нет/php по два рубля/я знаю Yii/...» и т.д. При этом забавный факт — все знают о питоне, все очень лояльно относятся, очень нравится, многие пет-проекты для себя делают, или симпатизируют очень, все в курсе, что на джанге админка и сайт контент-ориентированный за час можно сделать, НО… увы.

    Сам освоил в той или иной степени Python, в отличие от автора сразу вслед взял PHP, пошел на работу PHP, работаю PHP. Python для серьезных заказов или работы применить так и не удалось пока. В качестве третьей ступени решил выбрать осознанно язык вообще другой парадигмы, требующий существенной перестройки мозгов. Выбор пал на Clojure. Заходит просто чудесно. При этом я естественно осознаю что работы тут такой я не найду. Но почему-то не страшно.

    Поэтому автору только один совет, не стоит так долго зацикливаться. Изучить глубже и в нюансах, или досконально, можно чуточку позже, если вам нужна работа и кушать, или зачастую все это придет в процессе работы.
    Быть смелее. Не ищите вакансии джунов, ищите или точнее ИДИТЕ на собеседования для миддлов если есть вакансии.
    Не пренебрегайте собеседованиями. Вам не обязательно идти работать во все конторы. Вы сами решите в какую, но собеседование посетить стоит. С удаленкой сейчас не должно быть таких проблем. Не говорите что у вас нет опыта, вы же сделали ваши пет-проекты, так показывайте. Это уже опыт. Почему? Потому что 90% других джуниоров/претендентов не прочитало и 50% того что прочитали вы, и не сделали ни одного пет проекта, не важно на каком языке. С php так точно такая ситуация на каждом первом претенденте (за столицы не говорю, может там сразу PHP гуру приходят).

    Я например дико жалею что на своем собеседовании, когда меня спросили на какой уровень я претендую, я поскромничал не проявил должной смелости, и помявшись пробубнил: «ну там джуниор, ближе к мидлу...». Позже, спустя полгода, нам взяли сениора… судя по его вопросам по работе, судя по его комментариям и словам, он с трудом на миддла тянет. Просто видимо был наглее, смелее и «красноречивее» на собеседовании.

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


    1. VMichael
      22.02.2017 22:04
      -2

      Удовольствия на работе я испытываю все меньше.

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


  1. amarao
    22.02.2017 13:47
    +3

    … И это в тот момент, когда мы ищем python и ruby-разработчиков.

    Хотя, да, человек, который знает «только питон» или «только ruby» никого не интересует, потому что всего процесса изучения там — месяца два от силы.

    Вообще, software engineering требует знания best practices, а не только «абстрактного языка».

    Напрмер, условного питониста на собеседовании я, после простых вопросов по питону (типа разницы между mutable/non-mutable) я спрошу следующую вещь:

    Предположим, что вы решили в вашей программе использовать библиотеку psycopg. У вас на компьютере программа работает, а после того, как её пытаются запустить на сервере, она выдаёт что-то странное:
    libpq.so: undefined symbol: SSL_CTX_set_alpn_protos in libssl.so.

    Что это такое, как с этим бороться и какая ваша любимая best practice по деплою софта в таких случаях? И почему?

    Потому что software engineering — это не только и не столько алгоритмы.

    Если кому-то интересен вопрос №2 — «предположим, у вас есть программа, которая взаимодейтсвует с чужим API-сервером по http(s), для которого нет адекватной документации, но есть несколько примеров вызовов и ожидаемых ответов. Как будут выглядеть юнит-тесты для вашей программы? Каким образом вы будете описывать неизвестный вам API-сервер в моках? Или вы будете вместо моков использовать что-то другое?»


    1. havelock
      22.02.2017 15:54

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


      1. amarao
        22.02.2017 16:15

        virtualenv не поможет в ситуации, когда libpg.so не дружит с libssl.so.

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

        Главное от кандидата в этой ситуации была бы способность понять что происходит и почему venv не может решить эту проблему.


        1. havelock
          22.02.2017 18:49
          +3

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

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

          Выходить за рамки языка безусловно нужно, разработчик должен иметь представление обо всём, что может влиять на его работу, но данный случай (когда psycopg2 был собран с одной libssl.so, а работать пытается с другой, насколько я понимаю это один из вариантов возникновения такой проблемы) затрагивает сферу системного администрирования довольно глубоко, как мне кажется. Я лично не стал бы ждать от соискателя-питониста ответа на этот вопрос без гугла.

          К слову, само возникновение такого кейса говорит что с деплоем что-то не так, ИМХО. Хотя может я инвалид 2017 года с облачными технологиями, который против того чтобы на одном сервере деплоилось много разного софта с хитрыми перекрёстными взаимосвязями, что приводит к таким проблемам.


          1. amarao
            22.02.2017 19:07

            Ну расскажите, как ваш код оказывался в продакшене.

            Потому что знание этого процесса — это 30% от всего software engineering.


          1. VolCh
            23.02.2017 09:25

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

            А я бы ждал. Хотя бы "это задача администрирования — поручу админам, а сам пока займусь следующей".


        1. VMichael
          22.02.2017 22:09

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


    1. Neikist
      22.02.2017 18:47

      Это точно вопросы к junior?


      1. amarao
        22.02.2017 19:02

        К толковому человеку без глубокого знания питона. Если он по всем областям junior, то ничего сказать не могу. Должен ли junior-питонист знать для чего маска у сети? А должен ли senior знать? В какой момент времени это знание появляется?


        1. KReal
          01.03.2017 18:55
          -2

          Никакой не должен.


  1. Idot
    22.02.2017 15:02

    Вообще-то, первый язык — чисто учебный и он не обязательно нужен для работы.

    Автор, погуглите что такое: Logo и Scratch, а так же что такое Basic и Pascal. Всё это учебные языки, и они не подразумевают работу на этих языках.


    1. JTG
      22.02.2017 15:42
      +1

      Дейкстра в этом плане был весьма категоричен

      It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

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


      1. MacIn
        22.02.2017 16:03
        -1

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


    1. Wedmer
      22.02.2017 16:08

      BASIC и Pascal ни разу не были чисто «учебными» языками.


      1. Idot
        23.02.2017 06:48

        Это такими они стали. Изначально они задумывались как чисто учебные. После Бэйсика легко перейти на Фортран, а после Паскаля легко перейти на Алгол. Но, на практике оказалось, что на этих учебных языках вполне возможно писать и отнюдь не учебные программы. В частности, в результате распространения Паскаля помер Алгол, оказавшийся полностью вытесненным языком, который изначально задумывался как чисто учебный. А ещё не взлетела Модула, которая задумывалась как серьёзный язык для работы, на который нужно было перейти после изучения учебного Паскаля.


        1. VolCh
          23.02.2017 09:35

          Разве BASIC разрабатывался как учебный? По-моему он разрабатывался как язык общего назначения для начинающих разработчиков. То есть не "оказалось", а цель создания была такая, что человек ещё вчера ничего не знающий о программировании, сегодня пишет отнюдь не учебные программы. Не оптимальные по сравнению с тем же FORTRAN по рантайм ресурсам, с ограниченными возможностями, практически без какой-либо модульности, но уже работающие, хотя бы экономящие время самого разработчика считая на машине то, что обычно он считал руками (екселей тогда вроде не было).


          1. MacIn
            23.02.2017 15:18

            Давайте, друзья, вспомним, что стандартизация Бейсика произошла относительно поздно, диалектов — вагон. Сравнить первоначальные диалекты, и, например, MS Quick Basic, имеющий модули, какую-никакую систему типов и так далее — два разных мира.
            Это не возражение, просто ремарка по поводу. Бейсик — и Бейсик разные вещи.


            1. VolCh
              23.02.2017 18:46
              +1

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


        1. Wedmer
          23.02.2017 10:03

          Алгол был убит проблемами с реализацией компилятора для него.
          Pascal задумывался как чисто учебный язык, но чисто учебным не стал.


  1. raacer
    22.02.2017 15:45
    +1

    Глупо учить пайтон, надеясь стать востребованным в каком-нибудь колхозе. Если принципиально хочется работать в офисе в своем городе, то надо сначала узнать, кто у вас там требуется, и подстраиваться под них.

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

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

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

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


  1. havelock
    22.02.2017 15:50

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

    Тем не менее, не советовать его учить только потому, что вы не смогли в вашем городе/регионе/стране найти работу на нём — некорректно.

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

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


  1. rockin
    22.02.2017 16:30

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

    А по статье хочу сказать вот что — не мы диктуем рынку наши условия, а рынок — диктует нам. «Мы» в данном случае те, кто в определённой части рынка никак не участвует. Да и глупо читать книжки по аксапте там, где вокруг 1це. Логично начать читать книжки по 1це, получить работу по 1це, а дальше читать книжки по аксапте.

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

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


  1. mickvav
    22.02.2017 17:03

    Ну, после того, как вы уже изучили питон, php пойдет гораздо легче и быстрее — n+1 -й язык программирования изучать (почти?) всегда легче. У меня траектория была такая — basic-pascal-C-perl-fortran-php-javascript-python. Где-то параллельно шел SQL и мелькал C++ время от времени, да…


  1. liverpool67
    22.02.2017 19:24
    +1

    hatman
    Не совсем понятно почему растянули обучение на 2 года. В свое время также первым языком был питон потом изучил джангу и начал клепать сервис «стартап» (поисковик товаров) у себя в провинции, процесс обучения языку и создание сервиса занял 2 мес. Потом также не смог найти удаленную работу и стал подряд изучать c#, java, c++ в итоге стал разрабатывать под Android и выпустил пару приложений но не взлетело, далее стал под ios писать приложение потратил кучу денег на macbook, арт, звуки в итоге опять проект провалился. Но сдаваться я не хотел и поразмышляв немного начал разрабатывать приложение для android именно то котором бы я сам хотел пользоваться и наконец взлетело доход начал увеличиваться и ровно через год как я сел за лутца написал заявление на увольнение. Позже через месяц доход уже был в 10 раз больше чем бывшая зарплата. Прошло уже почти пять лет и я до сих пор работаю на себя, создаю проекты которые мне нравятся. Все это началось с питона и по сей день я время от времени пишу на питоне (тулзы, парсеры, machine learning). Сейчас активно занимаюсь внедрением machine learning/deep learning (процесс обучения занял 7-8 мес) в свои проекты и планирую писать бекенд сервиса как раз на python/django (к истокам...).
    Пишу все это к тому что не стоит отчаиваться и ругать язык на самом деле сейчас спецы по ML в большей части не знают что такое классы и пишут простыню в одном файле без функций, в стартапах (удалось поработать некоторое время на международную компанию) глубоко плевать как ты пишешь код лишь бы работало потом отрефакторим. Это только первый язык (и он прекрасен) и он открывает дверь в другие языки (несколько раз пытался начать с С++ но столько же раз бросал это неблагодарное дело). Не нужно сдаваться нужно искать другие возможности и пробовать. Как говорил Эдисон «Я не терпел поражений. Я просто нашёл 10 000 способов, которые не работают.» Пробуйте создавать сервисы, приложения, игры, плагины, библиотеки. Много читайте, повышайте уровень программирования, изучайте психологию, математику, биографии людей. Меняйте специализации web dev/gamedev/mobile/ML/… Для меня это только начало и программирование это только инструмент не более, главное идеи которые нужно постоянно искать.
    Моей целью изучения программирования была не работа на кого-то, а наоборот создание своего дела.


    1. VolCh
      23.02.2017 09:42

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

      Редкая мотивация, по-моему. Обычно цель изучения программирования — работа, внешне аналогичная другой офисной, но за заметно бОльшие деньги. Моей целью было именно программирование как таковое. Когда оказалось, что за это платят заметно больше среднего (а это не сразу было даже уже после распада Союза), то это был просто приятный бонус, позволяющий не думать о деньгах, занимаясь программированием и заниматься им значительно больше, чем работая грузчиком или менеджером, чтобы заработать на жизнь, интернет и компьютер :)


      1. Wedmer
        23.02.2017 10:57
        +1

        Аналогично. У меня все связанное с компьютерами было хобби. Правда еще в детстве я баловался HEX редактором и утилитой DEBUG. Потом были BASIC и асм. Сейчас пишу на плюсах и голых сях и радуюсь жизни, хотя, по идее, должен был бы вести детский театр-студию, театральный кружок или еще что то в этом роде.


  1. Wayfarer15
    22.02.2017 21:12
    +1

    Хех, как весело жить на этом свете. По HL7 в России вообще нет вакансий! Т.е. не то что в каком-то отдельном "Урюпинске", но и во всех столицах. Прямо сейчас проверил на hh. (Кстати, сейчас же идёт HIMSS 2017.)

    А вообще прочитайте про этого парня и перестаньте ныть — https://vc.ru/p/cuba-coder
    Думается, ему было очень много сложнее.


    1. Idot
      23.02.2017 08:25
      -1

      Глянул Haskel: в моей стране ни одной вакансии, а в России аж целых ДЕВЯТЬ!!! БЛИН Я В ШОКЕ!!! На Хаскель который тут так любят хвалить на Хабре — ДЕВЯТЬ ВАКАНСИЙ НА ВСЮ РОССИЮ!!!

      Erlang — 13 вакансий на всю Россию!
      LISP — 1 вакансия на всю Россию!
      F# — 8 вакансий на всю Россию!


      1. 0xd34df00d
        23.02.2017 08:38
        +2

        Не надо всё-таки по вакансиям судить о языках.


        1. Idot
          23.02.2017 09:31

          Ну, OK, может они тогда офигенно высоко оплачиваются?
          Не приведёте ли сравнение того как эти языки оплачиваются в сравнении с C#, Java и C++?

          PS мне вот лично очень нравится APL. Однако, вакансий по нему нет вообще. То есть с точки зрения заработать себе на достойную жизнь, APL, увы, не сильно отличается от BrainFuck :(


          1. 0xd34df00d
            23.02.2017 09:42

            Мне ресёрч по всем доступным вакансиям сделать?


            В любом случае, лично я не жалуюсь. И знаю, что вакансии для хаскелистов вполне себе есть.


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


          1. VolCh
            23.02.2017 09:44
            +1

            Надо искать проекты "под ключ", где заказчика не интересует технология. Я так зарабатывал на достойную жизнь c помощью Forth и Java в 90-е.


  1. Bandicoot
    22.02.2017 21:39

    https://toster.ru/q/399506


  1. xFFFF
    22.02.2017 21:39

    А почему не смотрел удаленную работу?


  1. Sad_Bro
    22.02.2017 21:43

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


  1. samizdam
    23.02.2017 00:44

    if You so clever — show me your money =)


  1. Diman_94
    23.02.2017 01:23
    +1

    Автор, ищи удаленку.
    На моем примере начинающего: в универе сисадминствовал, в прошлом году закончил бакалавриат по «непрограммистской» специальности (безопасник).
    Питон использовал для своих утилит, автоматизации, прототипов для научных работ и т.д. Познакомился с ним давно, но не практиковался специально в программировании, внимание в основном уделял универу и сисадминству. Фреймворки тогда не изучал, казалось, что веб — это не для крутых пацанов, туториал по django прочитал во время поиска первой работы программистом. Кроме того, программировать в школе учился с Pascal, в универе несколько курсовых было на C#. То есть, по факту для HR в качестве программиста я никто. В сумме, по фреймворкам я точно хуже тебя, по теории алгоритмов наверно лучше.
    Два месяца назад стало скучно и я ушел из сисадминства (крупная телеком-компания), устроился в мааленькую компаниию программистом Go на ту же з/п (первое, что подвернулось из адекватного). Успел отработать у них всего месяц, после чего на меня на hh нашли по слову «python» в резюме и предложили удаленную работу. Я не собирался менять работу так быстро (если честно, забыл резюме скрыть), но решил, что попробовать-то стоит, и меня после 45 минут непринужденного общения по скайпу позвали работать удаленно на з/п в 2 раза больше, чем на прошлых местах работы (вилка была x2-x3, торговаться не стал :) На собеседовании рассказывал про декораторы, про slots, про итераторы, про свое отношение к ORM. В качестве практического опыта рассказал что прогал в универе и на прошлой работе. Знания этой информации хватило бы, чтобы покрыть все питон-специфичные вопросы.
    Подозреваю, что то, что я уже устроился работать куда-то, тоже сыграло положительную роль (об этом эффекте, кажется, писал Joel Spolsky или Haseeb).
    P.S. По Go хочу дополнить — попробовать было интересно, язык классный, его хвалят не зря. Но прошлая компания из-за экзотического стэка (Golang+DB2) теперь страдает — по ним нельзя в провинции найти крутого спеца, все равно придется его учить многому, поэтому набирают новичков с любым опытом программирования, которые сидят в окружении таких же новичков и не развиваются. Типа один знал mysql, второй postgres, а работать приходится в db2, где вся доступная информация ограничивается ibm.com — никакой адекватной помощи на форумах/stackoverflow не получить. С Go похоже в том плане, что информация есть, но в основном на английском либо в книгах, не все достаточно упорны (особенно «новички»). На фоне этого Python выглядит не таким уж плохим вариантом :D (шучу, он крутой, сейчас от работы просто кайфую)
    P.P.S. «новички» выше это в том числе люди с 5 годами официальной работы программистом, которые не отличают sudo от su или tcp от ip, вроде того.


  1. Acuna
    23.02.2017 01:44

    В общем, самый главный урок: помимо чтения статей о приглянувшихся ЯП нужно смотреть и вакансии)


  1. poznawatel
    23.02.2017 06:11

    В заголовок нужно добавить «для ВЕБ-применений». Два года назад в Томске мы на вышесреднюю зарплату замучились искать хоть какого-то джуниора на Python/C, готового разбираться с ЧПУ. Результат — я сам нужный объём Питона изучил за три недели…


    1. hatman
      23.02.2017 06:12

      Замкнутый круг. Работы нет, поэтому нет спецов, а раз нет спецов, то нет и работы )


      1. poznawatel
        23.02.2017 16:30

        Вы, программисты, считаете это «нет»? Побойтесь Бога! В настоящее время, например, на Яндекс-Работе в Томске по запросу «Python» прилетает полдюжины вакансий, из которых больше половины — с опытом от одного года. Это сопоставимо со всеми вакансиями «химик» или «механик». Зарплаты и уровень ответственности же вообще лучше не сравнивать.


      1. vasiliysenin
        25.02.2017 01:30

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


        1. max1gu
          25.02.2017 10:53

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

          с моей точки зрения, порядок тут следующий.
          Сначала определиться на какой рынок будем работать — внутренний или внешний. Это определит глобально стек технологий и вид клиентов и продуктов.
          Далее смотрим на существующий рынок труда, благо в программировании есть удаленная работа (хотя 1Сник на удаленке — только для очень мелких проектов).
          И глядя на доступный ресурс, опеределяетесь, по какой цене вы его будете брать.
          Самый простой способ взять хорошего программиста — это смотреть его сертификаты. Это возможно в 1С и Микрософтовском стеке. Однако подозреваю, что это будет дорогой ресурс, а вам надо брать овно-кодеров. Их рынок тоже есть.
          И вот где-то тут вы окончательно определитесь с технологией и во сколько она вам будет стоить.
          Предполагаю, что «пучком дешевле» будут пхп и 1С (с этими не факт, уже есть проблемы).
          Вот смотрите. Если вы решили делать для мобильных платформ, то это все-таки Ява или ОбджектСи/свифт. Можно по-можному рискнуть с кордовой или ксамарном, но знающие люди не советуют.
          Если вы работаете под веб, то ту важно иметь большой выбор людей. Я бы посмотрел прежде всего на ПХП, потому что сам кода-то на нем работал, выбор людей большой и его даже знать не надо, чтобы писать (при условии, что вы выбрали простой пхп-фреймвор и вам нужны просто кодеры).
          В энтерпрайзе выбор сложен, потому что сама бизнес-модель здесь извращенная. Главное зайти в проект и начать, а дальше выкручивать клиенту руки и стричь бабло. Особо циничные люди используют SAP или Axapta (людей найти трудно, стоят дорого), если есть планы сделать для клиента хоть что-то, то берут 1С (тут на самом деле, не смотря на большое предложение, всё плохо и становится хуже: найти на средний проект архитектора и пару толковых прогрммистов, которые досконально знают конфигурацию — проблема), романтики пробуют Ява (программистов найти можно, но вот архитекторов с понимаем предметной области нет).
          И, если честно, я бы на питон не посмотрел.
          И ещё. В наших краях толковые 1С ники мигрируют в пхп, яву и обджектСи. Потому что оплата труда архитектора на местного клиента и негром на аутсорс забугор отличаются в разы.


          1. VolCh
            25.02.2017 12:56

            романтики пробуют Ява (программистов найти можно, но вот архитекторов с понимаем предметной области нет)

            А почему не PHP? Особенно если изначально бизнесу хочется веб-интерфейс к своей ERP и т. п.?


            1. max1gu
              25.02.2017 13:37

              1. У всех нормальных ERP и CRM есть свои веб-интерфейсы и порталы. Клиента уверяют, что все получится дешево и за 5 минут. Через год клиент начинает что-то подозревать.
              2. Основа энтерпрайза — архитертура, бизнес-процессы, методологии. SAP, Oracle, Axapta и 1С все это дают в коробке и сразу. А дальше развитие событий следующее
              а) предприятие в грубой форме ломается под систему. Попутно увольняют треть экономистов, финансистов, бухгалтеров, менеджеров по продажам, технологов, масторв смен. Ещё треть сбежит сама в течении года-двух. Результат — более менее рабочая система, ничего не знающая об специфике бизнеса и в ней некому работать — остались только неудачники и подлизы. Мышление среднего звена ИТР выхолощено до квадратно-гнездовой схемы.
              б) создается свой отдел разработки на 30-100 человек, который постепенно переписывает 30-70% системы. Попутно раздуваются штаты во всех подразделениях операторами. Результат все равно не очевиден. Самые умные ИТР, поняв как работает ERP/CRM, валят на более высокие зарплаты. Туда же уходят через 2-3 года ключевые разработчики.
              в) вы ставите 1С 8. Доработок значительно меньше, разработчики (исторически так вышло) повёрнуты лицок к клиенту. Всё идет хорошо, процентов 50-70% работает замечательно, но через 2-3 шлда вы окончательно понимаете, что это не ERP/CRM, а бухгалтерская программа переросток, которая на философском уровне (архитертура, бизнес-процессы, методологии) не хочет понимать ваш бизнес и её надо ломать под корень.

              К чему это я? ПХП — это молоток. А инструкции по его использованию (архитертура, бизнес-процессы, методологии) — нет. Всё с ноля. Либо приглашать 1С-ного бизнес-аналитика (но он не в зуб ногой в низовой архитектуре, например, как из журнала движений получается таблица остатков и оборотов на уровне платформы). Либо вариант (б) — за несколько лет ускоррено проходите весь цикл глубокого понимания бизнес-процессов. Придется подучить кроме ПХП и SQL ещё региональный бух.учет, МСФО, понять дзен управленческого учета вбелую, всерую и вчерную, кадровый учет, расчет зарплаты всеми способами, передовые методики продаж и организации торговых команд и ещё очень много чего. Т.е. вы сразу должны стать архитекторами с глубоким пониманем предметной области.
              Единственное, что вам поможет — вам не надо делать своё решение универсальным.


              1. hatman
                25.02.2017 18:47

                Стало интересно. И что в итоге делать предприятию? Сап, 1С или что-то свое?


                1. VMichael
                  25.02.2017 19:49

                  Где то в сети попадалось мнение, что SAP это экономическая диверсия.
                  Я не сапник, но проекты, где пересекался с SAP-никами склоняют меня согласится с этим мнением.
                  Помню, в одной конторе, в которой команду сапников увольняли прощальное письмо руководителя сапников «И в момент, когда, что то стало получаться, к сожалению, проект закрыли». Это через 1.5 года работы. Конечно частный случай, но все же.
                  А остальной выбор часто состоит в том, каких специалистов компания сможет найти, то и будут делать.


                1. max1gu
                  25.02.2017 19:55
                  +1

                  Золотой и серебрянной пули нет. Вопрос очень многогранен. Надо писать много буков.
                  Я периодически выступаю бизнес-аналитиком в проектах внедрения 1С в малом и среднем бизнесе. Большие предприятия знаю как бывший работник и от людей, которым я склонен верить как уважаемым мной старшим товарищам.
                  Т.е. текст про корпоративные системы будет одим сплошным личным мнением, которое любой «профессионал» в этой сфере сможет обосновано опровегнуть (формально).

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

                  По системам — после 2008 годакрупных внедрений всяких SAP, Oracle и Axapta стало намного бменьше, потому что стоит абсолютно сумашедших денег, а результат всё такой же.
                  По 1С: не верьте рекламе. Вам будут расказывать какая УПП классная. Послушайте. А потом посмотрите статейку «отличия ERP 2.0 от УПП» и вас появятся вопросы — что же тогда вообше умеет УПП, если вот ЭТОГО там нет. По секрету скажу вам, что принципиально УПП 2005 года и 2017 не отличается. Идеология дырявая всё также.

                  Из положительного опыта — видел успешные проекты, где брали 1С и переписывали практически все, кроме базовых справочников. Но это очень дорого.
                  Видел SAP, переписанный 3 раза за 7 лет. Вроде работает в конце концов.
                  Базовая 1С УПП — ещё от кактус. И далеко не все его доедают до конца.
                  Самое лучшее решение на данный момент — самописная 1С 7.7 (там легко самим писать, она простая как два тапка). Но платформа слабая и не поддерживается.


                1. max1gu
                  25.02.2017 20:14

                  И да, на счет «писать что-то своё» отвечу, что считаю не целесообразным.
                  На примере 1С (но это есть во всех системах) скажу, что есть технологический сервис платформы, на повторение которого вы потратите несколько человеко-лет. Если базовые справочники (клиенты, товары, например) вас не сильно напрягут, то вот что придется писать самим:
                  1) регистры сведений. Это таблицы, но они выдают значения по ограничениям, прежде всего «на дату». Реализовано, скорее всего, на хранимых процедурах. Можно реализовать запросами, но очень частный случай.
                  2) регистры накопления. Представляют собой журналы движения (приход/расход), но могут выдавать остатки и обороты за период. Реализовано, скорее всего, на хранимых процедурах. Т.е. там по одним данным 2 вида представления. И запросом это не рашается.
                  3) храниние промежуточных итогов в разрезе аналитики, чтобы не крутить сложные запросы каждый раз. Платформа сама рашает, где выбрать итоги, а где посчитать.
                  4) права доступа с ролями и доступом к отдельным записям.
                  5) модули
                  6) иерархия в справочниках и (!!! главное) в запросах и отчетах и подсчетом итогов на каждом уровне иерархии. Напрямую в лоб запросами не решается.
                  7) очень недурной построитель отчетов. Главное, ради чего 1С 7 меняют на 8.

                  Там ещё куча плюшек, посмотрев на которые отпадет желаение изобретать заново не то что велосипед, а Space Shuttle


              1. VolCh
                25.02.2017 18:53

                Либо вариант (б) — за несколько лет ускоррено проходите весь цикл глубокого понимания бизнес-процессов.


                Этот вариант может случиться сам собой, если расти вместе с бизнесом на позиции «тыжепрограммист» :)


              1. VMichael
                25.02.2017 19:43

                Все перечисленные вами варианты внедрения / создания «энтерпрайз решений» ведут просто к гибели бизнеса и выхода нет.
                Не могу с вами согласиться.


                1. max1gu
                  25.02.2017 20:50
                  +4

                  А кто сказал, что это не так?
                  Рынок энтерпраза крайне коррумпирован и понятие «успешность проекта» не имеет точного определения.
                  — Проект успешен в любом случае для топ-менеджера, который пробил проект и завел подрядчиков. Это галочка ему в резюме.
                  — Проект успешен в любом случае для собственников, заплативших 1-5 млн руб/долл за проект. Они никогда не признают, что их тонко развели. И они будут продолжать платить потмоу что «ведут просто к гибели бизнеса и выхода нет»
                  — Проект успешен в любом случае для системного интегратора и консалтеров- это им галочка в портфолио.
                  — Мнение тех десятков-тысяц несчастных, которые крутят педали в этом цирке или были уволены никто не услышит.

                  Вы справшиваете, как все это работает при таком внедрении? Очень просто:
                  — маржинальность бизнеса больше 30% и он выживет и в таких условиях. Если меньше- не выживет
                  — во всех подразделениях ведется свой учет. Пышным цветом цветут всякие эксели, самописные аксесы и даже ломаные 1С. Типа «ИТ малая механизация». Итоговые цифры заносятся в никому не нужную корпоративную систему.


                  1. hatman
                    26.02.2017 08:43

                    Что-то ад какой-то получается. Но я так понял, что если это малый бизнес, то пока ничего лучше обычной 1С для РФ нет — правильно?


                    1. VolCh
                      26.02.2017 12:31

                      По опыту оптимально себя показал вариант практически стандартная конфигурация 1С для стандартных процессов + какое-то самописное решение на популярной в регионе (если не хочется связываться с фрилансом и прочим удаленным аутсорсом) платформе/фреймворке для специфичных, интегрированное (но слабо) с основной 1С. Если пытаться сделать всё на одной 1С, то очень большие риски вендор-лока, в смысле будете сильно завязаны на конкретного разработчика с большой вероятностью очень сложного обновления при обновлении базовой конфигурации.


                    1. vasiliysenin
                      27.02.2017 02:20

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


  1. smarkelov
    02.03.2017 12:06
    -1

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