На прошлой неделе я ходил на собеседование, и основной вопрос ко мне был такой: «Почему вы решили поменять профессию и стать программистом?». В конце собеседования человек, который проводил собеседование — руководитель отдела перспективных разработок одной IT компании — прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."

Предыстория


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

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

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

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

И вот теперь, как мне кажется, снова пришло время что-то менять.
И снова, как и в предыдущий раз, все спрашивают: Почему? Зачем? Всё ведь хорошо!

Попробую объяснить свою позицию


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

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

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

Можно продолжать ходить на работу и попытаться реализовать себя в каком-нибудь хобби и пять раз в неделю, вставая по утрам, осознавать, что сегодня будет навсегда потерян еще один день — мрачноватая перспектива!

В общем нужно что-то менять! Но что и на что? — вот в чем вопрос!

Если посмотреть на программирование, то это направление представляется очень интересным:

  • Оно с одной стороны — совершенно новое для меня, т.е. в нем можно учиться и развиваться: выбор ПО, задач, проблем практически не ограничен, от молекулярной биологии, физики и химии до верстки сайтов. Мне кажется, тут есть возможности и есть перспективы.
  • С другой стороны — это направление, в котором у меня есть некоторый опыт: Fortran в институте, LabView — последние три года на работе, Си и Free Pascal (немножко для общего развития), PHP + WordPress + HTML+CSS — вполне рабочий сайт получился.
  • Честно говоря, мне просто нравится кодить, и я люблю когда моя работа имеет результат: сделал — заработало!

Судя по тому, что я вижу на Хабре и в интернете — разработчик должен быть очень опытным и молодым, желательно лет 23-27, после 35 — найти работу становится сложнее. Скажу честно, это кажется немного странным! Конечно, общеизвестно, что с возрастом интеллектуальные способности деградируют, но с точки зрения медицины — возрастом считается 70-80 лет и никак не 30-40. Другое дело, что человеку, которому двадцать лет, можно меньше платить. Но я не претендую на позицию разработчика с 20-летним стажем.

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

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

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

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

Рассмотрим финансовый вопрос. Да, при смене работы я существенно потеряю в деньгах, но кое-что при этом и приобрету:

  • Во-первых программист не так сильно привязан к месту работы географически, а это значит, что при желании я смогу работать на удаленных заказчиков;
  • Во-вторых, по моей оценке уровень дохода скорее всего через пару лет сравняется с моим текущим уровнем;
  • В третьих, рынок программного обеспечения неуклонно растет, а значит растет спрос и на специалистов, а вот производство оборудования в РФ непрерывно сокращается (это безусловно мои личные субъективные ощущения, не претендующие на какую-либо объективность), а значит работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!

Но языков программирования так много, почему именно Python — скажете вы.

Существует даже мнение, что не нужно учить Python первым языком.

Получилось так, что лет пять назад один мой друг, увлекающийся Linux, очень настоятельно мне его порекомендовал, были новогодние праздники и было время попробовать разные дистрибутивы, в общем последние пять лет я использую Debian. А дальше все просто: bash — это наше все, но хотелось возможности написать что-то более сложное: попробовал Си, по рекомендации того же друга попробовал Lazarus, немного повозился с PostgreSql. Потом был почти годовой перерыв, а потом, попробовал Python.

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

Еще одна причина для меня выбрать Python — это то, что я считаю его более перспективным языком с точки зрения участия в различных технических, научных и просто интересных проектах, чем например PHP.

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

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

В данный момент вопрос актуален для меня, и мне будет интересно получить мнения и комментарии читателей Хабра.
Поделиться с друзьями
-->

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


  1. tmnhy
    05.03.2017 14:52
    +44

    Вопрос!

    Причем тут хабы «программирование» и «python»? Про программирование нет ничего, а про питон… И про питон, ничего!

    Замените программирование на «сборщик мебели», а питон на «корпусную мебель»… Мне кажется смысл особо не поменяется.


  1. VMichael
    05.03.2017 14:56
    +2

    Вопрос в чем?

    «Почему вы решили поменять профессию и стать программистом?»
    — этот?


  1. fireSparrow
    05.03.2017 14:56
    +7

    Я как раз месяц назад получил свою первую работу в программировании — а мне уже 31 год. Тоже, кстати питонистом, я в восторге от этого языка :)
    Желаю вам удачи!


    1. Tyrel
      05.03.2017 16:03

      А можно поподробнее описать опыт и процесс?


      1. fireSparrow
        05.03.2017 16:44

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


        1. Tyrel
          05.03.2017 16:47
          +1

          Я, скорее, про «багаж», с которым Вас взяли. Участие в каких-то проектах, код на гитхабе? Что, вообще, кроме питона, понадобилось?


          1. fireSparrow
            05.03.2017 17:03

            Ну, я до этого 6 лет работал в техподдержке/администрировании. Периодически возникали задачи, связанные с написанием кода, да я и сам старался в этом вопросе проявлять инициативу. Из завершённых более-менее весомых проектов у меня были: внутренний корпоративный портал (php+sql+js), пара внутренних веб-сервисов, один проектик, связанный с интеграцией с внешним сервисом. Ну и по мелочам — скрипты, простые запросы к БД.

            Кроме питона на собеседовании мне задавали вопросы на общее понимание того, как работает интернет, спросили, как бы я реализовал в БД хранение иерархического каталога и неориентированного графа, какие я знаю веб-фреймворки и ORM, задали пару вопросов по js и css.


            1. Tyrel
              05.03.2017 17:05

              Спасибо! Сам поглядываю туда же.


              1. fireSparrow
                05.03.2017 17:05

                Пожалуйста, желаю удачи :)


    1. the_coder
      06.03.2017 15:03

      А я первую работу программистом получил в 38 :) Не большое увлечение программированием помогло мне подняться по карьерной лестнице и в денежном вознаграждении.


  1. enclis
    05.03.2017 15:35
    +4

    Расскажите лучше про «уникальные задачи», которые вы решали.


  1. Stiver
    05.03.2017 15:38
    -7

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

    Претензии например:
    1) Быстродействие. Вижу разницу в два порядка даже с Явой, многие задачи на нем из-за этого невозможны в принципе.
    2) Значимые whitespaces. Финиш полный, пришлось настроить перед каждым запуском автозамену табуляторов на пробелы, чтобы не ругался.
    3) Куцый язык с велосипедным синтаксисом (отсутствие ++ и --, нормального for цикла, запрет пустых блоков и
    т.д.)
    4) Еще более куцая стандартная библиотека. Понадобилась обычная TreeMap — вперед шерстить сеть на предмет чьих-то third-party.
    5) Какая-то каша с кодировками и строками, постоянные encode/decode
    6) Еще больший финиш с ООП/функциями/классами: self явным параметром, приватные функции через имя…

    Полное ощущение, что имею дело с каким-то игрушечным языком двадцатилетней давности.


    1. A-Stahl
      05.03.2017 15:49
      -18

      Так это и есть игрушечный язык. Для всяких небольших наколенных скриптов. Пере-bash/недо-С. Никто его для чего-то масштабного использовать не будет. Ну кроме тех, у кого совсем уже «питон головного мозга»:)


      1. vsapronov
        06.03.2017 03:21
        +3

        Компания Dropbox может с вами не согласиться


        1. crazylh
          06.03.2017 06:33
          +11

          Дропбокс после ухода Гвидо переписывает архитектуру на Go


          1. alan008
            06.03.2017 09:40
            +4

            Уже переписали давно. И частично еще на Rust.


            https://news.ycombinator.com/item?id=11283758


          1. hardtop
            06.03.2017 10:02

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

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

            А так — да, компилируемые языки работают быстрее, кто ж спорит то?


            1. 0xd34df00d
              06.03.2017 20:17
              +1

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


              На скриптовых языках в аналогичных условиях точно быстрее бы было?


              1. hardtop
                07.03.2017 09:34
                -1

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


                1. 0xd34df00d
                  07.03.2017 09:52

                  Ну, читабельность — вопрос привычки скорее, ИМХО, но куда уж короче? Там и так-то логики с гулькин нос.


                  1. hardtop
                    07.03.2017 10:18

                    Ммм, как то на заре интернета (1996) написал тучу кода на С — просто CGI приложение, которое форму показывало, принимало url-encoded строку, а потом выводило Hello %username%

                    Потом манной небесной показался Perl. Более ёмкий, но и более запутанный. Читаемость чужого кода стремилась к нулю.

                    Пробывал Java, но волею судеб там не было встроенной поддержки HTTP 1.1 (читай, нельзя было на одном IP делать несколько сервисов\сайтов). Ну и эта дурацкая тема — всё объект — ужасно.

                    Пробежавшись по всяким ASP и Coldfusion перешёл к PHP, в основном потому что легко было настроить всю связку Апач+mod_php+MySQL. Как язык, PHP может и не лучший, но средство разработки — вполне приемлемое. Читаемость — лучше, чем у Перла.

                    Но когда я перешёл в 2008 году на Python\Django — слезы радости текли по моей щетине. Компактный, читаемый, гибкий, мощный, продуманный и достаточно быстрый. Туча библиотек в комплекте. Лучшая документация! (чего тогда не хватало Руби и Рельсам)

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


                    1. 0xd34df00d
                      07.03.2017 17:38
                      +1

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


                      Как бы аналогичный код выглядел на питоне?


                  1. hardtop
                    07.03.2017 10:19

                    И кстати, а что делает код на гитхабе? Достает какую-то информацию из lasm.fm по артисту и обложку сохраняет?


                    1. 0xd34df00d
                      07.03.2017 17:37

                      Помогает обойти то, что в новой версии lastfm api (которая была выкачена пару лет назад, да) нет никаких средств получить фоточки исполнителя. Соответственно, получает запрос, говорит клиенту, какую страницу надо выкачать, клиент её выкачивает и отправляет обратно сервису, сервис выдирает ссылки на фотографии и возвращает список.


          1. lega
            06.03.2017 11:49
            +1

            Куда Гвидо ушел?, он вроде все ещё в дропбоксе.
            Если бы дропбокс начал бы с Go изначально, он бы никогда бы не «взлетел».


            1. 0xd34df00d
              06.03.2017 20:19
              +1

              Этому есть какие-то другие причины кроме той, что язык Go начал разрабатываться примерно в том же году, что «зарелизился» Dropbox?


    1. Akon32
      05.03.2017 16:02
      +5

      а что такого выдающегося все внезапно нашли в Питоне?

      Python позиционируется как простой и понятный язык и, вероятно, хорош для обучения (как первый язык).


      1. Stiver
        05.03.2017 16:15
        -5

        >> Python позиционируется как простой и понятный язык и, вероятно, хорош для обучения (как первый язык).

        Согласен, это вполне возможно. Для абсолютного новичка он будет понятнее и легче в освоении. Но копнуть в глубину и начинается… Жаловался профессионально работающим с SciPy/NumPy, ответ был: главное при работе с Питоном — это как можно больше вынести в C++ :)


        1. Akon32
          05.03.2017 16:33
          +9

          главное при работе с Питоном — это как можно больше вынести в C++ :)

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


        1. frol
          05.03.2017 18:44
          +7

          Не нужно забивать гвозди микроскопом. Если вам нужно получить абсолютный максимум производительности — не смотрите ни на питон, ни на джаву, ни на пхп, ни на джаваскрипт. Ваши языки — C и может быть C++/Rust. Однако, если ваша задача — внести интерактивность в web-страницу — Javascript (да, есть возможность писать на других языках и транслировать в JS, но ...). Python? Если твоя задача получить результат быстро (не в смысле быстрых рассчётов, а в смысле "на вчера", то Python здесь со своей экосистемой даст возможность этого достичь в кратчайшие сроки, а на C/C++ будете изобретать велосипед, в сотый раз изобретать пакетный менеджер/систему сборки/и прочие базовые утилиты). У большинства инструментов, которыми пользуется больше двух человек есть своя ниша, где они решают задачи эффективнее (быстрее/производительнее/безопаснее/...)


        1. Atabaska
          07.03.2017 12:30
          -2

          Что ж тогда не в ассемблер сразу? ;) Потеря точности при работе с числами с плавающей точкой в С++ толком не позволяет даже с простыми бухгалтерскими вычислениями справиться. ;)


          1. Atabaska
            08.03.2017 00:50

            >>> главное при работе с Питоном — это как можно больше вынести в C++


          1. Atabaska
            08.03.2017 01:08
            +1

            >>> Что ж тогда не в ассемблер сразу?

            -1? Вот интересно, кому мой комментарий мог не понравиться?

            Я, проггер с 21-летним стажем, тоже ныне, как и автор статьи, сорока лет отроду. Начинал с бэйсика на Корветах ещё в 1993 году. До 2005 года неплохо владел asm x86 и при работе с языками типа (Object) Pascal регулярно для критичных по времени исполнения рутин делал вставки на асме. Потом «забил».
            Да, Python (который мне лично очень нравится и по которому имею два сертификата), является интерпретатором. Да, он медленнее компиляторов. И что?.. Зато он проще в освоении. Понятнее в сопровождении чужих исходников и весьма продуктивен в плане скорости разработки.

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


            1. 0xd34df00d
              08.03.2017 02:40
              +1

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


              1. VolCh
                08.03.2017 10:55
                +1

                Меньше кода читать )


                1. 0xd34df00d
                  08.03.2017 19:51

                  APL и его производные, наверное, в таком случае идеальны?


      1. Dudki
        07.03.2017 12:31
        +1

        Вот по чесноку, я не программист, а просто пробую баловаться и баловство мое начиналось толком с С#. Хотелось потом было начать писать для веб под django, но после си шарпа питон казался чем-то вообще неудобоваримым. Месяцок мучений и выбор таки ушел к ASP.NET.
        Хотя, если сейчас преподавание азов переходит с паскаля на питон, то тут ура.


        1. tmnhy
          07.03.2017 14:28
          +1

          если сейчас преподавание азов переходит с паскаля на питон, то тут ура

          Ошибаетесь.
          Никлаус Вирт создавал своя ЯП с определенной целью — учить студентов программированию. Поэтому Паскаль так хорош для азов.

          Ну, а на практике всё зависит от преследуемой цели.

          Начиная учиться с Паскаль — человек научится программировать.
          Начиная учиться с Питон — человек научится писать программы на Питон.

          Небольшая, но разница есть.


          1. VolCh
            07.03.2017 14:46

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


            1. tmnhy
              07.03.2017 15:06

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

              Скажите, что оно ему и не нужно? Отчасти соглашусь. Но на собеседованиях в дев-компании для тех кто претендует на зп $2-3K очень любят давать классические задачки по поиску соответствий в строках, по сортировке и т.п. И не принимают решения с учётом особенностей языка… Как-то так.

              Но это, конечно не помешает заколачивать деньгу на джанге.


          1. Idot
            07.03.2017 14:54
            -1

            И в каком месте «научится писать программы на Питон» не является «научится программировать»?

            PS если кто не знает: Питон вообще-то тьюринг-полный.

            @VolCh: можно научиться писать программы на Паскале, но не научиться программировать

            Чё за чушь?! Паскаль тоже является тьюринг-полным, а следовательно умение писать программы на Паскале является умением программировать.

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


            1. VolCh
              07.03.2017 15:09

              умение писать программы на Паскале является умением программировать.

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


            1. tmnhy
              07.03.2017 15:27

              И в каком месте «научится писать программы на Питон» не является «научится программировать»?

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


            1. Idot
              07.03.2017 20:44

              Неадекватным фанатикам минуснувшим в Карму за сравнение ун-Лямблы с брейн-факом, не плохо бы сначала погулить что это такое https://zserge.wordpress.com/2011/01/26/unlambda-%D0%BC%D0%BE%D0%B7%D0%B3%D0%B8-%D0%BD%D0%B0%D0%B2%D1%8B%D0%B2%D0%BE%D1%80%D0%BE%D1%82/

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


              1. Atabaska
                08.03.2017 01:32

                Гы. ;)
                Для тех, кто не интересовался, классический пример.
                Программа на языке Brainfuck, печатающая «Hello World!»:

                ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
                .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
                ------.--------.>+.>.


                http://ru.wikipedia.org/wiki/Brainfuck

                P.S. Для обучения язык ТОЧНО не годится. Он, и по названию даже судя, скорее, для любителей эээ… головоломок, если прилично говорить.


                1. Idot
                  08.03.2017 12:12

                  Ну Hello World на unLambda выглядит обманчиво безобидно:

                  `r```````````.H.e.l.l.o. .w.o.r.l.di

                  А вот программа, которая выводит числа Фиббоначи, выглядит вот так:
                  ```s``s``sii`ki
                  `k.*``s``s`ks
                  ``s`k`s`ks``s``s`ks``s`k`s`kr``s`k`sikk
                  `k``s`ksk


                1. Source
                  08.03.2017 14:55
                  +1

                  Ну, для обучения тому, как работает машина Тьюринга, Brainfuck вполне сойдёт. Несмотря на свою эзотеричность, это не самый бесполезный ЯП.


            1. Atabaska
              08.03.2017 01:27
              -3

              ОМГ…
              Как научился в 1994, так и продолжаю писать на Pascal (правда уже лет 18, как перешёл на Object Pascal).
              И «студенческость» Паскаля не сильно мешала мне в одиночку реализовывать части в весьма сложных коммерческих проектах. И не помешала мне освоить и использовать при надобности другие языки (asm x86, VB, C/C++, Java, Python, PHP и прочие).
              Что за дискриминация языков? ;)
              >>> Паскаль тоже является тьюринг-полным, а следовательно умение писать программы на Паскале является умением программировать.
              Именно.
              И, порой, это даже дело вкуса. Вот не нравился мне никогда Си-подобный синтаксис, поэтому не перешёл на Java или C#. А Python, кстати, понравился именно синтаксисом. ;)


              1. grossws
                08.03.2017 05:02
                +3

                Когда я вижу человека пишущего C/C++ в контексте освоенных языков, то могу смело, с 95 достоверностью, предполагать, что он не знает ни си, ни плюсов.


                1. Idot
                  08.03.2017 07:41
                  -3

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


                  1. grossws
                    08.03.2017 19:57

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


                    1. Idot
                      08.03.2017 20:57
                      -2

                      Это если на них много и углублённо пишешь. А чаще всего C и C++ учат «чтобы знать», потому что это классика, и знание этих языков помогает лучше понимать языки от них производные. Так как на работе чаще всего используется какой-нибудь другой язык, а знакомство C и C++ просто полезно, если вдруг что-то понадобилось срочно исправить в коде на незнакомом языке происходящем от C/C++ :)


                      1. grossws
                        08.03.2017 21:10
                        +2

                        Боюсь, что мы просто сильно по разному понимаем что такое "изучать язык".


                        В моём представлении от "иметь представление о базовом синтаксисе" и "быть способным читать и писать простой код" до "более-менее изучить язык" лежит ещё долгая дорога в несколько лет минимум с регулярной практикой на это языке с использованием соответствующей инфраструктуры, подходов и библиотек. Т. е. если человек 10 лет пишет на Си с классами, то к C++ он отношения почти не имеет.


                        1. Source
                          08.03.2017 23:14

                          Это извечный философский вопрос: Что значит "изучил язык"?
                          Вопрос этот не ограничивается языками программирования… и для естественных языков придумали такое понятие как уровень владения. И по факту с годами это почти не коррелирует. Точнее, очевидно, что для освоения языка на уровне С2 требуется несколько лет. Но обратное не верно, т.е. можно десятилетиями активно и успешно пользоваться языком, но не владеть им на уровне C2. Более того, практическая ценность такого уровня владения весьма спорна.
                          То же справедливо и для ЯП, изучить язык на уровне B2 достаточно для решения более 90% практических задач, вне зависимости от чьих-то представлений.


                        1. Idot
                          08.03.2017 23:17
                          -2

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


                          1. 0xd34df00d
                            10.03.2017 21:42
                            +1

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


              1. Idot
                08.03.2017 09:12

                не нравился мне никогда Си-подобный синтаксис, поэтому не перешёл на Java или C#

                А мне наоборот синтаксис C очень понравился (а ещё больше понравился APL — жаль на нём не довелось писать).


                1. Atabaska
                  08.03.2017 12:20

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


            1. Atabaska
              08.03.2017 01:39

              Да и, вообще, дискуссия потиху скатывается к холивару, а-ля «Pascal vs C++».


      1. Leo_Gan
        15.03.2017 08:39
        +1

        На Python пишут в университетах. Поэтому на нем масса библиотек по математике, разным наукам, по ML. Масса отличнейших библиотек. Пишут эти библиотеки люди со степенями и мозгами. Как раньше в 80ые писали на том же Фортране. Поэтому среднее качество кода выше среднего по Джаве и СиШарпу, есно за пределами .NET библиотек.
        Кроме того у него замечательные примитивы по работе с коллекциями. Вроде просто, но результат ощущается быстро и практически везде.
        По поводу скорости. Везде (?), где она нужна, есть библиотеки, скомпилированные на С.
        Минусы тоже есть. Меня достает то, что всегда надо выбирать 2 или 3 версию надо/можно использовать :)


        1. am-amotion-city
          15.03.2017 11:42

          Математики, скорее, выбирают R, в питон все это добро бэкпортируется.


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


          Примитивы по работе с коллекциями примерно одинаковые во всех 10–15 языках, которые я знаю на достаточном для суждения уровне.


    1. gorodnev
      05.03.2017 17:10
      +16

      1. Быстродействие. Не могли бы Вы поделиться списком задач, которые "на нем из-за этого невозможны в принципе".
        2,3 — без комментариев.
      2. Чем Вам не подошёл обычный dict? Хорошо, а OrderedMap?
      3. Тут ладно, есть нюансы детских болезней и разницы веток 2.х и 3.х
      4. Как это обычно бывает, у Вас просто сложилось своё определенное понимание ООП. Причём существование иных толкований Вы не принимаете. Откройте для себя толкование ООП от Алана Кея, будете сильно удивлены.

      Ну и Вам, очевидно, Python кажется не удобным с точки зрения программиста на Java. Python/Java/Clojure/whatever — не плохой, он просто другой, со своими парадигмами и идиомами.


      1. Stiver
        05.03.2017 18:00
        -4

        1) Пример: пару дней назад нужно было посчитать коэффициенты похожести (similarity) для некоторого количества строк между собой. Для 3К строк это заняло на Питоне около 5 минут. Для 10K даже начинать не стал, перевел на Яву, сделало за секунды.
        2) dict же не упорядоченный? Мне нужна была map с порядком на ней. По OrderedMap для Питона у меня поиск ничего не находит, уточните пожалуйста.
        3) Да нет, иные толкования меня вполне устраивают. Их воплощение смущает, неудобно же.

        >>Ну и Вам, очевидно, Python кажется не удобным с точки зрения программиста на Java.

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


        1. splav_asv
          05.03.2017 18:09
          +3

          2) Вероятно имелся в виду OrderedDict — Python3 OrderedDict


          1. lega
            05.03.2017 18:28

            Ещё, в python 3.6 стандартный dict хранит порядок.


            1. DaneSoul
              05.03.2017 19:37

              Ещё, в python 3.6 стандартный dict хранит порядок.

              А можно ссылочку на источник?
              Пример в документации https://docs.python.org/3.6/library/stdtypes.html#dict говорит об обратном.


              1. tmnhy
                05.03.2017 19:47
                +2

                https://docs.python.org/3/whatsnew/3.6.html

                The dict type now uses a “compact” representation based on a proposal by Raymond Hettinger which was first implemented by PyPy. The memory usage of the new dict() is between 20% and 25% smaller compared to Python 3.5.

                The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon (this may change in the future, but it is desired to have this new dict implementation in the language for a few releases before changing the language spec to mandate order-preserving semantics for all current and future Python implementations; this also helps preserve backwards-compatibility with older versions of the language where random iteration order is still in effect, e.g. Python 3.5).


                1. DaneSoul
                  05.03.2017 19:57

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

                  The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon


                  Аспект сохранения порядка в новой реализации рассматривается как деталь реализации и на него не следует полагаться.


                  1. lega
                    05.03.2017 20:12
                    -1

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

                    Гарантий порядка нет потому что если вы запустите программу в 3.5 или более старых версиях (совместимость 3.x), то будет работать не так.


          1. Stiver
            05.03.2017 18:28

            >> 2) Вероятно имелся в виду OrderedDict — Python3 OrderedDict

            Его я видел, но там не натуральный порядок элементов, а порядок добавления, что совсем из другой оперы. В итоге я использовал sorteddict отсюда http://www.grantjenks.com/docs/sortedcontainers/


        1. tmnhy
          05.03.2017 18:19
          +9

          Для 3К строк это заняло на Питоне около 5 минут. Для 10K даже начинать не стал, перевел на Яву, сделало за секунды.


          Код покажите? Интересно.


          1. Stiver
            05.03.2017 18:49
            -9

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


            1. Fiery_Ice
              05.03.2017 22:56
              +11

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

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

              new_line = old_line[1:]
              
              что на каждый символ заново аллоцировало еще один участок под почти всю строку.

              Собственно для прочесывания строк и/или массивов байтов — стоит использовать memoryview (https://docs.python.org/3/library/stdtypes.html#memoryview) над нужным вам контейнером. Оно, используя все тот же синтаксис
              new_line = old_lint[1:]
              
              — не будет делать новых аллокаций, и является неким аналогом адресной арифметики из C/C++.

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


        1. fireSparrow
          05.03.2017 22:31
          +6

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

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

          5. К третьему питону уже никакого encode-decode не осталось, вместо множества кодировок — один юникод.

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


          1. Stiver
            05.03.2017 23:52
            +1

            1. Охотно допускаю и был бы очень рад. Вбил сейчас «Python performance» в Гугл и получил вот эту страницу: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
            Тоже алгоритмическая задача, те же самые два порядка разницы к C++/Java (исходный код прилагается). Хм…

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

            Что касается синтаксиса, форматирования и пр. — дело тут не во вкусовщине. Мне все равно, ставить скобочки или двоеточие, писать else if или elif. Дело в неудобствах — например, отлаживая алгоритм, я часто комментарю/вытаскиваю обратно строки. Но Питон почему-то не дает оставить пустой блок. То есть мне нужно дополнительно вписывать туда каждый раз «pass», дурная работа же. Почему нет инкрементов, чье отсутствие размножает строки вида a+=1? Это ведь простейшие вещи, самые основы, на которые приходится наталкиваться постоянно и которые крадут время.


          1. grossws
            06.03.2017 00:52
            +3

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

            Спасибо, рыдаю. Стандартная библиотека python'а, как многие отмечали, это место куда слоныбиблиотеки приходят умирать. Там есть огромное нагромождение кода, который будет жить там вечно ради совместимости, хотя для python'а это не такая священная корова, как для java.


            Но вообще в python std странностей выше крыши. Например, есть парсер для json'а, но он не умеет парсить в потоке (т. е. json.read(file_like) внутри сделает просто json.reads(file_like.read())). Или есть работа с датами, но она не работает с датами до 1900 года в 2.7, но работает в 3.2+.


            С точки зрения использования внешних зависимостей я бы не рекомендовал обобщать java-мир. Он очень разный. Кто-то ради IOUtils.closeQuietly притащит commons-io в проект, кто-то завендорит jackson/netty/resteasy/weld/whatever целиком.


        1. tomzarubin
          06.03.2017 13:18

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


      1. Akon32
        05.03.2017 18:24

        к п.2: Например, я не вижу аналога метода TreeMap.floorEntry(key) в Python'е. Класса OrderedMap вообще не нашёл, а OrderedDict — это по-видимому аналог java.util.LinkedHashMap, а не TreeMap.


        1. splav_asv
          05.03.2017 18:44

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


    1. lega
      05.03.2017 18:59

      1) Быстродействие. Вижу разницу в два порядка даже с Явой, многие задачи на нем из-за этого невозможны в принципе.
      И для java многие задачи невозможны*. «Инструмент под задачу» ©.
      А скорость разработки, в среднем, гораздо ниже чем с питоном, например веб-сервисов. Да и по быстродействию может проиграть питону если для этой задачи в нем использовать либу на С/С++.

      А ещё, помню, java проиграл питону по скорости выполнения чуть ли не на порядки из-за медленного старта.


      1. Lailore
        05.03.2017 19:16
        +1

        Если так сравнивать, то питон рвет в клочья c++ из-за компиляции.


        1. lega
          05.03.2017 19:38

          Сравнивалась не скорость компиляции, а время работы готового приложения т.е. для С++ был готовый бинарник.


          1. Lailore
            05.03.2017 19:43
            +1

            Так у java, как и у c# медленный страт из-за jit компиляции. По крайней мере в c# это можно поборать.

            Или я что-то не так понял?


      1. pelenthium
        06.03.2017 09:01

        Скорость разработки веб-сервисов? Вы начинаете сравновать не языки, а фреймворки, django или flask, несомненно клевые и удобные, но и у java есть, например, Spring boot. Так что выбор на чем запилить веб сервис — дело привычки и вкуса.


        1. lega
          06.03.2017 11:56

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


        1. raacer
          07.03.2017 15:34
          +1

          Вы правы. Хочу лишь заметить, что гибкость языка определяет возможную выразительную мощность фреймвёрка. Например, такой API, который предоставляет SqlAlchemy и Django ORM, совершенно невозможно реализовать ни на C++, ни на PHP. А от этого сильно зависит простота и скорость разработки.


    1. teleghost
      05.03.2017 23:21

      >>что такого выдающегося в Python?

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

      питон *хреново* декомпилируется; уверяю, это плюс гораздо чаще, чем может показаться (с радостью окажусь неправ, но дайте ссылок на нормальный декомпилятор)

      я пробовал много языков, мне питон приглянулся (хотя это эмоциональное утверждение), однако уже более лет 10 погоду делает не язык, а библиотеки и компоненты;)


      1. Stiver
        06.03.2017 00:05

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

        Это называется «каша из топора» :) Если код на C/C++, то обвязку на чем угодно сделать можно. Для математики в Matlab удобно, например.

        >> питон *хреново* декомпилируется; уверяю, это плюс гораздо чаще, чем может показаться

        Серьезно есть потребность в декомпиляторе питона? Если да, и еще не существует, то можно написать,- пару месяцев как-нибудь получится выделить. Но очень сомнительно…


        1. splav_asv
          06.03.2017 00:39
          +1

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


        1. teleghost
          06.03.2017 01:22
          -1

          обвязку на чем угодно сделать можно

          поверьте, в той задаче, о которой я здесь не расскажу, не на чём угодно:) питон доказал отличную переносимость по платформам, работу в реальном времени и очень неудобную реверсную инженерию; для задачи это оказалось очень важно


          можно написать,- пару месяцев как-нибудь получится выделить

          провокационное заявление; хотя нет ничего невозможного, но восстановить исходный код (как в Java или .NET) вряд ли удастся


      1. am-amotion-city
        06.03.2017 09:29
        +1

        питон хреново декомпилируется; уверяю, это плюс

        Щито? Плюс? Вы оглянитесь, тут типа XXI век наступил.
        Или вы из тех неуловимых Джо, которые очень боятся, что их код хоть раз, да попробуют декомпилировать Злые Дяди?


        более лет 10 погоду делает не язык, а библиотеки и компоненты

        Типичная глупость заблуждение программиста-эгоиста. Библиотеки и компоненты можно написать. Погоду делают скорость исполнения и переносимость. То есть, если очень упростить, либо качество виртуальной машины (java, erlang, javascript), либо способность компилятора правильно все «объяснить» процессору (c, cpp, rust, go, crystallang).


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


        При всей моей любви к скриптовым языкам, они хорошо годятся в качестве прототипных (dropbox на коленке, twitter на коленке), но как только дело доходит до реального продакшена, все переписывают на «взрослые» языки.


    1. Ogoun
      06.03.2017 22:23
      +1

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

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

      Да, в новой версии можно указать типы, но кто из питонистов будет это делать?

      А в качестве скриптового языка для разовых задач он прекрасен, это да.


  1. Phizio
    05.03.2017 15:40
    +1

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


    1. kolpeex
      05.03.2017 16:15

      Хм. Вроде описано же все: нравилось программирование, текущая профессия теряет актуальность, а в новую довольно низкий порог вхождения.


  1. Akon32
    05.03.2017 15:58
    -3

    Удивительно, но сегодня я увидел ВК рекламу "Как выучить программирование после 40". И тоже Python. Это наводит на странные мысли о связи этих статей.


    Трудно понять мотивацию к.т.н., директора, претендующего на уровень junior'a.


    работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!

    Хороший инженер может быть настолько не уверен в своих способностях?


    У автора хочется поинтересоваться — как успехи? Обычно считается, что чтобы стать профессионалом в какой-либо области, требуется 10 лет в сфере. Вы готовы потратить 10 лет, чтобы выйти на уровень даже ниже вашего текущего?


    1. Source
      05.03.2017 18:25
      +5

      работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!
      Хороший инженер может быть настолько не уверен в своих способностях?

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


    1. nurik_6
      06.03.2017 15:05

      10 лет, это чтобы стать гуру наверное, особенно если мы говорим про IT, где обмен опытом происходит намного быстрее, чем в других отраслях. Если брать в расчет «правило 10000 часов» — то где-то 4-5 лет будет вполне достаточно чтобы стать высококвалифицированным профессионалом.ИМХО.


      1. Akon32
        06.03.2017 15:58

        Да, именно "правило 10000 часов" я и имел в виду.


    1. MTyrz
      06.03.2017 15:05

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

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


    1. Samael_96
      06.03.2017 15:06

      Хороший инженер может быть настолько не уверен в своих способностях?


      Если ты узкоспециализированный инженер, то не в способностях дело а в отсутствии спроса на твою профессию.
      У меня сходная проблема, выслужился из простого монтера до инженера высшей категории, и толку? Если ты специалист в узкой отрасли которая к тому же умирает? Куда идти? Через 10 лет она точно загнется, и куда идти уже в 50 лет? В 40 лет есть хоть шанс вписаться в струю.
      Автор правильно написал, сейчас нет профи, все имеют средний уровень, по причине того что технологии очень быстро развиваются, и если ты был в чем то профи 10 лет назад, то сейчас ты один среди многих, так как за 10 лет успело появится много нового и даже успеть отмереть.


      1. Akon32
        06.03.2017 16:16

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

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


        Из-за быстрого развития и отмирания технологий ИТ-специалисты больше развиваются "в ширину", а не "в глубину". Это не значит, что хороших спецов вообще нет.


  1. IliaSafonov
    05.03.2017 16:10
    -2

    Рассмотрим финансовый вопрос. Да, при смене работы я существенно потеряю в деньгах
    Интересно, что по этому поводу думает семья?


    1. VolCh
      05.03.2017 19:22
      +4

      В нормальной семье поддержат решение сменить профессию с надоевшей на вдохновляющую, даже если это связано с каким-то падением уровня жизни (в разумных пределах)


      1. vadim1406
        06.03.2017 15:07
        +1

        Нормальная семья — это какая? :) Если говорить языком абсолютных цифр, то расходы в Москве (а автор отсюда), то на семью из трех человек, чтобы жить более-менее (ипотека/съем квартиры, хватало на еду, шмотки средние, отдых пару раз в год, образование ребенку), то надо 200 000 р, т.е. каждый взрослый должен получать по 100 тыс. рублей. Это при условии, что ребенок один и он большой (>7 лет), т.е. может оставаться дома один и не надо его в 6 часов забирать с продленки или из детсада.
        Junior питон разработчик столько получает? Если да, и жена получается столько же — то прекрасно. Если жена получает больше, то вообще замечательно — можно даже никуда и не устраиваться — рисковать и уходить во фриланс.
        А если жена не работает или получает 50 000 р? Тогда все эти светлые мечты о программировании разбиваются о быт…
        PS Просто наболело :)


        1. VolCh
          06.03.2017 17:30
          +1

          то на семью из трех человек, чтобы жить более-менее (ипотека/съем квартиры, хватало на еду, шмотки средние, отдых пару раз в год, образование ребенку), то надо 200 000 р

          Есть подозрение, что уж квартирный вопрос у автора решён. И вообще ваше "более-менее" — это уровень заметно выше среднего.


        1. romanegunkov
          06.03.2017 21:58
          +1

          В Москве многие живут более-менее и с двумя детьми, далеко не у всех доход 200к+ на семью.


        1. vasiliysenin
          07.03.2017 10:47
          +2

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


          1. 0xd34df00d
            07.03.2017 17:53

            Уровень безработицы понизится, вопрос с тем, куда лишних людей девать по мере автоматизации, не поднимется, одни плюсы!


        1. sentyaev
          07.03.2017 15:50

          Можно же еще и подрабатывать. Было бы желание.


  1. am-amotion-city
    05.03.2017 16:16
    +8

    У вас все получится, прекрасно понимаю вашу мотивацию, желаю всяческих успехов.


    На бормотание дурачков в комментариях не обращайте внимания: тут хабр, тут с некоторых пор так принято.


    Чтобы стать профессионалом их уровня вам понадобится от силы год.


    Уще раз успехов и удачи!


  1. biblelamp
    05.03.2017 16:23

    Пробовал Python некоторое время назад — язык очень понравился. Правда сейчас я изо всех сил налегаю на Java. Что до возраста и своего рода возрастной дискриминации в IT (а может и не только там) — полностью согласен с наблюдениями автора.

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


  1. Mugik
    05.03.2017 16:37
    -18

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

    Машин лёрнинг это не питон, это суровый матан, к тому же на питоне там прямо никто не сидит и не пишет, там опять же нужен хороший си и вообще нужно как говорят «шарить в матане», читать статьи (в день по 2 статьи это норма).

    Я бы на самом деле попробовал, да, вы попробуйте поработайте программистом, может и поймёте, что авиация это не плохо на самом деле.

    Просили мнение — вот оно.


    1. fireSparrow
      05.03.2017 16:46
      +1

      Как у вас всё мрачно :)


    1. dom1n1k
      05.03.2017 16:54
      +11

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


    1. mrobespierre
      05.03.2017 17:00
      +1

      вот вы человека даже не видели, а так лихо за него решили, что потянет, а что нет
      выбор неразумный, Python никогда не будет хорошим первым языком
      Яндекс и Mail.ru запилили на одном известном сайте бесплатные курсы по плюсам, уровень такой, что умственно-отсталые школьники справятся, инженер и подавно
      по сям круто поможет стенфордский курс «programming paradigms» (есть на их youtube канале)
      было бы желание
      p.s. авиастроение в России устроено так, что его нет


      1. white4dog
        06.03.2017 15:07

        а можно ссыль на курсы? Помоложе чем автор, да и не авиаконструктор,
        но все же примерно в схожей с ним ситуации.Задумываюсь, что лучше
        учить.
        Был бы признателен за ссыль



      1. Eudokimoff
        06.03.2017 15:08

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


        1. mrobespierre
          06.03.2017 16:14

          да, именно их
          начинать с c++, возможно, будет тяжело, но зарядившись компилятором и терпением, можно превозмочь
          если вообще не имеете представления о программировании, попробуйте посмотреть на Ruby, мне он показался очень простым и наглядным (хотя это очень субъективно, могло повлиять то, что я уже немного знал Perl, которым вдохновлялся автор Ruby), кроме того многие современные языки (например Swift от Apple) вдохновлялись Ruby, и будет несложно перейти
          обязательно попробуйте SoloLearn: Learn to Code (там можно быстренько пройти курс молодого бойца по разным языкам и сравнить)


          1. Eudokimoff
            07.03.2017 00:48
            +1

            Про Ruby конечно же слышал, как и про фреймворк Ruby on Rails, детище бывших 37signals. Но если и Ruby лёгкий, и Python лёгкий, почему же вы советуете первый и отказываете второму? Да, я прочитал комментарии, тут каждый второй не поленился описать плюсы Python, и каждый первый при этом — его минусы, но они есть и у Ruby.
            С другой стороны, как я понимаю, оба этих ЯП по сравнению с С++ и тем более с С дают новичку возможность очень быстро научиться собирать свой первый конструктор — это как Лего против советских металлических :) А в дальнейшем всё равно лучше изучить C++. Но интегрировать Python и C++ вроде как легче, чем Ruby и C++, тем самым быстрый старт верхом на питоне и дальнейшая интеграция его с С++ даст большую эффективность, чем бег по «рельсам» за этим локомотивом в лице С++:) Если я где-то заблуждаюсь, то срубите одну из этих трёх сосен :)
            SoloLearn установил, спасибо, буду пробовать.


            1. mrobespierre
              07.03.2017 02:44
              +2

              Ruby не Rails, Rails не Ruby. Rails — классный фреймворк, который существенно повлиял на веб. В Python тоже есть свой RailsDjango. Но Ruby гораздо больше, чем Rails. Попробуйте поискать видео, в котором автор rake рассказывает, как он написал аналог make на Ruby за 5 минут. Главный, но далеко не единственный плюс Ruby — писать на нём легко, приятно и естественно, что прямо сказывается на мотивации новичка.
              В Ruby действительно всё является объектом, и вот такие штуки: 13.to_s.length.nil? помогают быстрее разобраться с ООП.
              В Ruby изящно реализовано метапрограммирование (смогут все).
              С точки зрения же C/C++ практической разницы между Python и Ruby нет.


              1. Eudokimoff
                07.03.2017 09:37

                Да, разницу понимаю, и про Django и Flusk я слышал. Видео rake не нашёл, но понял, что речь о компиляторе. Написать что-то новое и полнофункциональное за 5 минут — это круто, конечно.

                Вы и моя любознательность заставили меня прошерстить документацию для того, чтобы понять, что же значит 13.to_s.length.nil?. Как я понял, to_s превращает 13 в строку, и всё это предназначено для выяснения, не нулевая ли (nil) длина (length) у 13, на что Ruby ответит False. В Python же за это отвечает

                 if len(13) == 0:
                    print('the list is empty')
                
                .
                Если всё верно, то синтаксис Python мне почему-то кажется более понятным. Безусловно, если разобраться, то всё будет понятным, но я-то как раз не разбираюсь и это типа взгляд со стороны.

                Господин Бешеная гиена (думаю, поймёте правильно с таким ником :)), я ни в коем случае не спорю — мне интересно говорить об этом, но не с кем) Вообще Хабр читаю уже лет 5, аккаунту уже 4 с лишним года, но мой первый комментарий — вам :)


                1. maximkou
                  07.03.2017 13:25

                  mrobespierre, как я понял, и не говорил, что код на Ruby понятнее/красивее (ибо красота вещь субъективная). Он показал пример, демонстрирующий, что ООП в Ruby ярче выражен, нежели в Python. Да даже ваш собственный контр-пример это показывает.


                  1. Eudokimoff
                    07.03.2017 16:24

                    А, ну тогда я что-то начинаю понимать. Правда, пришлось для этого прочитать основы ООП.
                    Судя по всему, под выраженностью ООП в данном примере имеется ввиду видимая структурированность 13.to_s.length.nil?, где, если я не ошибаюсь, 13 — это объект, to_s — метод, который отнесет объект к классу строк, length и nil — методы. Поправьте, если что не так.
                    Но вот осознать преимущество этого над тем же Python мне пока не дано :) Может, если только код так более читабелен и понятен?
                    Вообще, такие вот разговоры очень сильно мотивируют и подталкивают к изучению)


                    1. mrobespierre
                      07.03.2017 16:48

                      если всё упростить, то:
                      1. в Ruby всё является объектом
                      2. каждый стейтмент что-то «возвращает» в результате своей работы
                      сложив всё вместе получим: 13 — это объект типа int и у него нет метода length, но последний есть, например, у string. метод to_s объекта типа int вернет совершенно новый объект типа string, чей метод length вернет нам снова int, у которого есть метод nil? (который есть вообще у всего в Ruby). преимущество становится очевидным, когда вы делаете сортировку в обратном порядке в Ruby с помощью array.sort!.reverse!, а в другом языке по-другому


                      1. Source
                        07.03.2017 17:19
                        +1

                        Пожалуйста, прекратите позорить Ruby своими примерами… Никто в здравом уме не будет так делать сортировку в обратном порядке.
                        Для демонстрации цепочек вызовов прекрасно подходят ActiveRecord, Ransack и т.д., проще говоря, те случаи, где уместен паттерн Fluent Interface.


                        1. mrobespierre
                          07.03.2017 17:30

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


                          1. Source
                            07.03.2017 17:43
                            +2

                            Пфф, а что с ней так? Зачем делать то, что будет медленнее, когда сделать нормально не составляет никакого труда:
                            array.sort! {|a, b| b <=> a}
                            Зачем писать белиберду "13.to_s.length.nil?" в качестве примера? Или Вы поставили себе задачу показать, как не надо писать на Ruby?


                            1. mrobespierre
                              08.03.2017 01:49

                              Ну если вы пролистаете ветку вверх, то увидите, что мы обсуждаем хороший вариант первого языка для человека, которому интересны C/C++. Мой посыл был в том, что Ruby — как раз такой вариант. Примеры я пытался привести такие, чтобы даже не программист мог понять (т.е. просто знания английского достаточно для понимания кода, это ведь здорово для того, кто никогда не программировал, правда?). Вы, судя по всему, — рубист и могли бы сами привести примеры изящные и лаконичные примеры кода на Ruby (так чтобы две строки, а не куски Rails, который сишнику, наверное, не пригодится), но вместо этого вы постарались меня дискредитировать, указав на недопустимость сортировки массива из 3-х элементов в 2-х строчной программе в 2 прохода и подтолкнуть человека к Python. Хорошего дня.


                              1. Source
                                08.03.2017 15:33
                                +2

                                Ruby — неплохой вариант для начинающих. Тут я не спорю.
                                Однако, примеры Ваши даже программистам не понять… Потому что они нелогичны! Посмотрите, в какой ступор Вы вогнали бедного Eudokimoff своим "13.to_s.length.nil?".
                                Я уверен, что любой пример должен делать что-то осмысленное, ну например ASCII-табличку печатать:


                                puts (32..127).map(&:chr).each_slice(16).map(&:join)

                                или


                                puts (32..127).map(&:chr).join.scan(/.{16}/)

                                 !"#$%&'()*+,-./
                                0123456789:;<=>?
                                @ABCDEFGHIJKLMNO
                                PQRSTUVWXYZ[\]^_
                                `abcdefghijklmno
                                pqrstuvwxyz{|}~ 

                                Это он сможет переписать на Python и сравнить… А код, напрочь лишённый смысла, нельзя сравнить с кодом на другом языке.


                                1. tmnhy
                                  08.03.2017 20:29

                                  Как-то так, если поставить целью в одну строку )

                                  print('\n'.join([''.join([chr(x) for x in range(x, x+16)]) for x in range(32, 128, 16)]))
                                  


                                  1. Source
                                    08.03.2017 23:36

                                    Ну, это Вы немного схитрили… заранее подготовив range.
                                    Аналог второго варианта на Ruby выглядит на Python так:


                                    import re
                                    print '\n'.join(re.findall('.{16}', ''.join(map(lambda x: chr(x), range(32, 128)))))

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


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


                                    1. splav_asv
                                      09.03.2017 00:29
                                      +1

                                      lambda x: chr(x) можно заменить на chr, получится менее страшно:

                                      import re
                                      print '\n'.join(re.findall('.{16}', ''.join(map(chr, range(32, 128)))))
                                      


                                      1. tmnhy
                                        09.03.2017 00:34

                                        получится менее страшно

                                        И рекомендациям pep8 по длине строки соответствует.


                                      1. Source
                                        09.03.2017 01:18

                                        Спасибо, отличное уточнение. Буду знать, что в Python тоже так можно сокращать.


                                    1. tmnhy
                                      09.03.2017 00:29

                                      Почему вы отдали предпочтение

                                      ''.join(map(lambda x: chr(x), range(32, 128)))
                                      

                                      а не
                                      ''.join([chr(x] for x in range(32, 128)])
                                      


                                      1. Source
                                        09.03.2017 01:17

                                        Я на Python не программирую, чисто на уровне чтения читабельного кода с ним знаком, поэтому просто взял вариант ближе к классическому набору map/filter/reduce. Хотя генераторы в Python пользуются большой популярностью, подозреваю, что они там тупо быстрее работают :-)


                                        1. tmnhy
                                          09.03.2017 09:20

                                          подозреваю, что они там тупо быстрее работают :-)

                                          Ваш пример с регэкспом замена map на list comprehension ускорит примерно на 25%. )


                                    1. lega
                                      09.03.2017 15:51

                                      P.S. В любом случае, однострочники на Python лучше даже не пытаться писать
                                      Помнится Гвидо в одном выступлении сказал про это, что питон это не перл, и читаемость тут важнее.


                                      1. Source
                                        09.03.2017 17:08

                                        Ну, строго говоря, хорошо читаемый язык от плохо читаемого отличает в том числе и читабельность однострочников. Другими словами, write-only однострочник можно на чём угодно написать… А вот такой однострочник, который читался бы не хуже чем verbose-вариант, очень мало языков позволяют писать… и Python, к сожалению, к ним не относится. В основном, тому виной плохо согласованная стандартная библиотека, которая так и не определилась процедурная она или объектно-ориентированная, в каком порядке должны следовать аргументы и т.д. В принципе, такие же проблемы есть и в PHP, поэтому с PHP на Python можно легко перейти… Но перейти с того же Ruby на Python крайне сложно, т.к. к хорошему быстро привыкаешь :-)
                                        Замечу, что помимо Ruby есть ещё много языков с прекрасно продуманной стандартной библиотекой, например C#, Haskell, Elixir.


                                        1. splav_asv
                                          09.03.2017 23:28

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


                                1. am-amotion-city
                                  09.03.2017 08:40
                                  +1

                                  Всегда лучше использовать Array#pack вместо map(&:chr), здесь это значения не имеет, но, типа, правило хорошего тона.


                                  puts (32..127).each_slice(16).map { |a| a.pack('C*') }


                                  1. Source
                                    09.03.2017 11:34

                                    Ну так-то да, особенно если не ASCII, но просили пример попроще, чтобы новичку легко читалось…
                                    Кстати, для демонстрации возможностей можно ещё и по символам range использовать:


                                    puts (' '..'~').each_slice(16).map(&:join)


                1. Source
                  07.03.2017 16:53

                  13.to_s.length.nil? — это абсолютно бессмысленный код… видимо, с целью показать, что методы можно объединять в цепочки.


                1. mrobespierre
                  07.03.2017 17:01
                  +1

                  1. то самое видео про rake
                  2. компилер за 5 минут не написать. и за 5 часов тоже.
                  3.

                  if len(13) == 0:
                      print('the list is empty')
                  

                  код работать не должен, насколько я понимаю, откуда у int len? и вам придётся делать второй if, вложенный в первый

                  4. под капотом python тоже превращает len(13) в 13.len (или 13._len_, или 13.__len__, я точно не помню), но скрывает это от кодера, Python в первую (но только в первую) очередь подразумевает copy-and-paste «единственно верной реализации» из документации, а не понимание того, как она работает на самом деле


                  1. Eudokimoff
                    07.03.2017 19:50

                    1. Спасибо.
                    3. Код нашел на стаковерфлоу, плюс смотрел документацию, не знаю насчет работы с int (утром я ещё не знал, что это), но с абстрактной переменной 'a' работать должен.
                    4. Да, я видел развернутую версию этого метода. Т.е. получается, что отчасти Python — это такой скрипт-кидди ЯП, когда копипастишь, всё работает, но ты не знаешь, как? :) Я утрирую, конечно, и понимаю, что это сделано наверняка для того, чтобы язык был более простым.
                    5. За коммент выше и упрощение в объяснении спасибо, помогло.
                    Я чувствую, что меня скоро с такими дилетантскими познаниями совсем заминусуют, судя по комментам выше, да и вас отвлекать более не хочется. Спасибо, я многое узнал, доверюсь и буду учить Ruby.



            1. grossws
              07.03.2017 11:35
              +1

              оба этих ЯП по сравнению с С++ и тем более с С дают новичку возможность очень быстро научиться собирать свой первый конструктор

              У вас тут инверсия затесалась. Си проще плюсов.


              Но интегрировать Python и C++ вроде как легче, чем Ruby и C++, тем самым быстрый старт верхом на питоне и дальнейшая интеграция его с С++ даст большую эффективность, чем бег по «рельсам» за этим локомотивом в лице С++:)

              С плюсовыми интерфейсами интегрироваться и там, и там мрак. Другое дело с сишными: более-менее удобно и там, и там. На ruby несколько удобнее, меньше boilerplate'а, см http://guides.rubygems.org/gems-with-extensions/ и https://docs.python.org/3/extending/extending.html. Хотя многие сейчас используют libffi и не жужжат, если производительность устраивает.


    1. Vasyutka
      05.03.2017 19:26
      +2

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

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


      1. grossws
        05.03.2017 20:08
        +1

        ещё вариационка, но она не страшна ни пол раза


      1. 0xd34df00d
        06.03.2017 02:38

        Это дейта сайенс, когда from scipy import svn.


        Я бы не сказал, что, например, http://pub.ist.ac.at/~chl/papers/pentina-alt2015.pdf или http://pub.ist.ac.at/~chl/papers/pentina-nips2015.pdf столь уж тривиальны.


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


        1. Vasyutka
          06.03.2017 11:45

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

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


          1. grossws
            06.03.2017 13:04

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


            @0xd34df00d, ещё не упомянули классическое развлечение с ошибками в статьях и в приведенном коде (когда он вообще есть).


            1. Vasyutka
              06.03.2017 13:10

              все, «гусары молчать!» Только не про исходники к статьям ))))))


            1. Vasyutka
              06.03.2017 13:14

              еще 80% статей в machine learning мне кажется страдает совсем другой проблемой: предложили разумную идею, реализавали, показали на открытых базах, что да, стало на 20% лучше. Победа. При этом, чтобы реализовать идею сделали «A»,«B»,«C» + самое ценное «X». А начинаешь разбираться, выкидываем саму угловую идею «X», потом «C»,«A». Оказывается «B» дает прирост 15-25%. И складывается впечатление, что авторы это прекрасно понимают, ибо не дураки, но в «B» нет новизны. А она нужна, все-таки по гранту работали наверняка


          1. 0xd34df00d
            06.03.2017 20:27
            +1

            Про что я и говорю.


            Ну это… м… ну просто взять и пересчитать SVM с примесью новых данных.

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


            Есть две разных области, одна — все эти диплёрнинги и SVM применять в продакшене, другая — всё это разрабатывать. Для первого сегодня, вероятно, существенного матана вообще не надо, даже частные производные считать не надо, tensorflow всё посчитает.


  1. ls18
    05.03.2017 16:56

    Хм, я нахожусь тоже на перепутье. Правда мне 23, а не 40 :) Есть некий опыт в разработке СУБД (который я не хочу зарывать в землю, а продолжить когда-либо и дальше работать) и PHP. Могу сказать, что PHP мне не нравится, какое-то внутреннее отторжение от языка, не знаю, как объяснить даже. А вот Python очень даже, хоть я учить его начал относительно недавно. Пишу мелкие скриптики и ковыряю Django. Вопрос: а вы уже нашли работу? И как прошло собеседование? Хотелось бы, что бы поделились процессом прохождения собеседования.


    1. grossws
      05.03.2017 20:10

      в разработке СУБД

      Какую базу писали? В связи с упоминанием PHP рядом складывается впечатление, что это просто некорректно сформулированная фраза.


      1. ls18
        05.03.2017 20:35

        Разработчик СУБД — в частности Oracle. И естественно не в разработке самой СУБД, а написание приложений в Oracle — бизнес-логика, отчеты и т.п.


        1. grossws
          05.03.2017 20:44

          Т. е. всякие PL/SQL и прочие радости. У меня это скорее ассоциируется с DBA и разработчиками систем на базе соответствующей РСУБД.


  1. VBauer
    05.03.2017 17:03
    +2

    Автор я вам искренне рекомендую обратить внимание на язык Go. Сам стал активно изучать этот язык, до этого программировал на Java. Зачем изучать другой язык, когда большинство в энтерпрайзе сидят на Java 1.6, и всем все хорошо. Я ушел из энтерпрайза (из банка), потому что чувствовал то же что и вы описали. К сожалению в мире программирования, не все так гладко. Прежде чем стать программистом, я работал в одной нефтяной компании, сис. админом. Так вот там чтоб стать менеджером, человек должен был сначала поработать на буровых лет пять как минимум. Но те кто отработали свои пять лет, как правило не хотели становиться менеджерами и продолжали работать на буровых. Менеджеры в этой компании были в основном люди за 50, с огромным опытом в своей сфере. В сфере же программирования (сужу по своему опыту из банка), люди руководящие (или пытающиеся это делать) программистами, как правило не имеют никакого отношения к программированию, а порой просто случайные люди. Такие "менеджеры" просто мешают программистам делать свою работу, потому что их Эго не дает им покоя. Я желаю вам не отступать раз уж решили стать программистом, и быть снисходительней и терпеливей если на вашем пути попадутся такие "менеджеры".


    1. rumkin
      05.03.2017 23:43
      +2

      Отдаю свой голос за Go. Достаточно легкий в освоении. Очень производительный. Хорошие перспективы в корпоративной разработке. Несколько раз встречал вакансии, где готовы были брать практически с нулевым опытом.


      1. VBauer
        06.03.2017 09:10

        Мне к сожалению попадались вакансии, где хотели (выяснялось на собеседовании) чтоб человек хорошо знал PHP, и немного Go (видимо чтоб переделывать что-то из PHP на Go). Хотя в заголовках было написано требуется Go разработчик и не слова про PHP ;) Так что я понял одного Go на данный момент пока не достаточно. Найти вакансию чисто на Go, сложнее.


        1. Terras
          06.03.2017 11:51

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


  1. Steamus
    05.03.2017 17:12
    +1

    Сразу вспоминается старый анекдот: — Вот так просто ВЗЯТЬ и уйти из авиации?! :)

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


    1. ls18
      05.03.2017 17:13

      А если не смотреть именно на web-приложения. А допустим в сторону разработку и администрирования СУБД(Oracle, PostgreSQL)?


      1. Steamus
        05.03.2017 17:19

        Да. Это также хороший проверенный «хлеб». ))
        Но он несколько более такой ремесленный что-ли. Много тяжёлой, ответственной и даже немного нудной работы.


        1. ls18
          05.03.2017 17:22
          +1

          Да просто приходит понимание, что программирование, увы, не совсем мое. Вот и присматриваюсь к области разработки СУБД и DBA. А Python очень практичен я считаю, такой простой инструмент для каждодневных задач :)


          1. Steamus
            05.03.2017 18:23

            В этой области вполне чётко просматриваются три отличающихся профессии:

            1. Проектирование БД.
            2. Программирование БД (разработчик БД).
            3. Администрирование БД.

            1. Проектирование — смыкается с системным анализом. Это разработка структуры БД. А структура БД, как правило, отражает структуру данных предметной области.

            2. Программирование — написание кода для создания базы данных и, если нужно, программирование триггеров и хранимых процедур. Это по сути тот же программист, только на языке SQL (если БД реляционная) и внутренних языках серверов БД.

            3. Администрирование — скорее ближе к профессии системного администратора. Предполагает администрирование сервера базы данных. Но помимо установки, конфигурирования и поддержки работы сервера, часто требует оптимизации его работы, анализа планов выполнения запросов на предмет скорости (вместе с разработчиком БД) да и просто «ковыряния» в данных, если с БД что-то произошло.

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

            Так что тут также нужно точнее определяться к чему лежит душа.


      1. VMichael
        05.03.2017 17:39

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


  1. lash05
    05.03.2017 17:22
    +1

    рынок программного обеспечения неуклонно растет, а значит растет спрос и на специалистов, а вот производство оборудования в РФ непрерывно сокращается.
    С рынком ПО тоже не везде плавно.


  1. sbnur
    05.03.2017 17:24
    +10

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

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


    1. Steamus
      05.03.2017 21:02
      -1

      Ну прям басня от Крылова. Тут корячишься, учишься… А тракторист из под Пскова, лёжа в постели в общаге, умных мужиков одним ухом послушал и пошёл, показал всем Кузькину мать. ))


      Пусть «плугами» зовут нас городские чуваки,
      Нам на это наплевать, они сами дураки,
      Мы все механизаторы и нам живется очень даже клево.
      … (с)


      1. sbnur
        05.03.2017 21:49

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


        1. Steamus
          05.03.2017 22:04
          -3

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


          1. sbnur
            05.03.2017 22:53

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


          1. VMichael
            05.03.2017 23:26

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


            1. Steamus
              05.03.2017 23:58
              -1

              Верно. В истории было что… Кончилось тем. что он устроился в питерскую фирм программистом… Другими словами, не исключено что перед этим он закончил университет. И никаких вопросов.


  1. dcheremnov
    05.03.2017 17:58
    -9

    Вы молодцы… Python — хороший выбор!
    Но знания одного языка программирования недостаточно для профессиональной разработки.
    Ознакомьтесь с компетенциями профессиональной разработки ПО — http://it-check-list.asvoip.com/
    и подпишитесь на курс
    http://gitlab.asvoip.com/


  1. ittakir
    05.03.2017 19:05

    40 лет — еще не повод идти в сторону кладбища. У вас как минимум 25 лет до пенсии. А что такое 25 лет? Это очень много. Нам очень повезло жить в такое время, когда профессия программиста очень ценится, зарплаты существенно выше средних по стране. При этом все что нужно для работы — дешевый компьютер и интернет. Никаких университетов, дипломов, больших денежных вложений не нужно. Как например нужно водителю многомиллионой фуры.
    Глупо не воспользоваться этой ситуацией!

    Выбор языка поддерживаю. Но все же в дальнейшем рекомендовал бы вам попробовать Java. Это более серьезный язык, задачи шире и ответственнее (мобильная разработка, корпоративные бэкэнды).
    В С/C++ не лезьте. Ниша стремительно сужается, работы мало, а язык довольно сложный и неудобный.
    Успехов вам!


    1. grossws
      05.03.2017 20:39
      +2

      В С/C++ не лезьте. Ниша стремительно сужается, работы мало, а язык довольно сложный и неудобный.

      Два языка. Если про C++ соглашусь, что язык сложный и обилие legacy, то в случае C язык сам по себе не очень сложен.


    1. 0xd34df00d
      06.03.2017 02:40
      +2

      Начнём с того, что C и C++ — два разных языка.


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


      1. billyevans
        08.03.2017 01:07

        С++ по сути надмножество на С. Почти любой код на С это валидный С++ код. Из С++ можно нативно вызывать С-ные функции. Даже лямбды можно передавать в качестве callback-ов, если нет контекста. Одинаковая модель памяти, вызовов, макросы, includ-ы, да много чего еще.


        1. 0xd34df00d
          08.03.2017 02:39

          Да, почти строгое надмножество, но, тем не менее, языки разные.


          1. grossws
            08.03.2017 05:16
            +1

            После C99 сказать, что надмножество тоже не получится, а тем более если сравнивать с C11. Те же VLA на стеке (в C++14 ввели или нет — хз, но они обещали быть иными чем в C11), разная семантика присваивания, _Generic, инициализаторы вида { .b = ... }, bitfields (если правильно помню).


            Можно сказать, что C++ надмножество какого-нибудь C89/C90, но и то не факт.


            1. 0xd34df00d
              08.03.2017 19:53
              +1

              Поэтому я и сказал, что «почти».


              А VLA в плюсах нет и вряд ли будет (это, по факту, в случае плюсов с их темплейтами добавляет в систему типов элемент undecidability). bitfields есть вот зато. Ну а так ещё можно вспомнить про тип 'a' — int или char, и так далее.


    1. ittakir
      06.03.2017 07:47
      -7

      C и С++ хоть и 2 языка, но скажите мне, что сейчас пишут на С?
      Разве что микроконтроллеры мелкие, да и то нужно поискать, где нет С++ компилятора. То есть ниша вакансий pure C на hh.ru еще уже.

      С++ прежде всего неудобен непрактичностью в современном мире. На нем вы не напишите сайт, приложение для смартфона, скрипт для machine learning. А десктопные программы сейчас мало кому нужны.


      1. grossws
        06.03.2017 10:46
        +2

        C и С++ хоть и 2 языка, но скажите мне, что сейчас пишут на С?

        Ядра, дрова, embedded, криптография, компиляторы (иногда, сейчас скорее исключение), базовые библиотеки, интепретаторы/VM скриптовых языков (cpython, mri ruby, lua), расширения для них. В общем, системное и низкоуровневое — по прежнему ниша Си.


        С++ прежде всего неудобен непрактичностью в современном мире. На нем вы не напишите сайт, приложение для смартфона, скрипт для machine learning. А десктопные программы сейчас мало кому нужны.

        Какой нахрен сайт на C++? Софт для android-смартфонов, если это не webview к сайту довольно часто использует NDK и C++.


        Если говорить за ML, то одна из базовых библиотек, столь любимая многими, — numpy всё основную работу делает в сишном и фортрановском коде (фортран — если используется netlib blas/openblas без оптимизаций). Intel TBB, MKL, DAAL — всё C + asm.


        1. ittakir
          06.03.2017 13:24
          -2

          Я говорю о количестве вакансий. Много ли их в вашем городе (не Москве) на «Ядра, дрова, embedded, криптография, компиляторы»? Почему в этих вакансиях обязательно нужно писать на C, а не C++?
          Кстати, про embedded я уже написал.

          Какой нахрен сайт на C++? Софт для android-смартфонов, если это не webview к сайту довольно часто использует NDK и C++.

          Часто это когда? Оправдано, только если нужно делать сложный обсчет или 3Д игру.

          Если говорить за ML

          Библиотеки написаны на чем угодно. Но почему-то очень часто работают с ними на Python.


          1. grossws
            06.03.2017 14:12
            +1

            Я говорю о количестве вакансий. Много ли их в вашем городе (не Москве) на «Ядра, дрова, embedded, криптография, компиляторы»?

            Вы спрашивали "что сейчас пишут на С", а не про количество вакансий. Тем более в противоречивом "моём городе (не Москве)", когда я нахожусь в MSK.


            Почему в этих вакансиях обязательно нужно писать на C, а не C++?

            Зависит от конкретного случая. С большой вероятностью это будет зависеть от того, на чём проект написан. В случае ядра, если оно написано на Си (Linux, как самый распространенный вариант) на C++ не пишут, как правило. Иногда это невозможно (читай нерационально).


            Для низкоуровневых библиотек, даже если используют плюсы, делают внешний сишный интерфейс, т. к. interop.


            Часто это когда? Оправдано, только если нужно делать сложный обсчет или 3Д игру.

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


            Библиотеки написаны на чем угодно. Но почему-то очень часто работают с ними на Python.

            Это пока хватает производительности и/или памяти. Потом начинаются torch/tf/whatever, C/C++, cilkplus, icc.


      1. 0xd34df00d
        06.03.2017 20:32
        +2

        С++ прежде всего неудобен непрактичностью в современном мире. На нем вы не напишите сайт, приложение для смартфона, скрипт для machine learning. А десктопные программы сейчас мало кому нужны.

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


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


  1. liverpool67
    05.03.2017 19:09
    +4

    Python как язык очень простой. Сейчас изучаю Ruby и начинает казаться что питон многословен, некоторые мелочи видятся костылями которыми он оброс c годами. Начинаю понимать рубистов почему они так любят этот язык.))


    1. GeMir
      05.03.2017 19:26

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


      1. Lailore
        05.03.2017 19:44

        А после этого посмотрите на c# 7 =)


        1. Idot
          07.03.2017 10:03

          А что с ним?


    1. DaneSoul
      05.03.2017 19:46
      +2

      С Ruby не знаком, но когда после PHP начал изучать Python — это был просто восторг.
      Особенно понравилось, что вместо невнятного вороха функций с префиксами str_, array_ и т.п. используются понятные и логичные методы объекта соответствующего типа и это все выстраивается в четкую и логичную систему.


      1. ls18
        05.03.2017 20:29
        +4

        Люто поддерживаю, по сравнению с PHP — Python просто конфетка.


  1. WildZero
    05.03.2017 19:53
    +2

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


    1. tmnhy
      05.03.2017 20:06

      Есть такая вещь, как «синдром утёнка».
      Кмк, учиться программированию лучше вообще без привязки к конкретному ЯП.


      1. Steamus
        05.03.2017 20:20
        -2

        Да, есть такая вещь. И именно потому крайне важно каким будет первый язык. Поскольку школа этого языка, с высокой степенью вероятности, будет определять симпатии и антипатии человека в дальнейшем. И хорошо, если первым языком окажется Pascal, Java, C# да хоть C++. А вот если им окажется Бейсик, то уже всё не так радужно. Опять же, когда люди пишут что многословность является недостатком языка, это как правило говорит о не очень глубоком понимании проблемы. Мудрость гласит: Написать программу так, что бы её понял компьютер — не самое сложное. Гораздо сложнее написать программу так, что бы её легко понял другой человек.


        1. tmnhy
          05.03.2017 20:28
          +2

          И хорошо, если первым языком окажется Pascal

          Довольно непопулярное, но верное замечание! )


          1. opencloser
            06.03.2017 15:13

            С паскаля пересаживаясь на Python радовался понятности кода, далее взявшись за серьезную разработку на JS плевался. Но все таки тонкости Python с лету не понять, но идея очень хорошая. Если его использовать строго по назначению, очень даже мне понравилось. Я считаю что язык не важен! Хватает от силы пол года что бы понять суть языка, но а тонкости приходят по мере надобности(опыта). Например, хоть мне и JS очень не понравился, но в некоторых задачах ему нет равных в плане быстрого написания понятного кода(сам сказал — сам же сомневаюсь, а ведь так и есть).


          1. romanegunkov
            06.03.2017 22:19

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


            1. Idot
              07.03.2017 04:44

              Я с Бейска (первый язык) очень легко перешёл на Фортран. Затем перешёл на Паскаль. И после на C/C++. А переходя на Дельфи обнаружил помимо знакомых паскалевских штучек, ещё и объектную модель от C++ (в Борланд Паскале объекты заметно отличались). Сейчас я на PL/SQL.

              PS в принципе, знаком с C#, с Прологом, с Джава-скрипатами и ещё кучей языков, но на них я серьёзно не писал.


        1. grossws
          05.03.2017 20:42
          +1

          И хорошо, если первым языком окажется Pascal, Java, C# да хоть C++

          C++ как первый язык выглядит сложным и опасным вариантом. А pascal, java, scheme — вполне удачны. За C# не скажу, на нём никогда не писал.


          1. Steamus
            05.03.2017 20:56

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


          1. dmitry_dvm
            05.03.2017 22:20

            Начинал с js, перешел на c# и не нарадуюсь. От строгой типизации просто восторг. Очень продуманный и лаконичный язык.


    1. Steamus
      06.03.2017 00:04
      +2

      Нет. ПХП — очень нехороший выбор. Да и Питон… так себе. И вкус тут не причём.


  1. yarric
    05.03.2017 20:15
    +5

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


    1. Idot
      05.03.2017 20:32
      +2

      Хороший вариант для начала карьеры! Тогда автору кадровички не будут задавать дурацкие вопросы про 40 лет и джуниора.


    1. ser-mk
      06.03.2017 00:17

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


      1. Idot
        06.03.2017 05:15

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


        1. fireSparrow
          06.03.2017 07:11

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


          1. ls18
            06.03.2017 07:31

            А на каком языке вы пишите и в каком городе живете? Если не секрет :)


          1. ls18
            06.03.2017 07:37

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


            1. fireSparrow
              06.03.2017 07:48

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


            1. Idot
              06.03.2017 11:41

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

              Посмотрел в своём родном городе (с населением более миллиона): свыше тридцати вакансий по Питону — есть из чего выбирать! => Питон явно полезно знать!


          1. Idot
            06.03.2017 09:22

            Я вот недавно получил свою первую работу программистом в возрасте 31 года. Искал с конца октября по начало февраля

            А до этого чем занимались?


            1. fireSparrow
              06.03.2017 09:24

              Техподдержка/администрирование


              1. Idot
                06.03.2017 10:34
                +1

                Для кадровичек и прочих гуманитариев — это то же самое, что и программирование.


      1. Mirn
        06.03.2017 08:08

        подтверждаю.
        количество вакансий джавистов почти в 100 раз больше.
        больше половины из них живые а не висят по пол года и более
        а количество с з/п выше 100-120 явно не 2-3%.
        а ту одну вакансию что была на микроконтроллерщика с хорошей з/п — я сам профукал — сам виноват, разволновался и затупил — единственная за год вакансия где "от 100тр" а не до "80 тр".
        так что шансы что будет вакансия и повезёт — близки к ничтожным.


    1. Pafnutyi
      06.03.2017 15:15

      Вы человеку «смерти голодной» желаете ;)))) Держитесь подальше от «реального сектора» экономики, никаких микроконтроллеров — усилия, умения и знания направлять только на потенциально валютонаполненные рынки.


      1. yarric
        07.03.2017 19:03

        Как я понял, человек ищет именно что-то интересное, а не просто самое хлебное из того, что есть. Для хлебного-то можно выучить Java или PHP, правда задачи не особенно там интересные.


  1. asushko
    06.03.2017 10:01
    +1

    руководитель отдела перспективных разработок одной IT компании — прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."

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

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

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

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

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

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

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


    1. Steamus
      06.03.2017 13:10
      +3

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

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


  1. D01
    06.03.2017 10:48

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


    1. tmnhy
      06.03.2017 11:06
      +1

      … желательно на русском.

      Выбросите это из головы.

      Если в багаже уже есть опыт программирования, то быстро «въехать» в особенности языка питон поможет вот эта компиляция http://docs.python-guide.org/en/latest/
      Там английский на уровне начальной школы.

      Если всё-таки на русском, то ищите перевод «Dive Into Python» Пилгрима, хоть и устарело, но понятие об языке даст.

      А всё-самое свежее здесь https://docs.python.org/3/


      1. D01
        06.03.2017 11:48

        Спасибо!


  1. AndreiYemelianov
    06.03.2017 12:17

    Вы отлично всё написали. У меня всё было ещё грустнее, чем у Вас: 90-е, отдалённый регион, не самое лучшее филологическое образования, аспирантура (не та, куда хотел), преподавание (не то, о котором изначально мечтал). В 30 ушёл из вуза в никуда. Работал переводчиком, потом стал работать техническим писателем. Изучаю C и Python. Скоро меняю работу на более интересную.


  1. varnav
    06.03.2017 12:26
    +1

    Признайтесь честно — вы выбрали Питон, прочитав вот это.


  1. tomzarubin
    06.03.2017 12:50
    +4

    В США люди иногда 3-5 раз за жизнь меняют область, в которой работают и 50-летний дядя на курсах по программированию не вызывает вопросов.


    1. Steamus
      06.03.2017 14:48

      Неправда. Если говорить о высококвалифицированных специалистах, то в Америке люди стараются получить максимально хорошее образование. Насколько позволяют способности и кошелёк. Гарвард, Принстон, Стенфорд, Йель… Получив такое образование вы не сможете им швыряться и менять каждые 10 лет. Трудно представить что бы врач, потративший заметный кусок жизни на образование, менял область 3-5 раз. Да и он раза не поменяет.


    1. Steamus
      06.03.2017 14:53
      +1

      В Америке люди более мобильны. И легче меняют место жительства, что бы жить там, где есть хорошая работа по их профессии. А 3-5 раз область меняют люди несложных профессий. Сегодня пиццу развозил, завтра пошёл помощников официанта. Можно встретить человека 50 лет, обучающегося на несложных IT курсах на тестера. Это — да. Но крайне редко вы увидите юриста, решившего даже в 40 лет вдруг стать профессиональным разработчиком ПО.


  1. darkhobbit
    06.03.2017 15:21

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


  1. romanegunkov
    06.03.2017 15:21


    да в общем и не такая интересная, как ваша работа сегодня..."

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


  1. vaness83
    06.03.2017 15:22

    Учитывая то, что «роботы» (программы, системы автоматизации, станки и т.п.) все больше заменяют людей в различных сферах, то можно предположить, что все больше возникает потребность в тех, кто этих роботов будет создавать. Т.е. как раз программисты будут нужны в большом количестве (на них и сейчас спрос больше чем в других отраслях, мое мнение) и вполне вероятно, что поколению 30-45 вскоре придется обучиться этой профессии, как не так давно пришлось изучать компьютеры тем кому сейчас по 50-65 лет. Так что думаю дискриминация вскоре немного по убавится. Мне сейчас 33 и я эту проблему ощущаю. Но в любом случае, опыт и навыки всегда были важнее возраста, при прочих равных условиях, так что если стать хорошим специалистом, то и в 60 место найдется. Хотя есть мнение, что фирме выгоднее использовать молодые ресурсы, так как они менее критичны к переработками и повышенным нагрузкам, не обременены семьей, в отличии от зрелых семейных «соперников», у которых уже немного другие приоритеты в жизни ))
    Так что мужик молодец, решил — сделал! )


  1. ferreto
    06.03.2017 15:22

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


  1. FODOS
    06.03.2017 15:22

    Дмитрий, сколько времени вам понадобилось на то, чтобы почувствовать себя готовым к собеседованию на вакансию питониста? И как вы оцениваете свой нынешний уровень?
    С таким багажом

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

    КМК, перспективы в менеджерской сфере были бы гораздо лучше.
    А Python в этом случае оставить на «свободное от работы время», «для души».


  1. Megalitka
    06.03.2017 15:23
    +1

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


    1. shutovds
      06.03.2017 15:53

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


      1. dcheremnov
        06.03.2017 19:42
        -4

        Я Senior developer — фанат разработки программного обеспечения…
        Я могу немного помочь будущим, молодым и начинающим ИТ специалистам.

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

        ПОЧЕМУ...?

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

        ЕСТЬ ОТВЕТ

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

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

        СТРЕМИСЬ К ЛУЧШЕМУ

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

        Выше я опубликовал ссылку на БЕСПЛАТНЫЙ курс, на который я потратил полгода личного времени
        и N00$ (сервер + по мелочам). И несколько человек мне помогают :0
        Профессионалы не найдут там ничего нового. Но если захотите принять участие в качестве наставника — пишите.
        Истины, личный опыт, ничего особенно — краткие собственные статьи, ссылки на статьи программистов и на книги, которые желательно прочесть разработчику. Системно — но по минимуму.
        И курс формируется на GitLab, а потому там еще…

        P.S. я также не люблю рекламу и то, что моя карма в минусе — нормально, не впервой :)
        Кратко о себе — программирую с детства, но в профессиональную разработку пришел после 30.


    1. yarric
      07.03.2017 19:22

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


  1. r5am
    06.03.2017 15:54
    +1

    По-моему, автор на верном пути. Имею похожий жизненный путь — радиоинженер, загубленные в стране производство и КБ, 18 лет в банковской сфере — государство всё подминает и по 3-4 банка в неделю закрывает, два года без нормальной работы — после 40 лет даже не рассматривают резюме и сквозь HR-девочек не прорваться, год назад на Python Juniora просился на HH — побеседовал удачно и зацепился за тестирование на Java. Очень тяжело с 4500$ спуститься на 600$, но голод не тётка, да и видны некоторые перспективы роста. Автору желаю удачи и силы духа.


  1. freevoxer
    06.03.2017 15:54

    Я в 25 задумался о смене профессии, и то кажется поздновато, но такие истории ещё сильнее мотивируют) Удачи в любом случае)


  1. KiloLeo
    06.03.2017 15:55

    Не надо так много слов. Подозрения вашего собеседника логичны. Но если Вы действительно уверены в том, что хотите сменить род деятельности — Вы своего добьётесь. Придумайте складную легенду и рассказывайте её на интервью каждому, кто будет задавать эти вопросы. Легенда должна быть короткой и убедительной, много рассуждать не надо — никто слушать всё равно не будет. Вы должны убедить тремя предложениями.
    Например, не говорите, что сейчас зарплата выше. Да, врать не хорошо, но в ситуации когда правда никому особо не интересна (на интервью не любят долгих рассказов), нужный короткий складный рассказ. Второе — скажите, что ваша нынешняя работа отчасти связана с питоном. Питон универсальный язык, его можно применить даже в прачечной. Это можно рассказать убедительно.Удачи Вам! Если Вы точно решили и готовы на всё, то у Вас получится!


  1. coderisimo
    06.03.2017 15:55

    Скоро исполняется 43 года. 2 года назад решил поменять сферу и заняться программированием вплотную, ранее работал в совершенно иной области. Сейчас тружусь на upwork, подумываю о своем проекте. Последние пол года на тостере чаще отвечаю, чем спрашиваю, что приятно. Правда, ощущение бездны еще не изученного не покидает.


  1. Crocodilovich
    06.03.2017 15:55
    +1

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


  1. Magnus1
    06.03.2017 15:56
    +4

    Мне этот пост напоминает какую-то веру в чудеса, я сам таким же был. И комментаторы тоже радуют — "все получится", ведь я уже сверстал первый сайт на вордпрессе, теперь я программист, я решил уникальную задачу. Это кодинг, а не программирование. За два года вы научитесь более менее верстать сайты (если с этого начнете), настраивать готовые движки (покликать мышкой в админке и прописать конфиг. О какой зарплате на уровне можно говорить? Как то странно видеть такой наивный подход в 40 лет. И да молодые будут все схватывать и понимать намного быстрее вас, это факт. Но если упорство есть, то все получится, только розовые очки снимите.


    1. liverpool67
      06.03.2017 19:58

      Ровно через год после начала изучения питона (раньше не знал что такое переменные, списки...) стал зарабатывать пятизначную сумму в долларах в месяц. Через 2-3 года узнал только про паттерны проектирования и алгоритмы… Не всем ведь работать на дядю)) Какая разница кодинг это или программирование если это приносит деньги), отрефакторить можно потом)) Если есть идеи то их нужно реализовывать, а не годами изучать программирование, это только инструмент не более.


      1. AlexBin
        07.03.2017 13:11
        +1

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


        1. liverpool67
          07.03.2017 13:29
          -2

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


          1. AlexBin
            07.03.2017 16:13
            +1

            ты просто скорее всего программируешь плохо, либо это не твое

            куда мне до вас:
            не беспокойся я каждые 2 года переписываю продукт

            Я то не беспокоюсь, а вот вам бы следовало


      1. Magnus1
        07.03.2017 19:41
        +2

        ))))) Конечно же я вам верю, это ведь интернет. Я вообще на чистом HTML зарабатываю от 120к евро в год, представляешь?


    1. Samael_96
      07.03.2017 14:34

      Я в 35 лет, за пол часа разобрался как установить друпал, за 5 минут как установить вордпресс и джумлу. За пол дня как перенести его на другой хостинг, и починить упавшую базу. За два дня как сверстать шаблон. :)
      Я конечно не знаю на какой вы уровень ориентируетесь, может на мамочек в декрете, так и там находятся довольно неглупые люди :)
      Сейчас разбираюсь с интернет автоматизацией процессов. Все там легко и просто как 5 копеек. Было бы желание работать, а не по форумам шарится.


      1. Magnus1
        07.03.2017 20:35
        +1

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


  1. Crocodilovich
    06.03.2017 16:11

    Мне кажется, что не маловажный факт в данной ситуации это наличие инженерного образования и как следствие «правильный» склад мышления. Так или иначе, хороший программист является инженером. А все инженеры в некотором роде похожи. Только вот выбор стека технологий не до конца понятен, кроме Питона, конечно. Но не лучше ли выбрать HTML, CSS, JS, jQuery для более быстрого попадания в отрасль. После сопромата и куда более трудных инженерных наук, постичь их не составит уж огромного труда.


    1. Terras
      06.03.2017 16:26

      Учитывая то, что порой django программист сам редактирует шаблоны, рендерит формы и пишет ajax запросы — не всегда есть в команде фронтенд специалист, который понимает специфику джанго, то знать html/css/js просто необходимо.


    1. rumkin
      06.03.2017 18:43

      Веб-стек только кажется простым, а потом начинается React/Angular, Redux, Gulp, Less, SASS и пошло поехало.


      1. eks1985
        07.03.2017 12:39

        Неужели есть что-то такое притически сложно в изучение того же React/Redux? Это вполне себе стройные концепции с прекрасной документацией, кучей примеров. Я тупой 1с программист пишу на React/Redux и проблем не знаю.


  1. botyaslonim
    07.03.2017 00:38

    Мне 34, и у меня появилось стойкое ощущение, что некоторые компании отказывают в работе только из-за возраста


    1. FODOS
      07.03.2017 01:06

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


      1. botyaslonim
        07.03.2017 01:15

        Сколько же Вам лет? :)
        И вообще, давайте мутить профсоюз! Это дело сулит большую удачу, с каждым годом нас будет всё больше и больше!


    1. vasiliysenin
      07.03.2017 12:06

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


      1. botyaslonim
        07.03.2017 15:35
        +2

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


  1. maratische
    07.03.2017 10:59

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

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


  1. genrix936
    07.03.2017 12:36

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