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

Небольшой скриншот, который я из эстетических соображений убираю под спойлер
image

Видите пару схожих вопросов рядом? Вот и мой разум приоткрыл один глаз и сказал – «Хм… Знакомая тема, бро». Стараясь не думать, как выглядят глаза разума, я прочитал эти вопросы, комментарии к ним, и у меня появилось непреодолимое желание поделиться с сообществом своей историей. История под катом.

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

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

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

Век живи — век учись


Школа. Сейчас моя школа называется «гимназией», а когда я учился — была просто хорошая школа с грамотными учителями. Разве что английский с 1-го класса, и немецкий/французский (на выбор) с 5-го по 9-й. Примерно с 5-го класса я пару раз в неделю ходил на занятия в «компьютерный кружок». Там мы с приятелями начали постигать информатику (или играть, когда преподаватель давал задание и уходил куда-нибудь ). Начинали со знакомства с MS-DOS на 286-х (арканоид – моя 1-я компьютерная игра), затем NC и текстовые редакторы на 386-х (Grand Prix Formula 1 – пишу эти строки и думаю – «ябпоиграл»), и затем, аж на Pentium I под Win95, был BASIC (UFO, HOMM2, а за попытку поиграть в старый добрый Carmageddon при детях, получил от жены по шапке в прошлом году).

Я знаю, что обещал без подробностей, но эта ностальгия сильнее меня. Простите, я больше не буду.

После школы поступил в местный ВУЗ. Бюджет, факультет ИТ, но баллов хватило пройти на специальность с лаконичным названием «Математика». В расписании 5 видов математики в неделю, ИТ только в перспективе, курса через два, и странные преподы, половина из которых вместо лекций рассказывает какие-то байки или рассуждают о политике/мироустройстве/чем-угодно-ещё-кроме-предмета. Я не дожил даже до конца 1-го курса, просто перестал туда ходить.

Попадать в армию не хотелось, кое-как зачислился в колледж на отделение «ПО и ВТ». Опять мимо – мне бы надо на ПО, но из-за многих нюансов получилось только на ВТ. На тот момент возиться с железом мне было не сильно интересно. Проучился полтора года, забрал документы.
Опять тот же старый ВУЗ, специальность – менеджмент. Лучше так, чем в армию – так я тогда думал.

Не работаешь — жить не на что. Работаешь — жить некогда (взято из глубин сети)


Параллельно с попыткой получить какое-нибудь образование, жизнь проходила примерно так — после школы съезжаю от родителей, живу с девушкой. Работаю подсобником на стройке, потом впаривателем книг (это как с китайскими утюгами по квартирам ходят, только книги и по офисам в основном). Это длилось около 3-х месяцев, как только мне исполнилось 18 лет, иду работать в ночную смену на завод. Пару месяцев в учениках и 1-я специальность – «балансировщик узлов и деталей». Потом еще был опыт работы «печатником плоской печати». Та же схема — обучение, экзамен, разряд. Опыт очень интересный, но из-за агрессивной среды (пары краски, растворителя и т.п.) постоянно было раздражение слизистой носа. Решил не рисковать и уволился.

Устроился в салон сотовой связи продаваном. Энтузиазм в отношении IT сферы уже сильно угас. Ну, так – продвинутый пользователь с бесполезными знаниями BASICа и чуть-чуть Delphi. Интересы – семья (родилась дочь), работа, чуть-чуть учебы (учиться на менеджменте было скучно). Компьютер используется для фильмов и игр.

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

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

Открыл фирму, закрыл фирму
Сперва я какое-то время просто занимался монтажами по просьбам старых клиентов или помогал коллегам из других контор. Но, как это часто бывает, довольно быстро появилась необходимость оформлять всё официально и с бумагами, так что я открыл ООО. В составе я один. Учредитель, директор, главбух, менеджер, инженер, человек и пароход. В телефоне номера — нескольких проверенных рукастых (и пара молодых, но дешевых ) монтажников-фрилансеров. Это бойцы для прокладки кабеля и установки железа. Настраивал сам, кроме совсем уж простых объектов. Цели заработать много денег не было. Хотелось, чтобы никто не мешал реализовывать проекты так, как я их задумывал. Старался искать какие-то интересные в техническом плане задачи. Но их было мало, большинство перехватывалось более солидными фирмами. В систему госзакупок и откатов я не лез. Совесть не позволяет. Плюс взаимодействие с заказчиками и поставщиками отнимало очень много времени и нервов. Из-за кучи взятых на себя обязанностей, детей (на тот момент уже 2 дочки) видел только спящими. Когда было время на отдых – или уезжал на рыбалку, или играл в танки – просто хотелось где-то посидеть, и чтоб меня никто не трогал. Понял, что скатываюсь в депрессию и апатию. Меня хватило на 3 года, после чего плюнул.

Вспомнил, что когда-то хотел стать программистом. Мне было это интересно. А сейчас мне 30, у меня разнообразный опыт, вот только знания зачастую поверхностные. Потом отогнал эту тоску, обмозговал всё получше. Отбросил излишнюю самокритичность. Вспомнил, как я настраивал на объектах роутеры MikroTik, тогда пришлось написать несколько своих скриптов, и какой кайф я ощутил, когда они заработали, как надо. Скачал учебник по Java, и…

Здравствуйте, меня зовут userName, и я алкоголик начинающий разработчик


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

Пообщались, начал делать. Со скрипом, но вроде получалось. Скинул предварительную версию. Еще недели 2 шла вялая переписка, после чего человек пропал. Я даже не знаю, что это было – попытка кинуть? Ради небольшой выгоды, получить кривую утилиту? Но мне уже было лень пытаться связаться с этим персонажем – я получил долгожданный практический опыт, попробовал пару разных подходов, и в целом был доволен собой. Небольшое отступление – мне очень не нравится решать какую-то теоретическую задачу. Мне нужно что-то, что можно будет использовать с какой-то практической целью. При этом своих идей не очень много.

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

К этому времени у меня уже были профили на паре международных площадок.

На этом месте я бы хотел подвести небольшие итоги.

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

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

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

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

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

Пожалуй, всё. Спасибо, что потратили своё время. Если интересно, что было дальше – пишите в комментариях.

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


  1. sim-dev
    26.08.2017 12:41
    -4

    Вынужден констатировать, что

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


    1. EvilGen
      26.08.2017 12:45
      +1

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


      1. Areso
        26.08.2017 13:06
        -1

        Зависит от вида гранита.
        К примеру, у меня тоже не сложилось по какой-то причине с AndroidStudio. Даже шаблонные и демо проекты не компилировались как надо… потратив много времени и версий, у меня все же получилось хоть что-то типовое, но логика работы Java в AndroidStudio меня поражала в самое сердце. Бросил.
        Делаю приложения из HTML5+JS, обёрнутые в браузер (спасибо Intel XDK)
        Вообще 1С (страшный сон, но в небольших городах — это самая распространенная вакансия программиста) звучит неплохо в плане самостоятельного обучения.
        Тестировщики, опять же. Их берут довольно много, толковые люди там растут или в самом тестировании (автоматическое тестирование и составление автотестов), или в менеджмент или уходят в разработчики в той же конторе.


        1. xxxTy3uKxxx
          26.08.2017 13:35

          Я за разработку под андроид садился раз 5. В последний из них сел в обнимку с котлином да и понеслось как-то. Учился одновременно с разработкой модулей для Xposed.


      1. fly_style
        26.08.2017 16:28

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


    1. iperov
      26.08.2017 13:05
      +10

      пользование готовыми СДК и движками это не профессиональные навыки. 5-10 лет и инструменты меняются. Причем видим тенденцию, что разрабатывать всё становится проще.
      Раньше ты учил ассемблер и С++, осваивал DirectX 7 api, а теперь любой школьник в пару кликов делает 3д игрули для андроида на готовых движках.
      Т.е. нужно качать умение быстро учиться новым системам. Т.е. учиться учиться, а для этого надо качать абстрактное мышление, чтобы быстро видеть зависимости в глобальном плане, видеть общую картину, тогда материал быстрее усваивается. А также качать объем воображения, в котором можно больше и дольше удерживать алгоритмы и логику.


    1. Hardcoin
      26.08.2017 15:31
      +1

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


      1. sim-dev
        26.08.2017 17:17

        Я из тех самоучек, что еще помнят ассемблер x86 и знают, что такое «резидентная программа MS DOS». И Delphi мне знаком, и Си (и не плохо знакомы, смею надеяться)… И где сейчас эта Delphi? И где, кроме embedded devices, этот Си?
        Невозможно чему-то учиться без задачи. То есть замкнутый круг: чтоб получить заработок, надо решить современную задачу. Чтобы решить современную задачу, надо знать современные «технологии» (будь то язык, фреймворк или что-то еще). Изучить современные технологии невозможно, т.к. их необъятно много и выбрать ту, которая поможет заработать, нельзя. Получается, мне не дадут работу, потому что я не знаю технологий, а технологии я не узнаю, пока не получу работу.
        Всё, можно успокоиться и идти в охранники супермаркета.


        1. Hardcoin
          26.08.2017 17:25
          +3

          Если вам знакомы и Delphi и си — то все отлично. Delphi, правда, остался только в каком-нибудь корпоративном легаси, а с си все порядке. Сайты на нем не делают, а высоконагруженные веб-сервисы — очень даже. Драйвера и библиотеки тоже. Большой рынок, программистов много, зарплаты хорошие. Если вы ещё и структуры данных знаете (тоже не устарело), то вам пару месяцев прочитать/попробовать свежие библиотеки — и можно брать задачи джуниора (а там подтянитесь). Но, конечно, это все на ваше усмотрение. Охранники тоже иногда нужны, вам решать.


          1. AnneSmith
            26.08.2017 17:28
            +1

            и сайты делают :)


            1. sim-dev
              26.08.2017 21:08
              +1

              Да я и на Delphi «сайт» делал, был грех. Работал в одной конторе, где директору забожалось каждый день иметь каждый день сводку о том, сколько какой цех электроэнергии, воды и газа израсходовал… Даные со счетчиков собирались и вносились в эксель, да только сам директор мог только одну кнопочку нажимать. Пришлось на дельфи накорябать прибамбас, который запускал экселевый файл со скриптом на VBA, скрипт этот формировал html-страничку, а прога на Дельфи это страничку вставляла во фрейм странички, которую сама генерировала… Этакий CGI-вариант динамической генерации сайта. Ну, оставалось мне только запустить этот дельфийский «сервер», и директор мог по кнопочке, которую ему нарисовали верстальщики в браузере, открывать «сайт со статистикой».

              Тогда не было у нас ни серверов, ни апачей, нифига не было (как и знаний), потому так извращались…

              Но все это ерунда — сейчас это никому не надо. А надо верстать сайты такими средствами, от одних названий которых меня дрожь пробирает. К тому моменту, когда я дочитаю простое описание возможностей этих средств, они устареют и станут не модными. Сколько сил было потрачено на «модный» ^parser — и где он, кому нужен?


              1. pro_co_ru
                27.08.2017 13:35
                +1

                Да, были времена, когда VBA был в моде. Да и вместо JavaScript в html страничках бывало использовали VBScript. Это были лихие конец 90х — начало 00х. В те времена в одном из древних проектов делал выгрузку товаров в интернет магазин запуском шельника, который выполнял VBA скрипт документа с обновлённым прайсом. И на страничке использовался XMLHttpRequest для подгрузки данных в разворачивающихся спойлерах (тогда ещё слова AJAX не было в обороте).

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

                А вообще я хотел сказать про то, что нужно уметь заранее увидеть ту технологию, которая в будущем выстрелит, разобраться в ней, а когда придёт время, то быть уже специалистом в данной теме. И мне кажется, что одна из таких технологий — это WebAssembly. Т.е. уже сейчас можно разрабатывать и компилировать с различных языков программирования нативные приложения и исполнять их в браузере. Вот тут я перечислял несколько ЯП, на которых уже можно делать подобное: toster.ru/q/454806


                1. staticlab
                  27.08.2017 23:54

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

                  DOM ещё не завезли


                1. tyomitch
                  28.08.2017 11:47

                  Чем (технологически) WebAssembly отличается от Java-аплетов, которые вымерли чуть менее чем полностью?


                  1. staticlab
                    28.08.2017 12:59

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


                    С другой стороны, у Java-апплетов был свой довольно большой рантайм с разнообразными классами, а у wasm будет только стандартный браузерный рантайм. Придётся тянуть всё с собой в сборке.


                    1. pro_co_ru
                      28.08.2017 13:15

                      А ещё wasm файлы можно кешировать на всяких CDN-ах, да и в localStorage-ах и IndexedDB, версионировать и подтягивать только те wasm-ы, которые требуют обновления. Т.е. веб приложение может состоять из нескольких wasm-ов, которые можно подгружать по мере необходимости, тем самым можно сократить начальную загрузку веб-страницы.


                      1. pro_co_ru
                        28.08.2017 13:28

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


                        1. staticlab
                          28.08.2017 13:52
                          +1

                          Фактически это будет или расширение стандартного API браузера, или просто кэш.


                      1. tyomitch
                        28.08.2017 18:59
                        +1

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


              1. AnneSmith
                27.08.2017 21:16

                C используется не для верстки, а для CMS.


        1. Zawuza
          27.08.2017 01:30

          Delphi жив, да, много легаси, но новые проекты тоже есть. Дельфисты, шарящие в web очень ценятся.


          1. quwy
            28.08.2017 01:31
            +2

            Хм, а как делфист должен шарить в web, чтобы цениться? Вопрос не праздный, просто сегодня такая фраза воспринимается как «ты делфист и шаришь в web? тогда забывай скорее delphi, вот тебе ангуляр, и давай используй свои знания web».


            1. Zawuza
              28.08.2017 01:39

              Ну, как минимум, шарить в frontend фреймворк (Angular тот же) и в дельфийские бэкенд-фреймворки (DataSnap самый популярный, mORMot и DMVC тоже ничего).


        1. tyomitch
          27.08.2017 02:00
          +1

          И где, кроме embedded devices, этот Си?

          Ну например, python написан на Си, и плагины к нему тоже пишутся на Си.
          Ну и Linux тоже рука не поднимется назвать «кодом для embedded devices».


          1. Jef239
            28.08.2017 02:49
            -1

            Глянул, где у меня в квартире liux… 3 андроида, роутер… То, что делаем по работе на linux — тоже для embeded… В метро заходишь — инфотерминал на linux… Ну в общем не так уж и далеко от истины — linux в embeded сильно прижился.


            1. tyomitch
              28.08.2017 11:44
              +1

              Linux повсюду: и в embedded, и на десктопах, и на серверах.
              И OSX туда же: не совсем Linux, но тоже на Си.

              Пять лет назад я собеседовался было в Facebook (уж казалось бы, что может быть дальше от мира embedded?), и между прочим спросил собеседователя, не пригодятся ли у них мои сишные скиллы.
              "--Ещё как! У нас даже есть команда, которая пишет кастомные линуховые драйвера для сетевух на наших серверах, чтобы выжать из них максимум производительности."


              1. Jef239
                28.08.2017 20:09
                -3

                На дескотопах — очень мало где. А сервер — не так далек от embeded. То есть тоже железка без монитора и клавиатуры.

                На серверах есть альтернатива в виде FreeBSD, но она тоже сишная. А в embede — альтернативы почти нет. Слишком уж хорошо линукс адаптируется к разным архитектурам.

                То есть единственная серьезная альтернатива — это вообще без нормальной ОС, с FreeRTOS, например (тоже на Си). Мегабайт ПЗУ, полмега ОЗУ — это не для linux. Зато плата сильно проще. Но это уже deep embeded.


                1. tyomitch
                  28.08.2017 20:20

                  Не хочу углубляться в вопросы терминологии, но если deep embedded — это «Мегабайт ПЗУ, полмега ОЗУ», то как вы назовёте micro:bit c 256КБ Flash и 16КБ ОЗУ?
                  Туда даже FreeRTOS вряд ли влез бы; поэтому под неё пишут на голом Си прямо без ОС :-)


                  1. Jef239
                    28.08.2017 21:04

                    FreeRTOS влезет в такое. У нас примерно такой SOC в качестве мультиплексора использовался. Писали на Си с примесью С++. Самый deep — это PIC, там иногда сотни байт ОЗУ бывает. ну и AVR, конечно.

                    А по терминологии — если мы не используем внешнего ОЗУ и ПЗУ и вмещаемся в ресурсы SOC — это более-менее deep. я STM32F7 имел ввиду.


        1. Jef239
          28.08.2017 02:44
          -2

          Ну например skype написан на delphi. В области АСУТП дельфи очень хорошая альтернатива С++ — больше надежность, короче (и прогнозируемей) сроки.

          Ст — очень много где. Да, с легкой примесью С++, но это Си. Как пример без примеси — ядро linux и очень много линуксовского софта.

          Хотите программировать на Андроиды и айфоны? Да нет проблем. Берете последний дельфи — и вперед.

          Тут другой вопрос важен. Если вы не читали Рэя Конопко — вряд ли вас возьмут писать на дельфи. Если вы не можете эмулировать классы на Си — вряд ли вас возьмут писать на Си. Это я к тому, что нужны как минимум мидлы, а не юниоры.


          1. sim-dev
            28.08.2017 10:23

            Да лично для своих целей я пишу и на Delphi, и на Си. Просто это явно не тренд, и, хотя есть иной раз шанс что-то этим заработать, его все меньше и меньше. По поводу Конопко — это, слава богу, я освоил давным-давно, когда еще не так отстал от линии тренда. И уж во всяком случае Form13.Button22 в моих проектах нет так же много-много лет. Только сути моего высказывания это не меняет: я никогда уже не смогу изучить то, что нужно именно сейчас, потому как к моменту завершения изучения оно станет не нужным. А получить работу, чтобы изучать по ходу работы, я не смогу, т.к. никого не волнует процесс обучения, всем нужен работник.
            Про эмулирование классов на Си вообще не понял…


            1. DistortNeo
              28.08.2017 15:08

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

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

              > Про эмулирование классов на Си вообще не понял…

              Ну вот, например, у вас есть C++ код и вы хотите его оформить в виде динамической библиотеки, но в С-интерфейсом. Что будете делать?


              1. Jef239
                28.08.2017 20:17

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


              1. sim-dev
                28.08.2017 22:12

                Ну вот, например, у вас есть C++ код и вы хотите его оформить в виде динамической библиотеки, но в С-интерфейсом. Что будете делать?
                Ну, я бы сделал так:
                1. конструкторы и деструкторы необходимых классов разместил бы в соответствующих ветках DLLmain (загрузка и выгрузка соответственно)
                2. все публичные методы этих классов вынес бы при помощи функций-оберток в экспортные функции DLL
                3. соответственно все эти функции-обертки, структуры данных и константы, необходимые им, описал бы в заголовочнике.
                Так?


                1. staticlab
                  28.08.2017 22:27

                  конструкторы и деструкторы необходимых классов разместил бы в соответствующих ветках DLLmain (загрузка и выгрузка соответственно)

                  что-то вы не так делаете


                  1. sim-dev
                    28.08.2017 22:31

                    Что именно? Статические экземпляры классов должны быть инициализированы до момента первого обращения к их методам? Где же, кроме как в DLLmain это делать? Ну и почистить память тоже при выгрузке DLL — где?


                    1. DistortNeo
                      28.08.2017 23:20

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

                      CRT сама создаст и разрушит все статические объекты C++.


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


                      1. все публичные методы этих классов вынес бы при помощи функций-оберток в экспортные функции DLL
                      2. соответственно все эти функции-обертки, структуры данных и константы, необходимые им, описал бы в заголовочнике.

                      Да, примерно так.


            1. Jef239
              28.08.2017 20:16

              Быстро меняющиеся технологии — это однодневки, их вообще не стоит учить. Из того, что видимо стоит — С++, java, питон, С#, rust.

              Вполне можно иметь классы на Си. Более того, можно на Си сделать и полиморфизм. Делается структура и набор методов с первым параметром — указателем на структуру. Для полиморфизма — можно и свои VMT завести.

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


              1. 0xd34df00d
                28.08.2017 21:26
                +2

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

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


                1. Jef239
                  29.08.2017 05:05

                  Частично согласен, APL и FORTH потребовали долгого привыкания мозгов. Сколько потребует haskel — подумать страшно. Зато нет проблем с языками, где std::variant — основной тип данных.

                  Так что от мозгов зависит.


              1. sim-dev
                28.08.2017 22:06

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


                1. DistortNeo
                  28.08.2017 23:35

                  А вы не вставайте в ступор, а просто пишите. Не нужно насиловать мозг Хаскелем, просто пишите код на языках с элементами функционального программирования. Хороший пример — Linq из C#, можно попробовать и на C++, но синкасис лямбд C++ довольно многословен.


                  Вот пример кода на C# из моего проекта
                              var v1 = data.Removed.Where(x => x.Type == AttributeType.Parameter)
                                  .Select(x => new KeyValuePair<string, string>(x.Name, string.Empty));
                  
                              var v2 = data.Replaced.Concat(data.Modified).Where(x => x.Key.Type == AttributeType.Parameter)
                                  .Select(x => new KeyValuePair<string, string>(x.Key.Name, x.Value.Value ?? string.Empty));
                  
                              return v1.Concat(v2).OrderBy(x => x.Key);


                  1. sim-dev
                    29.08.2017 07:50
                    -3

                    Код занял бы в 3 раза больше строк, но был бы в 9 раз понятнее. Извините, но я из тех «программистов», которые придерживаются правила «ставь скобки, невзирая на приоритеты операций, чтобы однозначность выражения была понятна абсолютно всем, даже непрограммистам», так что стремление делать код короче, но загадочнее мне абсолютно не понятно.


                    1. F0iL
                      29.08.2017 09:31
                      +1

                      Пример из C++:


                      std::sort(s.begin(), s.end(), [](SomeType a, SomeType b) {
                              return b.field1 < a.field1;   
                          });

                      и


                      struct {
                              bool operator()(SomeType a, SomeType b) const
                              {   
                                  return b.field1 < a.field1;
                              }   
                          } customLess;
                      
                      std::sort(s.begin(), s.end(), customLess);

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


                      Точно также в коде на C#/LINQ приведенном комментатором выше, при разложении лямбд на отдельные вызываемые функции (их там по одной на каждую строку, аж 5 штук, и это еще лайт-вариант) код стал бы не в 9 раз понятнее, а в 9 раз запутаннее, и разобраться "что к чему относится и что за чем стоит" было бы ощутимо сложнее.


                      1. sim-dev
                        29.08.2017 11:08
                        -2

                        Не в коня корм, я оба варианта не понял…


                        1. alexeykuzmin0
                          29.08.2017 11:23
                          +2

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


                      1. DistortNeo
                        29.08.2017 17:21

                        Можно пойти дальше и разворачивать каждый вызов Where, Select и т.д. в код, как это делалось раньше, с использованием `for`.


                        1. F0iL
                          29.08.2017 17:46

                          Еще адовее выходит, да.
                          Вместо


                          var v1 = data.Removed.Where(x => x.Type == AttributeType.Parameter)

                          писать


                          bool SomeTypeFilter(SomeType x)
                          {
                              return (x.Type == AttributeType.Parameter);
                          }
                          
                          var  v1 = new List<Something>();
                          for (int i = 0; i < data.Removed.Length; i++)
                          {
                              if (SomeTypeFilter(data.Removed[i]))
                                  v1.Add(data.Removed[i]);
                          }

                          и это еще без поддержки lazy evaluations


                  1. 0xd34df00d
                    29.08.2017 19:59

                    Не нужно насиловать мозг Хаскелем

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


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


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


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


                    1. DistortNeo
                      30.08.2017 01:25

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

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

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

                      За всё время делал так всего пару раз, для генерации Expression Tree в рантайме. В большинстве же случаев, когда такое возникает, и понятнее, и проще реализовать такой функционал с помощью интерфейсов.


                      1. 0xd34df00d
                        30.08.2017 02:25

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

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


                        Сложно сформулировать это в паре-тройке предложений, но после знакомства с хаскелем я стал писать субъективно более хороший код и на плюсах.


                        А какие практические задачи можно решить с помощью Хаскеля?

                        Ну, на нём таки не только факториалы считать можно. Можно компиляторы писать, можно всякие парсеры-анализаторы логов, можно перекладывалки из одной БД в другую, можно веб-сервисы, можно eDSL для типобезопасного программирования эмбеддщины, много чего можно. Какие-то наркоманы на нём даже ОС пытались писать, но оно умерло лет 10 назад, к сожалению.


                        За всё время делал так всего пару раз, для генерации Expression Tree в рантайме. В большинстве же случаев, когда такое возникает, и понятнее, и проще реализовать такой функционал с помощью интерфейсов.

                        Безусловно. Но, с одной стороны, с таким подходом имеет смысл таки быть знакомым (он вот и вам пригодился). С другой — просто в выбранном вами языке подход с интерфейсом оказывается проще и понятнее.


                        А интерфейсы, как известно — частный случай тайпклассов. Но это уж так.


                1. Jef239
                  29.08.2017 04:52

                  Лямбды были ещё в ALGOL-60 под названием "передача параметров по наименованию". Поищите «Трюк Йенсена» Смысл в том, что при передаче в качестве параметрах X+Y по наименованию, каждый раз при обращении к параметру считается X+Y. А если мы в функции меняем X или Y — то и получим каждый раз разный результат вычисления X+Y.

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

                  Функциональное программирование — это LISP, FORTH и программируемые микрокалькуляторы из детства. Вспомнили калькулятор? Там нельзя было программировать процедурно — только функционально. Вот и в некоторых языках — только функциональное программирование.

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

                  На современном дельфи можно писать лямбды. А функционально программировать — можно было ещё на паскале. Просто неудобно — инфраструктуры нет.


                  1. 0xd34df00d
                    29.08.2017 20:07

                    Функциональщина в стиле LISP и функциональщина в стиле семейства ML-языков — это два разных лагеря.


                    Но всё-таки неплохо, когда язык даёт инфраструктуру и средства для функционального программирования. Так-то в функциональном стиле писать можно и на паскале, и на плюсах, и даже на С, наверное, но очень сложно.


                    1. Jef239
                      30.08.2017 00:31

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


                      1. 0xd34df00d
                        30.08.2017 00:40

                        Я, если честно, не вижу в канонических реализациях рекурсивного спуска (по крайней мере, в тех, что я видел) ничего функционального. Императивно-процедурное вижу, но не функциональное.


                        1. Jef239
                          30.08.2017 01:02

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


                          1. 0xd34df00d
                            30.08.2017 02:32

                            Ну, процедурное программирование таки не равно функциональному программированию, это два разных термина.


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


                            1. Jef239
                              31.08.2017 06:34

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


          1. F0iL
            28.08.2017 12:03

            у Skype на Delphi был написан только UI, да и то в очень-очень древние времена. Сейчас уже давно там Delphi нет.

            Про «программировать под андроиды и айфоны без проблем» — увы, не «без проблем». Пару лет назад даже UI простейших приложений работал весьма медленно и нестабильно, сейчас, возможно, ситуация исправилась, но сама по себе концепция «брать немаленькие деньги за весьма посредственную среду разработки» (у Starter-версии нет даже автодополнения, Карл!), когда есть отличные по качеству бесплатно распространяемые альтернативы — имхо, проигрышная.

            А в области АСУТП (где я крутился не год и не два) большая часть с Delphi на C# переехала (к вопросу о надежности и прогнозируемости сроков). Да и просто, достаточно на любом сайте с вакансиями вбить в поиск названия соответствующих технологий и сравнить количество вакансий, отфильтровав из них приличные (не рассматривая поддержку древних легаси-проектов и олдфажные заводы).


            1. Jef239
              28.08.2017 19:56

              Вообще-то назначение там другое — сделать одно приложение и иметь его и на десктопе под Windows и на мобильниках. Тем самым выиграв пару миллионов на разработку отдельного мобильного приложения. Собственно всегда коньком дельфи была быстрая разработка прототипа. А чем вы его заменит хотите? Где ещё настолько же высокая скорость разработки прототипа GUI-приложений?


              1. F0iL
                28.08.2017 22:09

                Xamarin/C#. Тоже не без недостатков, но весьма активно развивающийся и главное, с большим коммьюнити. И среда разработки/SDK полностью бесплатные.


                1. Jef239
                  29.08.2017 04:59

                  Что там с визуальным конструированием? Глянул пример из вики — похоже, что его нет?

                  Что касается цены… Месячный ФОП разработчика — это не те деньги, которые важны для фирмы.


                  1. F0iL
                    29.08.2017 09:25

                    Все есть. Для Android и iOS «из коробки», для .Forms — либо Gorilla Player, либо UI Sleuth (демо тут vimeo.com/user60270369) — у последнего так кроме визуального конструирования вообще крутые вещи есть, типа возможности заполнять данные в виджетах UI удаленно в запущенном приложении. Открытый код, свободная лицензия :)

                    Проблема не в цене с привязкой к зарплатам разработчиков. Запуская новый проект (если только это не калькулятор для дипломной работы студента) нужно кроме «удобства технологии» задумываться еще о том, где взять разработчиков под эту технологию. И где взять новых разработчиков для поддержки, если проект будет разрастаться или старички рано или поздно уйдут. И каково будет разработчикам при необходимости получения поддержки.
                    Тут можно бросить беглый взгляд на сообщество: по тегу c# на stackoverflow более 1 миллиона результатов, по тегу delphi — 64 тысячи. То же самое с состоянием на рынке труда: C# — 28 тысяч вакансий на indeed, Delphi 2 тысячи вакансий.
                    И даже если какой-нибудь молодой начинающий разработчик по наивности поведется на призывы вида «быстрая разработка, переносимость, и т.д.» и захочет освоить стек Embarcadero, чтобы с этим багажом выйти на рынок труда — то все, провал. Либо плати деньги, либо мучайся со Starter-версиями, которые ограничены настолько, что пытаться работать с ними есть настоящее мучение. При том что у альтернатив бесплатные средства разработки, прекрасная документация и огромное сообщество.


                    1. Jef239
                      29.08.2017 12:56

                      То есть никакого единого визуального редактора нет? И для каждой платформы делать свою морду?

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

                      Баян про запутанность JS
                      image


                      1. F0iL
                        29.08.2017 13:25
                        +1

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

                        Если вас смущает оценка активности коммьюнити по вопросам и ответам, то можно поглядеть на github: madnight.github.io/githut
                        Delphi/ObjectPascal в статистику вообще не попадают из-за крайне низкой популярности

                        Непонятно, с чего вы это взяли

                        Со своего опыта. Качал Starter-версии Delphi и C++ Builder (релиз Berlin), так там даже ничего похожего на IntelliSense не было, не говоря уж о рефакторинг (о чем кстати и написано в Release Notes про ограничения Starter-версий). Иначе как издевательством это назвать нельзя :)


                        1. Jef239
                          30.08.2017 00:26
                          -1

                          Delphi/ObjectPascal в статистику вообще не попадают из-за крайне низкой популярности

                          Не вижу там, например, Visual Studio. Значит на нём уже не пишут?Delphi (как инструмент разработки) — это ещё и С++ и С#.

                          Со своего опыта.

                          Странный у вас опыт. Вы считаете что если вы хотите освоить контролеры Sematic, то должны дома иметь личный контроллер?

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


                          1. F0iL
                            30.08.2017 08:18

                            Не вижу там, например, Visual Studio.

                            Не хочу вас расстраивать, но Visual Studio — это не язык программирования и не фреймворк. Это IDE, и в списке языков программирования ей делать нечего.

                            Delphi (как инструмент разработки) — это ещё и С++ и С#.

                            Это на какой планете? :)
                            В Embarcadero Delphi нет поддержки C++. Она есть в C++ Builder и RAD Studio.
                            И уж тем более там в принципе ни в одном продукте нет поддержки C#.

                            Вы считаете что если вы хотите освоить контролеры Sematic, то должны дома иметь личный контроллер?

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

                            Времена меняются, и Вы, к тому же, сами себе противоречите. Выше вы агитируете за «быструю разработку прототипов», а теперь за «написание на бумажке и отладку на компьютере». Время — деньги, не только для профессиональных разработчиков, но и для только начинающих обучаться всей этой магии. Зачем тратить N времени на изучение основ, когда у конкурирующей и гораздо более распространенной и востребованной технологии это можно изучить за N/3 времени и развиваться дальше?


                            1. Jef239
                              31.08.2017 06:32

                              И уж тем более там в принципе ни в одном продукте нет поддержки C#.

                              Что, правда? Думаете то, что было, 10 лет назад — оно на другой планете было? Ну тогда почитайте

                              Delphi 2006 (Delphi 10, Borland Developer Studio 4.0) Была выпущена в декабре 2005 года. В одной IDE поддерживалась разработка проектов C#, Delphi.NET, Delphi Win32 и C++.
                              Заодно — почитайте про Delphi for .NET и Delphi Prism.

                              Visual Studio — это не язык программирования и не фреймворк.

                              Ровно так же и язык изначально звался Obkect Pascal, а Delphi — это всего лишь IDE. Потом маркетологи все смешали.

                              Чтобы освоить контроллеры Simatic, мне как минимум будет нужна среда разработки с эмулятором.

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

                              Зачем тратить N времени на изучение основ, когда у конкурирующей и гораздо более распространенной и востребованной технологии это можно изучить за N/3 времени и развиваться дальше?

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

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


                              1. F0iL
                                31.08.2017 08:25

                                Что, правда? Думаете то, что было, 10 лет назад — оно на другой планете было?

                                Я знал, что вы сошлетесь на древние версии :) Только вот мы про настоящее время говорим, а не про то что 10 лет назад было.

                                Ровно так же и язык изначально звался Obkect Pascal, а Delphi — это всего лишь IDE

                                И что из этого следует? Object Pascal тоже в актуальном списке нет, есть только в прошлых годах на последних местах.

                                им для изучения нужна лишь документация.

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

                                Чтобы изучить новый язык вам сколько нужно времени? Мне по учебнику — месяц. А сколько вы будете мучаться вашим методом тыка?

                                Попробуйте придти на собеседование на работу в _приличную_ фирму на любую позицию старше Junior'а и сказать про ключевой стек проекта «я вообще никогда ничего подобного не делал и знаю только теорию, но буду изучить технологию под задачу прямо на рабочем месте» и посмотрите на результат.

                                Чтобы изучить новый язык вам сколько нужно времени? Мне по учебнику — месяц. А сколько вы будете мучаться вашим методом тыка?

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


                                1. Jef239
                                  31.08.2017 16:28

                                  И что из этого следует? Object Pascal тоже в актуальном списке нет,

                                  И что? Вы можете написать тот тезис, который защищаете? Есть языки, на которых принято выкладывать на гитхаб, а есть — на которых нет. JEDI, например, вовсе не на гитхабе хостится.

                                  Не вижу там ada, хотя на ней огромная куча военных проектов и авионики пишется.

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

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

                                  Угу. Именно что немного почитал, кое-что поделал руками — и получил говнокод. А если читать учебники и «от корки до корки» делать задания — код получается вполне нормальный.

                                  Попробуйте придти на собеседование на работу в _приличную_ фирму

                                  А зачем? я на собеседования ходил один раз в жизни, в 17 лет. С тех пор — переманивали. И мы сейчас переманиваем со словами «не важно, что ты не знаешь GPS, как раз этому мы тебя научим».

                                  Вот она и разница в скорости разработки.

                                  Один раз потратите неделю на поиски ошибки — начнете каждый раз проверять по API. Нужно помнить, что в принципе умеет библиотека. А подробности вызовов — обязательно нужно проверять.Собственно в нормальном IDE это не сложно — можно мышкой навести и прочитать описание параметров.

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

                                  В голове я держу не так много — 100-200 тысяч строк. Так что предпочитаю это место потратить на код текущего проекта.


                            1. Jef239
                              31.08.2017 06:42

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

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

                              Интересно, а для изучения английского вам потребовался живой англичанин или хватило его эмулятора? :-)


                              1. F0iL
                                31.08.2017 08:29

                                Интересно, а для изучения английского вам потребовался живой англичанин или хватило его эмулятора? :-)

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


                              1. F0iL
                                31.08.2017 10:17

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


                                1. Jef239
                                  31.08.2017 15:27

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

                                  А вот вам обратный пример. Китаянка, лет 10 в России, победитель конкурса русского романса имени Изабеллы Юрьевой. И мне пришлось объяснять ей, что такое совершенная форма глагола. За 10 лет практики — не поняла. Потребовалось полчаса теории — и она нашла эквивалент в китайском и поняла отличия.


                                  1. staticlab
                                    31.08.2017 16:27

                                    победитель конкурса русского романса имени Изабеллы Юрьевой

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


                                    1. Jef239
                                      31.08.2017 16:32

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


                      1. F0iL
                        29.08.2017 13:42
                        -1

                        никто не пользовался бы word. Потому что «либо плати деньги, либо мучайся со WordPad».

                        Так обычно либо платят деньги за лицензию/подписку, либо пользуются бесплатными альтернативами (LibreOffice, SoftMaker, и т.д.).
                        Есть, конечно, еще вариант «скачать с торрента», в некоторых странах (например РФ) он вполне осуществим, а в некоторых странах даже физлицо за такое может словить неиллюзорный штраф.


                  1. F0iL
                    29.08.2017 09:47

                    Ну и вообще, если упарываться на тему «быстро написал и запустил везде», вариант Electron/Cordova может в данном случае даже лучше подойти.
                    Тут будут не только десктопы (и не только Win и Mac) и мобильные устройства, но еще и тонкие клиенты, или вообще запуск в любом браузере из облака. А с Bootstrap, React/Angular и кучей готовых наработок пилить UI на таком стеке вполне приятно даже без визуальных редакторов, а въехать в тему сможет даже джуниор, благо материалов в наше время более чем достаточно и сообщество, опять же, хорошее.


                    1. Jef239
                      29.08.2017 12:26

                      А как за пределы песочницы выйти? Обмен по ком-порту, запись файлов данных… Насчет «любого браузера» — это в теории хорошо, на практике — намучались с IE 8/IE 9 даже на простейшем, встроенном в железку сайте.

                      Но для какого-то класса разработок — да, вполне подойдет.


                      1. F0iL
                        29.08.2017 12:46

                        А в чем проблема добраться до файловой системы, сети, периферии? Если вы запускаетесь в браузере, то это все крутится где-нибудь в node на сервере и там с этим проблем нет, а данные вы получаете уже через какой-нибудь REST API, а если у вас десктопное приложение или под мобильное устройство — то в Electron/Cordova вы не в песочнице, а обладаете почти теми же возможностями что «родное» приложение, и есть или нативные API для этого, или сторонние npm-пакеты и для работы с портами, файлами, коммуникационными протоколами, MQ, СУБД, и т.д.

                        IE 8 вышел 8 лет назад, не удивительно, что вы с ним намучались :) В современных версиях даже Chromium/FF/Edge с поддержкой стандартов с каждым годом все лучше и лучше.
                        Выше упоминалась сфера АСУТП, так вот, проект новой SCADA-системы для систем радиотелемеханики, в котором я когда-то был ведущим разработчиком, строили именно с подобным подходом. Ядро на C#/.Net (благо, есть отличная открытая реализация OPC UA клиента и сервера, и всякие вкусности ORM, WebApi и т.д. «из коробки»), а визуализация вся на HTML, CSS, JS, SVG — делается все довольно просто, графические возможности почти безграничны. У заказчиков клиенты были как под Windows/IE у администраторов, так под Linux (FF) на тонких клиентах у диспетчеров, так и на Android-планшетах у технологов и механиков.


                        1. Jef239
                          30.08.2017 00:14

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

                          Ну вот представьте себе погранкатер. Ноут есть у капитана, но он с windows 98 SE и секретными картами. То есть одну нашу программу поставить на него можно, а весь стек C# — уже нельзя. И в руки нам его никто не даст.

                          Так что C# мимо, браузерные технологии — на уровне IE 5.5, остается Qt и Delphi.

                          C IE8 была аналогичная история. Радиопередающий комплекс МЧС, права на обновления софта у нас нет. Да и выход в инет запрещен физически. А там на части машин — то ли старая версия IE 8, то ли IE 7. А показывать наш сайт нужно вообще в браузерном окне от чужой программы.

                          И вот к такому — нужно быть постоянно готовым. И это тоже — АСУТП, просто чуть иной.


                          1. F0iL
                            30.08.2017 08:23

                            Так сразу и уточняйте, что речь идет про устаревшее оборудование и операционные системы 20-летней давности. Это все-таки довольно специфический случай.

                            К тому же, я более чем уверен, что написанное на Delphi/C++ Bulder FMX-приложение (мы же начинали разговор с «быстро напиши один раз и запусти везде», то есть это должен быть кросс-платформенный FMX, а не VCL) на Windows 95/98 и соответствующем железе точно так же не запустится вообще.


                            1. F0iL
                              30.08.2017 08:37

                              Даже более того. VCL-приложения тоже не заработают.
                              https://www.embarcadero.com/ru/products/delphi/faq


                              Applications built with Delphi 2009-XE2 and VCL will run on Windows 2000 or later. Applications built with Delphi XE3-XE5 will run on Windows XP and later. Applications built with Delphi XE6-XE7 will run on Windows 7 later.


                              1. Jef239
                                31.08.2017 05:36

                                Читаем внимательней там же

                                Из-за использования Unicode в качестве строкового типа по умолчанию Windows 95, 98 и ME не будут выполнять приложения, созданные в Delphi 2009 или более поздних версиях продукта. Эти операционные системы не поддерживают строки Unicode, а корпорация Microsoft больше не поддерживает эти версии Windows.

                                Так что «петлей и веревочной палкой» все можно запустить в win95/98. Чуть-чуть модернизации — и все заработает. Delphi 7 под unicode переделывать сложнее было.


                                1. F0iL
                                  31.08.2017 08:50

                                  Расскажите подробнее. Будете переписывать исходники VСL, добавлять везде врапперы для функций использующих строки?
                                  Попробуете использовать либы от старых версий? У вас очень много свободного времени, видимо. Впрочем, какой бы вариант вы не выбрали, это все будет бесполезно, т.к. VCL само по себе не годно для подхода «быстро написали и потом компилируемся сразу под Win, Mac, Android и iOS», который вы выше заявляли как главное преимущество.


                                  1. Jef239
                                    31.08.2017 15:45

                                    Видите в чем дело… я работал с библиотекой. реализующей обратную функцию (unicode в неюникодном VCL) и понимаю, что мест, где придется менять код — совсем немного.

                                    Ещё проще — сохранить совместимость исходного кода со старыми версиями без unicode.

                                    А с FMT — посмотрим как пойдет переход с VCL на FMT. Пока что приложение у нас на VCL (на CDBuilder 5). Вариантов довольно много, например — разработка на VCL и автоконвертер на FMT.

                                    У вас очень много свободного времени, видимо.

                                    У нас в этом приложении — пяток человеко-лет труда. Дешевле потратить пару месяцев на перенос, чем писать параллельную версию.


                            1. Jef239
                              31.08.2017 05:42

                              Sarcasm on
                              Специфический? Скажите, а ваш домашний роутер для настройки windows 10 с последними апдейтами требует? Или настраивается с чего угодно, начиная с windows 3.10?
                              Sarcasm off

                              Это довольно типовой случай, просто чуть другой вид АСУТП.

                              кросс-платформенный FMX, а не VCL) на Windows 95/98 и соответствующем железе точно так же не запустится вообще.

                              У FMX основное требование — DirectX 9.0, а он есть под Win98SE. Так что выпадает только Win95.


                              1. F0iL
                                31.08.2017 08:57

                                Мой домашний роутер вообще через telnet/ssh консоль конфигурируется. Для любителей GUI и удобной настройки есть ПО, для которого нужна ось не старше Win 2000 (в старых версиях, в новых возможно уже и XP).
                                Впрочем, и более попсовые роутеры, веб-админка у которых не работает в IE 7 мне тоже попадались.


                                1. Jef239
                                  31.08.2017 15:06

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


                              1. F0iL
                                31.08.2017 09:00

                                Вы сами не читаете ссылки, которые приводите. Там прямым текстом написано, что минимальная версия ОС, на которой могут работать FMX-приложения — это Windows XP SP2 или Server 2003.
                                Не говоря уж о том, что с учётом прожорливости FireMonkey, железо, времён Win98 что-то чуть более сложное чем хеллоуорлд нормально просто не потянет.


                                1. Jef239
                                  31.08.2017 15:19

                                  Железо времен Win98 и пользователь, работающий на win98 — это разные вещи. Если бы железа не хватало для ворда и офисных игрушек — его бы сменили. Так что железо будет всего лишь 10-15 летней давности.

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


                              1. F0iL
                                31.08.2017 11:47

                                Это довольно типовой случай, просто чуть другой вид АСУТП.

                                Тут просто нужно иметь в виду, что сама сфера АСУТП — это всего лишь небольшой залив в огромном океане мира разработки ПО, а проекты, с которыми вы знакомы — лишь капли в нем.
                                Мне тоже несколько лет назад пришлось столкнуться с необходимостью делать большой проект под плату с процессором Am186 используя Borland C Compiler 3.1 выпуска 1992 года, но я прекрасно понимаю, что 99% программистам в современном мире с этим столкнуться не придется, и у меня хватает ума не навязывать необходимость подобного опыта и использования этих средств другим :)


                                1. Jef239
                                  31.08.2017 15:36

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

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

                                  плату с процессором Am186

                                  ICP DAS I-7188? Хорошая машинка.


        1. RomanArzumanyan
          28.08.2017 13:01
          +1

          И где, кроме embedded devices, этот Си?
          Си много где. До сих пор — один из самых популярных языков для разработки. Полагаю, что никуда он не денется — по крайней мере, до тех пор, пока будем программировать компьютеры Тьюринга.


        1. nweb
          29.08.2017 17:08

          мне не дадут работу, потому что я не знаю технологий, а технологии я не узнаю, пока не получу работу

          Вы же не думаете, что сеньоры и миддлы от рождения молотят по клавиатуре? Никто в здравом уме не подпустит новичка к серьезному проекту.
          0 -> джуниор -> миддл ->… В таком порядке. Джун умеет решать задачи на своем уровне в отличии от «нулевика».
          Кто хочет — ищет возможности. Кто не хочет — ищет причины (с). Адресовано не лично вам, а сферическому читателю :)


    1. JekaMas
      26.08.2017 15:59

      Есть такая проблема, знания быстро устаревают. Можно попробовать выбрать язык и технологию, которая устаревает медленно. Как пример приведу Golang: однажды приобретенные знания остаются актуальными годами.


      1. Gorthauer87
        26.08.2017 17:40

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


        1. JekaMas
          26.08.2017 18:52

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


        1. mksma
          27.08.2017 01:28

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


      1. GarudaJI
        26.08.2017 20:31
        +1

        Какие-то знания может и быстро устаревают — но опыт полученный в боевой среде нет. И, к примеру, проблемы и подходы распределенных приложений, внезапно, в основе не меняются годами и даже десятками лет wiki Distributed algorithms

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

        Так что, утрируя, знание языка — ничто, алгоритмы и опыт все =)


    1. aliev
      27.08.2017 00:20
      +16

      image


      1. ankh1989
        28.08.2017 00:28

        Хм… раз мне кажется довольно логичным, что "5" + - "2" равно "5-2" то джаваскрипт мозга у меня запущенный.


        1. KoToSveen
          29.08.2017 05:26

          Как по мне, так гораздо логичнее ''5'' + ''-2'' = ''5-2'', так что да, у Вас именно это.


        1. DistortNeo
          29.08.2017 17:23

          Нелогично, что "+" — это конкатенация строк, а "-" — арифметическая операция. В том же PHP для конкатенации строк используется ".", чтобы не было путаницы.


          1. sumanai
            29.08.2017 22:14

            Нелогично, что "+" — это конкатенация строк

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



      1. inwerp
        28.08.2017 02:07
        +1

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


      1. AnneSmith
        28.08.2017 08:54
        -7

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


        1. Subrisk
          28.08.2017 10:36

          Ко-ко-ко! Чувства юмора отсыпать?


          1. AnneSmith
            28.08.2017 17:50
            -4

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


            1. KoToSveen
              29.08.2017 05:31
              +1

              а кто-то работает проституткой в цивилизованных странах


      1. ameli_anna_kate
        29.08.2017 00:56

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

        Не давно на собесе было.
        console.log(1);
        setTimeout(function () {
        console.log(2);
        }, 0);
        console.log(3);


      1. Areso
        31.08.2017 10:57

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


    1. nahmnenik
      28.08.2017 14:20

      На самом деле бред, в моем случае помог и по прежнему помогает letcode, topcoder, kaggle и др. Ровно как и петпроджекты, не раз слышал истории о том, как люди имея всего 1 персональный проект после вуза успешно приходили на senior позиции в Я не имея до этого никакого опыта. Вывод -было бы желание. Хотя по своему опыту -соло учиться сложно, держать уровень мотивации и выбирать направление лучше с ментором. Обычно имея хорошего наставника вам понадобится значительно меньше времени. Но нет ничего не достижимого- алгоритмизация вычислений это то, чему можно научить любого, да потолок у всех разный, но это уже совсем другая тема.


  1. Busla
    26.08.2017 12:45
    +5

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


    1. Hardcoin
      26.08.2017 15:42
      +2

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


    1. Bassist067
      26.08.2017 17:03
      +1

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


    1. DistortNeo
      27.08.2017 01:59

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


  1. RSSnews
    26.08.2017 13:08
    +1

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

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


    1. 047
      26.08.2017 18:03

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


      1. kbaa Автор
        26.08.2017 20:39
        +1

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


        1. 047
          27.08.2017 17:55

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


  1. Zoolander
    26.08.2017 13:29
    +7

    >> Вспомнил, что когда-то хотел стать программистом. Мне было это интересно. А сейчас мне 30

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

    До 42 лет у вас еще есть время для выбора и изучения технологии и фреймворка ))


    1. kbaa Автор
      26.08.2017 15:20
      +1

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


      1. AnneSmith
        26.08.2017 17:05
        -3

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

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


        1. Sword_Dancer
          26.08.2017 20:40
          +4

          на самом деле надо знать предмет если не досконально, то очень хорошо, прежде чем подписываться на серьезную работу за деньги, иначе это называется простым словом «мошенничество»
          Т.е. визитку на Битриксе для автомастерской должен писать непременно сеньор с 10 годами опыта работы в Гугле и тремя высшими?
          Мошенничество — это когда результат не соответствует требованиям заказчика. Если с требованиями можно справиться, пройдя десяток уроков в интернете, то всё честно.

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


          1. AnneSmith
            27.08.2017 21:22

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


            1. Skerrigan
              28.08.2017 07:25

              <зануда_мод_он>
              А если…
              — визитки на битриксе
              … но еще и…
              — умение делать глубокий рефакторинг
              — реактивность в вебе
              — понимание сетевых протоколов
              — разработка на java
              — разработка на java (android)
              — UI/UX/документация/VCS/etc.
              ???

              Уже можно считаться программистом?

              </зануда_мод_офф>


        1. mikaakim
          26.08.2017 20:40
          +1

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

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


          1. evvlasov
            27.08.2017 09:34

            Я учился кодить на Курсере, поэтому фундаментальных знаний очень не хватает. Пошёл в универ, взял Computer Science 203, благо, я там работаю :)
            Хочу сказать, что я ужасно разочарован. Очень медленная подача материала, куча ненужной информации. Я все задания с помощью википедии и стаковерфло, получил по сто процентов. Но мне это для галочки нужно было.


            1. AnneSmith
              27.08.2017 21:27
              -1

              ну так вы галочку и получили


        1. kbaa Автор
          26.08.2017 20:46

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


          1. AnneSmith
            27.08.2017 21:33
            -2

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


            1. kbaa Автор
              27.08.2017 22:48

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


              1. AnneSmith
                28.08.2017 09:05
                -3

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


                1. kartvladek
                  28.08.2017 18:13
                  +1

                  Они таки тренируются. Или у вас есть наивное предположение что умения даются при рождении?


          1. kartvladek
            28.08.2017 18:11

            А ведь верно.


        1. evvlasov
          27.08.2017 01:53

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


          1. AnneSmith
            27.08.2017 21:39

            у врача тоже простая профессия: сиди себе в кабинете и выписывай больничные
            попробуйте устроиться программистом в HFT


            1. ankh1989
              28.08.2017 00:34

              В этом HFT разве какие то особенные зарплаты? Посмотрел на glassdoor — стандартные $120к платят.


              1. AnneSmith
                28.08.2017 09:12
                +1

                фармацевтам, крутившим гипсокартон, в надежде, что он доучится?


              1. 0xd34df00d
                28.08.2017 18:38

                Не смотрите на glassdoor. 300-350к вполне могут предложить не сильно необычному C++-программисту, если в его диапазон знаний входят вещи от конвееров и кешей в процессоре и их влияния на производительность до шаблонно-констекспровой наркомании из свежих стандартов. Матан при этом знать совсем не обязательно, кстати.


                1. alexeykuzmin0
                  28.08.2017 21:08

                  300-350к долларов в год в долине или 300-350к рублей в месяц у нас?


                  1. 0xd34df00d
                    28.08.2017 21:26
                    +1

                    В Нью-Йорке в год.


        1. Zoolander
          27.08.2017 18:03
          +1

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

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


      1. KoToSveen
        29.08.2017 05:46

        Недавно на хабре появились пара статей Левана Квирквелии InkOut, прочитав которые, я загорелся. Загорелся созданием мобильного приложения для dnevnik.ru (дочка учится в школе, скоро сын пойдёт, захотелось смотреть успеваемость так, как мне этого хочется). И я начал изучать Java. Мне 35.
        p.s. Запросил доступ к API Дневника, ответили, что уже есть мобильное приложение и тишина…


    1. AllexIn
      26.08.2017 18:55
      +3

      Тут есть другая проблема.
      Зарплата джуна.
      Я вот сейчас не рискну поменять специальность, потому что это означает уменьшение заработка в разы. То есть несколько лет надо выкинуть, просто чтобы вернуть то, что уже есть сейчас…
      Но мне повезло, я работу свою люблю. :)


      1. svk28
        27.08.2017 11:08

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


    1. evvlasov
      27.08.2017 01:30
      +1

      Привет. В 41 год в 2015 из чистого интереса взял курс по R на Курсере. Через год я уже работал в университете программистом. Пока на минималку, но для начала и это не плохо, главное, что я стал получать деньги за код. Теперь это как наркотик, я не могу бросить. Наверное, таки есть какая-то программисткая железа :)
      Как верно заметил автор ниже, когда понимаешь, что для начала не нужны суперспособности, гораздо легче начинать.
      Я теперь всех агитирую учить код.


      1. questor
        27.08.2017 02:37

        Наверное, таки есть какая-то программисткая железа :)


        Любознательность.


        1. evvlasov
          27.08.2017 09:37

          У нас в лаборатории работают микробиологи и аналитики, ужасно любознательные, но на компьютер с вилами бросаются


  1. anathem
    26.08.2017 13:59
    +1

    Все получится, было бы стойкое желание :)
    У меня похожий опыт, который описывал на хабре в 2011м: https://habrahabr.ru/post/128006/. Сам выучил (спасибо авторам книг/курсов и стаковерфлоу), сферу сменил )


  1. KotV4
    26.08.2017 14:28
    +4

    Если интересно, что было дальше – пишите в комментариях.

    Интересно! И что было дальше?


  1. goricvet
    26.08.2017 14:40

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


    1. kbaa Автор
      26.08.2017 15:34

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


  1. vinogradoff
    26.08.2017 14:41
    +7

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


    1. AnneSmith
      26.08.2017 17:09
      +5

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

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


    1. kuil
      27.08.2017 15:44
      +1

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


      1. SilverHorse
        27.08.2017 17:49
        +1

        Возможно потому, что рискуете получить стаканчик без дна. Полиэтилен стремительно размягчается и плавится при температуре 100-120 градусов. А вот в полистирол (из которого делают белую одноразовую посуду) лить кипяток опасно — он не только плавится, но и происходит его разложение до стирола (крысиная LD50 = 500 мг/м3) и производных бензола.


        1. AVX
          28.08.2017 08:33
          +1

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


          1. Markscheider
            28.08.2017 14:09

            Мы как-то вот чай кипятили в полиэтиленовых пластиковых «полторашках», прямо на костре.
            Можно воду вскипятить в бумажном кульке, если что. См. ютюб, там еще в полиэтиленовых пакетах ухитряются…


            1. alexeykuzmin0
              28.08.2017 15:44
              +1

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


  1. Bassist067
    26.08.2017 14:47
    +2

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

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


  1. strayker1206
    26.08.2017 14:48
    +2

    Черт возьми, закончили на самом интересном месте! Это что, троллинг такой?) Конечно, пишите дальше! У вас хороший стиль изложения, легко читается.


    1. kbaa Автор
      26.08.2017 14:58
      +1

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


  1. XakRU
    26.08.2017 16:04
    +1

    Проблема выбора профессии сейчас очень актуальна. И часто требования работодателей очень разные но сводятся к одному — нужен человек-комбайн.
    А по факту видел как не брали на работу в IT по возрастному критерию:
    а) молодой, да он еще сырой, его учить и учить, нам нужен готовый специалист.
    б) да ему уже за 25-30, на должность начинающего специалиста/стажера мы его боимся брать, вероятно рукожоп вот и не нашел еще себя.
    в) да ему уже много лет, будет мне перечить. Да и как мне руководить более взрослым сотрудником?

    Зависит от тараканов в голове, но я бы рекомендовал после 30-35-ти начинать что-то свое.


    1. kbaa Автор
      26.08.2017 16:07
      +1

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


      1. AnneSmith
        26.08.2017 17:12

        это чистой воды дискриминация, а не навыки руководства


        1. Hardcoin
          26.08.2017 17:29
          +1

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


          1. AnneSmith
            26.08.2017 18:02

            сама постановка вопроса «подходить по возрасту» — это и есть дискриминация на уровне предприятия


            1. Hardcoin
              26.08.2017 18:16
              +1

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


              1. AnneSmith
                26.08.2017 18:58
                -1

                а так вы оправдываете дискриминацию :)
                это все объясняет


                1. Hardcoin
                  26.08.2017 19:17

                  У вас есть непредвзятые доводы, без использования "оппонент такой-то, значит все понятно" (напоминает ad hominem)?


                  К тому же мой комментарий не об этом.


                  1. AnneSmith
                    26.08.2017 20:11

                    напишите, что вы не оправдываете дискриминацию :)


                    1. Hardcoin
                      26.08.2017 21:26

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


                      1. AnneSmith
                        28.08.2017 09:19
                        -2

                        речь не о заказчиках, а о сотрудниках по найму

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


                        1. Hardcoin
                          28.08.2017 10:37
                          +1

                          О сотрудниках? Понятно. Т.е. вы полагаете, что у них есть свобода выбора, с кем работать, а на работодателей такая свобода не распространяется? Обязаны взять на работу того, кто пришел? :) А на партнёров? Хотя бы в выборе партнёров и контрагентов есть такая свобода у заказчика?


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


                          1. AnneSmith
                            28.08.2017 17:58
                            -3

                            вы и еще расист

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

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

                            видимо, расизм тут тоже в почете

                            хорошо, еще не потребовали перед ними извиниться


                            1. Hardcoin
                              28.08.2017 19:19
                              +1

                              Вы опускаетесь до необоснованных обвинений, не надо так, пожалуйста.


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


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


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


                1. 0xd34df00d
                  26.08.2017 21:50

                  Требовать определённого образования — тоже дискриминация?


                  1. AnneSmith
                    27.08.2017 21:48

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

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


                    1. 0xd34df00d
                      27.08.2017 22:25
                      +1

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


                      1. ankh1989
                        28.08.2017 00:43
                        +3

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


                      1. AnneSmith
                        28.08.2017 09:25
                        -4

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


                        1. 0xd34df00d
                          28.08.2017 18:42
                          +1

                          А, мы говорим не о морально-этической стороне, а лишь только и исключительно о законах? Ну, так бы сразу и сказали.


                          Хотя лично я бы поспорил о первостепенности морали.


                          У вас забавная пассивная агрессия, кстати.


                    1. ameli_anna_kate
                      29.08.2017 00:49
                      +1

                      Разве это дискриминация, вот когда ты отвечаешь на все вопросы на собесе правильно, а тебя не берут — вот это печалька


                      1. 0xd34df00d
                        29.08.2017 20:10

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


    1. AnneSmith
      26.08.2017 17:11

      ищите работу в приличных странах, там нет дискриминации по возрасту, полу, национальности и расе, пенсия начинается в 65, так что за 30-35 лет вы вполне успеете построить приличную карьеру


    1. Barabas79
      26.08.2017 20:47

      Зависит от тараканов в голове, но я бы рекомендовал после 30-35-ти начинать что-то свое.

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


  1. shishmakov
    26.08.2017 17:19
    -5

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


    1. AnneSmith
      26.08.2017 17:27
      +7

      принудительная армия да еще в «советском» варианте — это изначально неправильно


    1. AllexIn
      26.08.2017 19:57
      +1

      Я лично жил во времена, когда еще был страх перед армией в которой адская дедовщина и многие другие страшные вещи. Да и все отслужившие друзья в один голос говорили что нечего там делать.
      Сейчас армия другая. Имел возможность пообщаться с большим количеством военнослужащих как из обычных частей, так из СОБР, ГРУ и т.п. Сейчас, конечно, надо не отмазываться. Сейчас надо искать возможности попасть в «правильные» части.


    1. lpwaterhouse
      26.08.2017 20:47
      +8

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


      1. kbaa Автор
        26.08.2017 20:59

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


        1. lpwaterhouse
          26.08.2017 21:02
          +9

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


          1. kbaa Автор
            26.08.2017 21:21
            +2

            Мы уходим в оффтоп. Лично я за год:
            получил навыки монтажа при минимальном наборе инструментов (обжимать RJ45 отверткой это самое детское)
            научился настраивать ОПС
            познакомился с многими хорошими людьми из разных уголков страны
            стал на порядок спокойнее
            отъелся и отоспался (сон и еда по расписанию — это нудно, но эффективно) и вообще здоровье покрепче стало
            Было бы желание, провести время с пользой можно везде. Но, повторюсь, пока армия это черный ящик, агитировать за нее не буду. Но и демонизировать тоже не стоит.


            1. lpwaterhouse
              26.08.2017 21:26

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


              1. kbaa Автор
                26.08.2017 21:40
                +2

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


              1. Hardcoin
                26.08.2017 21:40
                +3

                Если объективно — в его комментарии много плюсов указано. Желаю вам, что бы у вас каждый год был более продуктивен, чем год в армии у kbaa. Я за последние десять лет оценил — не каждый год вообще приносит какую-то пользу.


          1. ozonar
            31.08.2017 07:23

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

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

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

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


      1. shishmakov
        28.08.2017 06:02
        -1

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


        Рассуждения о каких-то не заработанных деньгах и опыте работы не аргумент. Он теряется с годами, а друзья по армии остаются до сих пор.


    1. kbaa Автор
      26.08.2017 20:56
      +2

      На тот момент я так думал именно так. Сейчас я считаю, что можно было бы и раньше отслужить. Хотя и тогда я не сильно старался, просто вроде бы и корочки нужны, и отсрочка дается. А в итоге мне даже понравилось, куча нового опыта. Печалит только, что не видел, как росла старшая дочь (ей было полтора года когда уходил, и за год там очень много интересного происходит) — реабилитировался на младшей
      НО
      я бы мог попасть в какуюнибудь совсем убогую часть и потерять год просто так. И в часть ГРУ, как мне военком обещал, я тоже не попал — обидно. Было бы больше уверенности, что в армии ты этот год проведешь не зря — никто бы не косил. Вообще, это тема для отдельной беседы, и оффтоп


  1. AnneSmith
    26.08.2017 17:26
    +2

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

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

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


    1. Hardcoin
      26.08.2017 17:37
      +1

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


      1. AnneSmith
        26.08.2017 18:01
        -6

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


        1. Hardcoin
          26.08.2017 18:18
          +1

          Минус не мой, но как он иллюстрирует то, что вы имеете ввиду, не ясно.


          1. AnneSmith
            26.08.2017 19:05
            -4

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


            1. Hardcoin
              26.08.2017 19:20
              +1

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


              1. AnneSmith
                26.08.2017 20:18

                переход на личности — nice try :)

                вы сами об этом написали:
                habrahabr.ru/post/336442/#comment_10384872

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


                1. Hardcoin
                  26.08.2017 21:22
                  +2

                  Заучивание алгоритмов — это какая-то глупость. Квик-сорт наизусть нужен разве что разработчику алгоритмов сортировки. Не ищите в комментариях того, чего в них нет, пожалуйста.


                  1. mike1
                    27.08.2017 14:21
                    +1

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


                    1. AnneSmith
                      27.08.2017 21:58

                      это все сегодня гуглится
                      а вот архитектуру нового фреймворка, который сэкономит вам месяцы неподъемного труда, вы вряд ли сможете нагуглить


                      1. 0xd34df00d
                        27.08.2017 22:34
                        +1

                        А зачем гуглить архитектуру нового фреймворка? Вы по архитектуре делаете вывод, сколько он фреймворк вам сэкономит?


                        1. AnneSmith
                          28.08.2017 09:31

                          а как можно сделать вывод по архитектуре фреймворка, которого еще не существует?


                          1. 0xd34df00d
                            28.08.2017 18:44

                            А, вы имели ввиду самостоятельное написание фреймворка, который сэкономит месяцы? Тогда да.


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


                  1. AnneSmith
                    27.08.2017 21:53

                    так а там, кроме алгоритмов, больше ничего нет


    1. a1111exe
      26.08.2017 19:01
      +4

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


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


      Ваш покорный слуга — самоучка, учившийся в классе с сильным акцентом на математике, физике, с введением в кибернетику, включая архитектуру компьютера и программирование на ассемблере и Паскале. Потом успешно успел всё это забыть, и только после 30 стал заново интересоваться предметом, причём не столько для заработка (хотя и это тоже), сколько из личных исследований некоторых философских вопросов, связанных с логикой и теорией множеств. Сегодня (37 лет) в одной фирме считаюсь экспертом по различным программным системам, реализующих сервисы и бизнес-процессы на 3-х разных языках (Perl, JS, PHP), часть из которых были написаны с участием инженеров ещё в районе 2000-го г. И мне очень часто приходится поддерживать (и исправлять, когда позволяют дедлайны) страшный говнокод, написанный инженерами, который реализует, если не все, то, наверное, большинство из известных антипаттернов — от жуткой смеси презентации с логикой и до божественных функций и классов (там, где используется ООП), повсеместных глобальных переменных, значения которых используются в функциях посторонних модулей, безбожного копирования кода сотни раз и т.д.


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


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


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


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


      1. AnneSmith
        26.08.2017 19:09
        -2

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


        1. a1111exe
          26.08.2017 19:29

          Вы серьёзно сравниваете по сложности и важности организм человека с программой? :)


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


          1. AnneSmith
            26.08.2017 20:27
            +1

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

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

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


            1. a1111exe
              26.08.2017 20:40

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


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


              1. da-nie
                26.08.2017 22:19
                +1

                Искренне надеюсь, что даже отличников-студентов не пускают к продакшн-программированию космических кораблей


                Мне горько вас разочаровывать, но если на предприятии во время СССР не требовались программы (во время СССР — потому что тогда людей было много и на том же ЦСКБ Прогресс есть множество людей для программ и их фрагментов — и так заведено изначально) и отделы для разработки программ не создавались, а для современной продукции программы нужны, то начальство, обычно, не понимает, как эти программы писать и что это вообще такое, а потому разработка ПО сводится к «а пофиг, Вася напишет там что-то». А этот Вася бездарь и никаким программированием не увлекался никогда и потому пишет на уровне школьника, едва увидевшего компьютер. Вообще может всю программу в одну функцию main запихать и тому подобное. Ну и комментариев Вася не делает. А, ну и ещё нюанс. Вася плевал на работу прибора — он напишет ровно то, что ему скажут в ТЗ. Он, извините, алгоритм на язык программирования переложить может (он так вам скажет), а придумать этот алгоритм — это не его дело. Выдайте ему ЛМФ (логико-математические формулировки) и он будет по ним делать один в один. Но вся штука в том, что написать алгоритм работы с прибором со всеми нюансами практически синоним написать программу самому за Васю! Вот и тратишь столько нервов, глядя на сделанное Васей (а оно не только по оформлению хреново — оно ещё и не работает как надо, ибо, как я уже сказал, Вася от вас ждёт подробного алгоритма по работе с прибором), что лучше бы сам два года назад начал за него делать это ПО. Всё равно всё переделывать. А знаете, где код этих Вась будет применяться? Честно, вам лучше не знать — спать будете плохо. Вот так вот у меня в НИИ для военной техники и пишутся программы.


                1. a1111exe
                  26.08.2017 22:52
                  +1

                  Я в шоке.


            1. Sword_Dancer
              26.08.2017 23:04
              +9

              вам никто не запрещает кодить, но тогда честно называйте себя кодером, а не разработчиком
              Господи, как надоели эти обезьяньи ярлыки и то как с ними носятся… Раньше нельзя было себя назвать программистом, типа много на себя берёшь, ты паршивый разраб, а не программист, а теперь новая мода — разработчик это тоже принадлежность к «илите»?

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


              1. AnneSmith
                28.08.2017 10:39
                -1

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


                1. RomanArzumanyan
                  28.08.2017 13:09
                  +4

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

                  Что за программы, что за деньги — вопрос десятый.


                  1. AnneSmith
                    28.08.2017 18:03
                    -4

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

                    вот поэтому у вас и такие врачи и такие программисты


                    1. RomanArzumanyan
                      28.08.2017 18:53
                      +2

                      у вас и такие врачи и такие программисты

                      Кого вы имеете ввиду?


                1. 0xd34df00d
                  28.08.2017 18:45

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


                  Не надо так.


                  1. Skerrigan
                    29.08.2017 04:08
                    +1

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


        1. kartvladek
          28.08.2017 18:27

          у вас зуб на врачей? врачи вам что-то не так поправили? смешно же читать, ей богу


    1. DaylightIsBurning
      26.08.2017 20:40

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


      1. AnneSmith
        28.08.2017 10:44

        и давно медбрат стал облегченным вариантом обучения на достойное выполнение обязанностей врача? :)

        санитаров забыли — там вообще без обучения


  1. dmitry_dvm
    26.08.2017 18:36

    А я для практики, когда решил сменить деятельность, предложил одной конторе, услугами которой сам пользуюсь (у них уже были клиенты под айфон и андроид), написать UWP приложение и написал за 2 месяца по вечерам. Получил опыт, строку в резюме, немного денег и приложение, которым сам пользуюсь. Кстати в 30 лет в .Net пришел, правда не совсем с нуля, до этого 5 лет QA, саппорт и немного js учил, а до этого продажи полиграфии и прочего (противно вспоминать). Образование самое гуманитарное, гуманитарней не бывает.


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


  1. AllexIn
    26.08.2017 20:02

    Для математики ВО не нужно. Математика проста и осиливается без ВУЗа на нужном уровне.
    И разработка — она не про математику. Она про проектирование.
    Я согласен, что ВО важно. Если это ВО полученное в MIT, например. А у нас… Нунаверное где-то есть реально адекватные спецы… А я вот учился в крупнейшем ВУЗе Повольжья, у которого только корпусов с десяток. Несколько библиотек. Собственный бассейн и вообще крутой спортзал…
    И мне довелось пересечься с двумя преподами:
    Первый — офигенный специалист. Мы с ним подушам говорили. Было интересно… Его знания устарели примерно на 20 лет. Ибо именно 20 лет назад он был крутым спецом. А сейчас уже просто не ориентируется. Чему он может научить?
    Вторая — женщина средних лет, ни часа не работавшая в IT… Сразу пошла в преподаватели после ВУЗа… Не знает ничего. Вообще ничего. Первокурсники-IT энтузиасты уделывали её по всем фронтам.
    ВО ВО рознь.


    1. AnneSmith
      26.08.2017 20:33
      -1

      это скорее говорит об уровне вашего крупнейшего вуза и математики в нем, а не о высшем образовании

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


      1. AllexIn
        26.08.2017 20:49
        +2

        Вы читали о чём я писал вообще?
        Я и написал, что ВО зависит от ВУЗа. И фигак, вы меня просвещяете, оказывается ВО зависит от ВУЗа!
        Вот это поворот! Спасибо, открыли мне глаза!

        А думать можно научиться и без ВУЗа. Так что задача ВУЗа всетаки не только научить думать, а еще и дать фундаментальную основу.


        1. AnneSmith
          28.08.2017 09:49
          -2

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

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

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

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


    1. DmitrySpb79
      26.08.2017 20:37

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

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


    1. dom1n1k
      26.08.2017 20:51

      Надо понимать разницу. Те первокурсники, которые кого-то там уделывали — практики-верхогляды. Много чего щупали, много чего поверхностно знают, мало что понимают. Хотя умными словечками сыплют бодро. Собственно, в этом нет ничего плохого — бойцы-кодеры индустрии нужны всегда. Но будет большой ошибкой считать их серьезными специалистами. Они — пока что линейный персонал. Ничего нового и/или серьезного они сделать не смогут без вон того устаревшего на 20 лет. Например, написать Фотошоп, Автокад или Шазам (примеры условные).


      1. AllexIn
        26.08.2017 20:55

        К сожалению, «тот устаревший», тоже ничего ни сделать, ни научить. Ибо не знает чему учить. А подходы в программировании с 1985 по 2005 изменились очень сильно.

        Про первокурсников я говорил не в форме «это готовые спецы», а в формате сравнения уровней. Когда первак не опытный и знающий минимум знает по факту больше преподавателя.

        Повторю свою основную мысль: хорошо только хорошее ВО. А у нас всё очень плохо с хорошим ВО.


        1. dom1n1k
          26.08.2017 21:11

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

          Но что наше ВО оставляет желать лучшего — с этим не поспоришь.


    1. 0xd34df00d
      27.08.2017 22:42
      +3

      Для математики ВО не нужно. Математика проста и осиливается без ВУЗа на нужном уровне.

      Зависит от нужного уровня. Какой уровень вы называете нужным?


  1. Gryphon88
    26.08.2017 20:52

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


    1. AnneSmith
      28.08.2017 09:54
      +1

      пишут выше, что без проблем, причем в любой области — хоть в медицине, хоть в авиации, если пациент согласен :)


  1. ireg
    26.08.2017 21:02
    +1

    На мой взгляд, для начала, откровенно так, по честному, нужно ответить себе на вопрос: «Внезапно стать разработчиком для чего?» Работать на дядю Ханса и получать зп в евро? Или может кодить днями и ночами на фрилансе, делая парсеры по 200руб? В любом случае не вижу никаких проблем стать профи хоть в 50 лет. Если есть искреннее желание, то проблема только одна — время. Формула простая и всем известна — «Опыт, знания и навыки = время». Идеальный вариант, если у вас есть пассивный доход, не требующий вашего внимания, а также уже самостоятельные дети и отсутствие каких либо обязательств тратить много драгоценного времени на другие вопросы.
    Самый лучший вариант окунуться в это с головой — свой проект. Проект не только ради обучения, а для какой-то более менее практической и полезной цели. Вот тут и драйв, и азарт, и решение задач, и поиск решений, и кодинг, и увлекательное общение с коллегами по проблемам… Но опять же, повторюсь, на всё нужно уйму времени. А пробелы в знаниях по матану или по алгоритмам можно восполнить книжками при необходимости.


  1. ameli_anna_kate
    26.08.2017 21:04

    Интересно, стали ли Вы в итоге разработчиком и довольны выбором, не надоело?

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

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

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


    1. AnneSmith
      28.08.2017 10:03
      -3

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


      1. tyomitch
        28.08.2017 18:57

        Белое пальто вам ещё не жмёт?

        разнообразие и сложность задач в вебе крайне ограничены

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


      1. ameli_anna_kate
        28.08.2017 22:09

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

        WordPress уже не так популярен как несколько лет назад, да и это не лучшая cms.

        Мат. фак с профилем(информатика-математика) педа достаточно образование для программиста?

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


        1. a1111exe
          29.08.2017 20:44

          WordPress уже не так популярен как несколько лет назад, да и это не лучшая cms.

          У меня есть опыт с Magento, но эту систему чисто как CMS, имхо, использовать — перебор. Так какая — лучшая?


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

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


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

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


  1. vasek07
    26.08.2017 21:04

    У меня обратная ситуация — был в 2001 г. одним из самых крутых архитекторов в Oracle NY (админку сам писал при этом на всем что шевелитcя на Solaris — бэкэндом владел ненашутку) в Oracle NY Financial Services это было (жил там вечно). Теперь в 55 лт — смотрю может еще достать порох то и веб студию организовать для начала и на JS статические сайты высокоскоростные реально адаптивные фермить.


    1. AnneSmith
      28.08.2017 10:08

      а что в деманде статические js сайты?


      1. vasek07
        28.08.2017 10:58

        У вас есть сомнение, что 90+% ВСЕХ сайтов статические — но это так. Не важно, что написаны через cms и т.д. — по факту они также статические. Тоже самое, что и с образованием которое мы получаем — по факту только ежедневная реальность собственной оперативной памяти головного мозга — шагреневая кожа лучше себя ведет к сожалению.


  1. xmanyx
    26.08.2017 21:22

    Привет всем! А у меня немножно другая проблема. Программирую со школы, из промышленных языков знаю java8 и back-end фреймворки. Прохожу собеседования, меня приглашают — но я не иду работать, и не знаю что с собой делать. Не ужели правда, пока есть станет нечего — придётся идти?? или есть что-то ещё? Подскажите. До работы правда час-полтора добираться — это нормально вообще?


    1. kbaa Автор
      26.08.2017 21:27
      +2

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


    1. Hardcoin
      26.08.2017 21:36

      В смысле, что делать? Хочешь работать — иди работать. Не хочешь (и средства позволяют) — не ходи, ищи работу рядом с домом или удалённую.


    1. fireSparrow
      26.08.2017 22:34

      1. А в чём именно проблема, почему не идёте работать, если вас приглашают?
      2. Для крупного города — да, вполне нормально. Учитесь как-то проводить этот час с пользой. Ну или действительно ищите работу по удалёнке, но это вариант не для всех.


      1. xmanyx
        26.08.2017 23:58

        Скорее всего проблема в страхе, т.к. несколько лет не работал, тем более разработчиком.


        1. fireSparrow
          27.08.2017 00:23

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


    1. OpieOP
      26.08.2017 22:49

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


    1. ameli_anna_kate
      26.08.2017 23:59

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

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


  1. anonym101
    26.08.2017 23:01

    Привет, давно хотел задать вопрос сообществу. Итак ситуация: мне 24 работаю в не маленькой компании полупрограммистом. Начал изучение программирования еще будучи в ВУЗе обучаясь по технической специальности(связь) после выпуска пошел куда взяли. Со временем пришло понимание что то чем я занимаюсь со всем не то чем хотел бы. Дело в том что большая часть работы связана с конфигурированием некой большой системы в браузере(да-да мышко программирование). Сейчас у меня понимание что на приличную работу без тех знаний которые были у выпускника профильного факультета просто не возьмут, поэтому свободное время трачу на изучение в основном теории CS. Но уже прошло ~2 года как я затеял это начинание но на собеседования даже не зовут. В связи с этим вопрос на что вы бы рекомендовали обратить внимание и стоит ли вообще пытаться устраиваться в комании уровня Яндекс без профильного образования или это все пустая трата времени?


    1. fireSparrow
      27.08.2017 00:51
      +1

      Мне 31 год, у меня экономическое образование, до октября 2016 года я работал рядовым системным администратором (на 80% работа состояла из поддержки пользователей).
      В феврале впервые устроился профессиональным программистом (сразу на мидл-позицию), а уже в июне получил оффер из Яндекса.
      Так что профильное образование вообще не решает. Что действительно важно — навыки написания кода, опыт использования фреймворков и библиотек, знание SQL. Это всё нарабатывается не столько «изучением», сколько решением практических задач (даже если на первое время задачи будут чисто учебными и не несущими практической пользы).
      Знание алгоритмов и структур данных будет жирным плюсом, но не теоретическое, а практическое — то есть навык видеть то, как оптимальнее решить задачу, не лепить кубическую сложность, там, где можно обойтись логарифмической, и не использовать линейный поиск по массиву там, где нужна просто проверка на вхождение в множество. И это тоже нарабатывается практикой (разумеется, после того, как вы ознакомились с теорией)

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

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


      1. fireSparrow
        27.08.2017 01:13

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


        1. Skerrigan
          29.08.2017 04:28

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

          Кхм… я конечно понимаю, что вы сказали в среднем, однако вот моя якобы основная специализация — я, представьте себе, тестировщик:

          — php core
          — smarty
          — YUI
          — jQ
          — MySQL
          — ORM (Hibernate)
          — java core
          — TestNG
          — — — просто тьма java libraries&packages
          — WebSockets (java/php/js)
          — NodeJS
          — VCS (Git) + Git-console
          — Atlassian products (JIRA/Bitbucket/Confluence)
          — PuTTY
          — VMware Workstation (и куча виртуалок)
          — WebDriver

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

          Ах да, это я еще не писал про то, чем я «на самом деле» занимаюсь — Android/UI/UX/etc.


          1. DistortNeo
            29.08.2017 17:34

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


            1. Skerrigan
              30.08.2017 04:14

              Что понимаете под PuTTY, например?


              Под ним и не получится понимать «многое» — тулл для ssh под win. Удобный (ибо хорошо настраиваемый, с запоминалкой).
              Когда кто-то предоставляет доступ до полу-боевого (тестового, максимально приближенного к боевому) сервера, то неизбежно задается вопрос «вы сможете подключиться?». Я первым делом это проверяю, сразу пишу ответ «да, через PuTTY подключился успешно, могу заняться задачей»(если все хорошо… если плохо — то можем выяснить «в чем же проблема»). Клиент в ответ радостно прощается до чекпоинта.


          1. 0xd34df00d
            29.08.2017 20:15

            А я разработчик, и у меня в резюме написано


            • Strong C++, including topics like threading, low-level optimization and modern C++ standards.
            • Intermediate Haskell.
            • Used previously: R, Matlab, Python, C#, SQL.

            И всё.


            Надо про гит, наверное, добавить.


            1. Skerrigan
              30.08.2017 04:20

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


      1. anonym101
        27.08.2017 08:42

        Спасибо за ответ, я пожалуй слегка некорректно описал свой опыт, под теорией CS я подразумевал не базовые вещи аля чем heap sort от quick sort отличается, а например детали реализации KD дерева. Базовые алгоритмы и приниципы работы компьютера с дискретной математикой у меня в ВУЗе к счастью были но не на том уровне как например у выпускника факультета кибернетики МГУ. Мне честно говоря казалось, что без знаний хотя бы 80% из книги уровня CLRS в Яндекс не берут.


        1. fireSparrow
          27.08.2017 09:58
          +1

          Мне честно говоря казалось, что без знаний хотя бы 80% из книги уровня CLRS в Яндекс не берут.


          Вот я тоже так думал, поэтому на собеседование шёл в основном с мотивацией получить опыт собеседования в Яндексе ))
          На самом деле, это очень зависит от позиции, на которую вы претендуете.
          Конечно, если вы хотите стать одним из тех людей, которые делают в Яндексе всю магию, то уровень у вас должен быть ОЧЕНЬ высоким.
          Но кроме подразделений, занимающихся собственно магией, в Яндексе есть ещё большое количество подразделений, которые занимаются всякими рутинными вещами, и там нужны просто толковые и адекватные программисты. На такую позицию вполне достаточно показать хорошие практические знания относительно языка программирования, SQL, знать, как работают основные структуры данных (чаще всего спрашивают про хэш-таблицы), уметь оценить O-сложность того кода, который вы написали.

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


          1. anonym101
            27.08.2017 21:10

            А если не секрет вы на какой язык шли?


            1. fireSparrow
              27.08.2017 21:12

              Python


    1. Femistoklov
      27.08.2017 07:55

      У меня похожая ситуация. Работал после ВУЗа в IT-шной, но не софтверной компании. Программировать требовалось мало по отношению к общему объёму работы, практикующих разработчиков там не было. В итоге крепло желание сменить сферу деятельности, потом и возможность переезда в более технологичный город подвернулась. Как результат, ушёл непосредственно в разработку, самую настоящую, с модными технологиями, agile, DDD, фрэймворками и прочим хайпом.

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

      на приличную работу
      Миддлом не возьмут, джуниором вполне могут.

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

      стоит ли вообще пытаться устраиваться в комании уровня Яндекс
      Нет. У них там всякие стажировки, школы программирования для одарённых студентов и т.д. и т.п. Представьте, какая у вас конкуренция.

      или это все пустая трата времени?
      Да. Джуниором вообще без разницы, где начинать — в Яндексе или в приличной, но не такой известной компании (поправьте кто-нибудь, если ошибаюсь, но не думаю, что «яндексовских джунов» на руках носят). Думайте так: «Вот стану крутым специалистом — устроюсь в Яндекс и буду получать большую ЗП на интересных проектах».

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


      1. alexeykuzmin0
        28.08.2017 16:17
        +1

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


        1. Das_original
          29.08.2017 22:00
          -1

          У меня джунов пачка, работают. Есть и те, кто вырос быстро, за 100К в окладе перевалили. Да, по началу им было туго, месяц стажировки, без оплаты, второй с минималкой, а после — обучение в одной из школ программирования, целый месяц по 4 часа в день им вдалбливали как можно и как нужно делать. Теперь из 16 джунов трудятся 11. Лентяи слились по пути, кому было интересно остались.


          1. alexeykuzmin0
            29.08.2017 23:30
            +1

            Честно говоря, с таким описанием я бы к вам не пошёл, когда был джуном


    1. alexeykuzmin0
      28.08.2017 16:12

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


  1. vlsinitsyn
    27.08.2017 05:08

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


  1. divanus
    27.08.2017 13:00
    +1

    Какая знакомая история. Только я 17 лет как ИП, затем ООО. Открыл и закрыл более 13 микробизнесов, около сотни прожектов и идей. Параллельно был devops — но там некуда расти, доростал до начальника ИТ три раза — скукатища, проекты нудные и т.д. и т.п. Программирование в возрасте 6и лет basic, затем ассемблер — все это на zx-spectrum. Потом паскаль, С на школьном компе. Потом забил, потом снова что-то где-то как-то. КОгда надо php и блевотная java.

    В итоге могу сказать, что сейчас погрузился в Go, опять php и иногда java (опять блевать потянуло). При чем решил, что пока не буду достойно выполнять задачи, не буду брать никаких заказов — так, все сам, для себя, для своих проектов (автоматизация производственного цеха своего и т.п. шляпы).

    У всех истории схожие. И да, с фриланса.ру и тп. ruнет площадок ловить нечего в 99% случаев. на иностранных за этот месяц взял неплохие поекты, которые интересны.