Pull to refresh

Comments 406

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

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

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

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

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

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

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

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

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

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

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

А вообще я хотел сказать про то, что нужно уметь заранее увидеть ту технологию, которая в будущем выстрелит, разобраться в ней, а когда придёт время, то быть уже специалистом в данной теме. И мне кажется, что одна из таких технологий — это WebAssembly. Т.е. уже сейчас можно разрабатывать и компилировать с различных языков программирования нативные приложения и исполнять их в браузере. Вот тут я перечислял несколько ЯП, на которых уже можно делать подобное: toster.ru/q/454806
UFO just landed and posted this here
Чем (технологически) WebAssembly отличается от Java-аплетов, которые вымерли чуть менее чем полностью?
UFO just landed and posted this here
А ещё wasm файлы можно кешировать на всяких CDN-ах, да и в localStorage-ах и IndexedDB, версионировать и подтягивать только те wasm-ы, которые требуют обновления. Т.е. веб приложение может состоять из нескольких wasm-ов, которые можно подгружать по мере необходимости, тем самым можно сократить начальную загрузку веб-страницы.
А ещё, думаю, было бы разумно встроить в браузеры какое-то общее хранилище для wasm-модулей, чтобы одни и те же wasm-модули не грузить повторно для разных веб-приложений. Некий стандартный набор wasm-библиотек.
UFO just landed and posted this here
Вы так говорите, как будто Java-аплеты нельзя было кэшировать, версионировать и подтягивать динамически. Но что-то пошло не так…
C используется не для верстки, а для CMS.

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

UFO just landed and posted this here
Ну, как минимум, шарить в frontend фреймворк (Angular тот же) и в дельфийские бэкенд-фреймворки (DataSnap самый популярный, mORMot и DMVC тоже ничего).
И где, кроме embedded devices, этот Си?

Ну например, python написан на Си, и плагины к нему тоже пишутся на Си.
Ну и Linux тоже рука не поднимется назвать «кодом для embedded devices».
Глянул, где у меня в квартире liux… 3 андроида, роутер… То, что делаем по работе на linux — тоже для embeded… В метро заходишь — инфотерминал на linux… Ну в общем не так уж и далеко от истины — linux в embeded сильно прижился.
Linux повсюду: и в embedded, и на десктопах, и на серверах.
И OSX туда же: не совсем Linux, но тоже на Си.

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

А вообще-то нормальному программисту не очень важно, на каком языке писать. Язык — это дело наживное, умение писать важнее.
UFO just landed and posted this here
Частично согласен, APL и FORTH потребовали долгого привыкания мозгов. Сколько потребует haskel — подумать страшно. Зато нет проблем с языками, где std::variant — основной тип данных.

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

А вы не вставайте в ступор, а просто пишите. Не нужно насиловать мозг Хаскелем, просто пишите код на языках с элементами функционального программирования. Хороший пример — 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);

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

Код занял бы в 3 раза больше строк, но был бы в 9 раз понятнее. Извините, но я из тех «программистов», которые придерживаются правила «ставь скобки, невзирая на приоритеты операций, чтобы однозначность выражения была понятна абсолютно всем, даже непрограммистам», так что стремление делать код короче, но загадочнее мне абсолютно не понятно.
UFO just landed and posted this here
Не в коня корм, я оба варианта не понял…
Видимо, вы просто не знакомы ни с с++, ни с похожими по синтаксису языками. Оба варианта понятны, но первый гораздо чётче выражает основную мысль
Можно пойти дальше и разворачивать каждый вызов Where, Select и т.д. в код, как это делалось раньше, с использованием `for`.
UFO just landed and posted this here
UFO just landed and posted this here
> Есть и обратная точка зрения: нужно изнасиловать мозг хаскелем, чтобы в полной мере, так сказать, прочувствовать идеи ФП.

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

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

За всё время делал так всего пару раз, для генерации Expression Tree в рантайме. В большинстве же случаев, когда такое возникает, и понятнее, и проще реализовать такой функционал с помощью интерфейсов.
UFO just landed and posted this here
Лямбды были ещё в ALGOL-60 под названием "передача параметров по наименованию". Поищите «Трюк Йенсена» Смысл в том, что при передаче в качестве параметрах X+Y по наименованию, каждый раз при обращении к параметру считается X+Y. А если мы в функции меняем X или Y — то и получим каждый раз разный результат вычисления X+Y.

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

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

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

На современном дельфи можно писать лямбды. А функционально программировать — можно было ещё на паскале. Просто неудобно — инфраструктуры нет.
UFO just landed and posted this here
Почитайте парсер любого языка программирования, написанный рекурсивным спуском. Увидите, что не так уж и сложно явно функциональный алгоритм записать на любом языке.
UFO just landed and posted this here
Возможно, это для вас вопрос терминов — тогда нет смысла спорить. Процедурное отображение на Си — эквивалентно функциональному стилю, а это главное.
UFO just landed and posted this here
О терминах — не спорю. Но если результирующий код одинаков — то не так важно, каков стиль написания.
UFO just landed and posted this here
UFO just landed and posted this here
Вообще-то назначение там другое — сделать одно приложение и иметь его и на десктопе под Windows и на мобильниках. Тем самым выиграв пару миллионов на разработку отдельного мобильного приложения. Собственно всегда коньком дельфи была быстрая разработка прототипа. А чем вы его заменит хотите? Где ещё настолько же высокая скорость разработки прототипа GUI-приложений?
UFO just landed and posted this here
Что там с визуальным конструированием? Глянул пример из вики — похоже, что его нет?

Что касается цены… Месячный ФОП разработчика — это не те деньги, которые важны для фирмы.
UFO just landed and posted this here
То есть никакого единого визуального редактора нет? И для каждой платформы делать свою морду?

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

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


Либо плати деньги, либо мучайся со Starter-версиями

Непонятно, с чего вы это взяли. Если бы вы были правы — никто не пользовался бы word. Потому что «либо плати деньги, либо мучайся со WordPad».
UFO just landed and posted this here
Delphi/ObjectPascal в статистику вообще не попадают из-за крайне низкой популярности

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

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

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

Знаете, в моей юности час работы на компе был равен недельной зарплате. Так что думать и писать программы за компом было нельзя. Писали на бумажке, а за компом — лишь отлаживались. И ничего, изучению языков и инструментов это не мешало.
UFO just landed and posted this here
И уж тем более там в принципе ни в одном продукте нет поддержки 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 времени и развиваться дальше?

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

Поэтому я могу позволить себе изучать технологии под задачу прямо на рабочем месте, а вы ищите себе рабочее место под изученные технологии.
UFO just landed and posted this here
И что из этого следует? Object Pascal тоже в актуальном списке нет,

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

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

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

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

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

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

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

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

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

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

В голове я держу не так много — 100-200 тысяч строк. Так что предпочитаю это место потратить на код текущего проекта.
А зачем? я на собеседования ходил один раз в жизни, в 17 лет. С тех пор — переманивали.

Не подскажете, как «переманивабельность» в себе развить? Вы ж сами наверняка что-то для этого делали? Кто-то же о вас узнавал в конце концов. А то кодишь 100500 лет с ощущением «нафиг я кому тут еще сдался, таких гавриков тут и без меня 100500».
Мой опыт показывает, что достаточно профиля в LinkedIn (в него стоит добавить актуальную информацию и добавлять в друзья коллег на каждом месте работы), чтобы пару раз в месяц стучались рекрутеры. Другой вопрос, что что-то интересное они могут предложить раз в год, не чаще.
Хотя если менять работу раз в год-два для вас нормально, то пойдёт.
Думаю, что нормально менять работу раз в 3 — 4 года, но рекрутеры предлагают такую зелёную тоску, от которой хочется выть волком и проработать на родной фирме еще 3 — 4 года.
В Израиле — 8 миллионов человек. И все устраиваются работать по знакомству. Так что наплюйте на рекрутеров и имейте больше знакомых.
В Израиле — 8 миллионов человек. И все устраиваются работать по знакомству.

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

Никогда не чувствовал себя одним из 100500. Наоборот — «Быть как все? А зааачем?!» Так что не вижу смысла быть винтиком. Всегда можно взять себе отдельный кусок проекта (или функциональности) и стать в нем гуру. Отличная работа (на 6 по пятибальной) всего лишь 20-30 процентов затратнее работы на троечку. А дальше — "никогда ничего не просите, все придут и сами дадут". Ну и понимание, что не на помойке родился, оно тоже важно.

Так что ничего существенного, увы, сказать не могу. Скорее это вопрос о выборе профессии, то есть, а в какой профессии я могу состояться? Каким делом я стал бы заниматься бесплатно? Если профессия выбрана верно — так и переманивать будут.
Да я ударник каптруда, перевыполняю план, самый квалифицированный в конторе, но типичный, как в ветке «4 типажа программистов» определено, линейщик. И контора мне дала всё, что могла. И трудно себе признаться в 44 года, что ты неправильно выбрал профессию. И почти невозможно «уйти в никуда» из оплачиваемой нормально профессии.
Уйти в любой момент можно. Бабушкина сестра в 70 лет ушла из разработчиков АСУТП (на релейной технике) в вахтеры в ДК. Собственно ушла потому, что настал переход на микроконтроллеры, а это в 70 лет тяжеловато. Ничего, через 2 года стала в этом же ДК главным администратором. Ходила бесплатно по всем театрам, куча артистов в личных друзьях и была счастлива.

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

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

А если хотите остаться в профессии… Подумайте, что вам интересно из прикладной части. Строительство? Изготовление цемента? Транспортировка нефти? Навигация? В любой прикладной части куча интересных задач. Хорошей модели цементной печи до сих пор нету. Люди диссертации пишут о том, как работает цементная печь.
UFO just landed and posted this here
Поменял что-то, посмотрел, что изменилось или сломалось, сделал выводы.

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

В итоге знания примерно на таком уровне:
— а почему ты тут написал именно так?
куча лапши на уши
— а если честно?
— ну я пробовал, другие варианты не заработали.

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

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

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

Если я очень люблю деньги, я буду искать места, где платят деньги,

Мы себе несколько людей на меньшие зарплаты переманили. Потому что у нас интересно. Работать в стол — многим надоедает.
UFO just landed and posted this here
Что вы называете интересной работой, которой можно гордиться?

Есть такая хорошая поговорка: «лучше быть первым деревне, чем вторым в городе»

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

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

Потом может пост напишу про всю эту GPS-кухню.
UFO just landed and posted this here
Вы, к тому же, сами себе противоречите. Выше вы агитируете за «быструю разработку прототипов», а теперь за «написание на бумажке и отладку на компьютере»

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

Интересно, а для изучения английского вам потребовался живой англичанин или хватило его эмулятора? :-)
UFO just landed and posted this here
Собственно мне очень странно слышать такие рассуждения от АСУТПшника. Вы что, автоматизируете цеха одного типа с одной технологией? Или каждый раз объект автоматизации — разный?

Для меня в АСУТП норма — команда приходит на объект, не зная про технологию почти ничего. А через пару лет, после сдачи системы — обучает тонкостям тех, кто на этом оборудовании 20 лет проработал.

А программные технологии — не сложнее техпроцессов.
UFO just landed and posted this here
UFO just landed and posted this here
Сразу юность вспомнилась, 1986ой год, инклинометрия для системы САОБ от СПКБ БА

Ну бывает и такой АСУТП — тиражный. Просто заказные и полузаказные работы интересней.

Sarcasm on
я правильно понимаю, что уйти с нефти на цемент вы не можете? И даже на газ — очень тяжело? И набирают к вам тех, кто нефтеобработку (ключевую технологию) наизусть знает?
Sarcasm off

Если да, то ваши замечания понятны. Если нет — то выучить новый язык программирования — проще, чем изучить газодобычу или производство цемента.
UFO just landed and posted this here
Все, что вы написали — не отличается на нефти, газе, стали или цементе. И даже на Си взамен паскаля — тоже отличий очень мало.

Да, есть специфика у АСУТП. И умение работать с этой спецификой нарабатывается годами. Но эта специфика не зависит ни от языка программирования, ни от объекта автоматизации.

Так что на вопрос вы, увы не ответили. Ну тогда хоть скажите, технологию нефтеобработки вы в институте учили? Или дома самообучением? Или на рабочем месте?
UFO just landed and posted this here
Технологию нефтеобработки я не учил вообще нигде и до сих пор в ней ничего не понимаю.

Мда… Сколько одновременных отказов датчиков сломают вашу систему? Или, как у американцев, после первого отказа летим на 200 км/ч прямо в бетонную стену?

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

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

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

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

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

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

там практически всегда будет что-нибудь вида «Обязателен опыт разработки на C++ с использованием Boost/Qt/MFC/etc. от 6 лет»,

Знаете, я тоже напишу в вакансии «нужен программист RTK со стажем от 5 лет.» Только таких в России — не больше 50, скорее 15-20. И если кто захочет к нам перейти -это и так будет известно. поэтому реальные требования:

  • Высокая самообучаемость по книгам
  • Умение доводить задачу до конца
  • Опыт работы с кодом не менее 30 тысяч строк (для умного студента — 10 тысяч строк)
  • Умение работать на износ в командировках
  • Понедельник начинается в субботу
UFO just landed and posted this here
UFO just landed and posted this here
И отказ какого-то блока или даже целой установки не остановит процесс фатально

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

На досуге почитайте, к чему приводит такой подход в АСУТП.

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

Известные мне последствия — сотня институтов СССР считала по этой программе прочность зданий. Тысячи построенных цехов. Ни один по вине программы не упал. Один из разработчиков — стал академиком архитектуры. Несколько написанных учебников по сопромату в качестве утилизации отходов от придумывания алгоритмов. Но код… это был фортран. даже не так — ФОРТРАН, точнее ФОРТРАНИЩЕ. Система ввода данных была запутана так, что без высшего образования — данные не введешь. Зато глупостей с подсчетом рядов не в ту сторону (надо от меньших к большим) — не было. А вы какие последствия имели ввиду?

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

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

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

А любой АСУТП — наукоемок. Вы все-таки подумайте над задачкой про концевик. Интересно, сумеете её решить или нет?

Собственно дело не в наукоемкости, а в инженерии, в know-how. Как писал Фейнман «это уже не наука. То, что какая-то штука не является наукой, не делает её плозой. Любовь — хорошая штука, но не наука она и все тут». Но быть инженером и уметь решать инженерные задачи — нужно обязательно. А без этого — только зубрить тысячи вызовов API.

Помните байку про то, как Эйнштейн нанимался помощником к Эдисону? Что-то вот сильно на неё похоже.

и кода «от 30 тысяч строк»

От 30 тысяч строк можно легко прыгнуть на 200 тысяч. А вот от тысячи строк — прыжок не выйдет. Что и показала ваша история про javascriptшика, начавшего писать на Си.

такие вещи надо в самом начале вакансии писать, чтобы люди не тратили время на дальнейшее чтение :)

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

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

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

при этом во всем проекте более ста миллионов строк кода

Остапа понесло…
UFO just landed and posted this here
UFO just landed and posted this here
Такое впечатление, что у вас и зарплата черная. Или серая. При белой — есть КЗоТ, и все переработки должны оплачиваться.

Но она будет написано неэффективно, немасштабируемо, и нетестируемо. Что в итоге выльется в убытки в будущем.

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

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

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

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

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

Да и с позиций производителя — не все так просто. Можно сделать схему того же телевизора под все размеры экрана, 20 лет выпускать её с мелкими модернизациями и отстать от прогресса. А можно — раз в год делать совсем новую схему, на современных компонентах.

В приличных компаниях эйчары технические вещи вообще не спрашивают.

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

Что вас смущает?

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

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

Что за задача такая, неназываемая? Вызов черного властелина?
UFO just landed and posted this here
Есть. Сам факт такого режима (даже вообще без перереработок) означает дополнительный отпуск по 119 ТК. По ТК такой режим означает лишь эпизодические переработки. Если они систематические — оплата как за сверхурочные.
UFO just landed and posted this here
в следущий раз хорошо подумать, прежде чем подписываться на работу с командировками.

Не знаю, я командировку воспринимаю как поощрение. Типичная командировка это в 5-30 утра из Питера, в 9 утра в Москве, к обеду все показали, к 7 вечера в Питере. Или, как вариант — встретиться с Московскими друзьями и быть в Питере к 23 часам. Бывает и на несколько дней, но все равно, как правило — командировки это интересно.

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

— Ну ладно. Вот вам простой вопросик. Что означает буква L в аббревиатуре SOLID?
— Liskov Substitution Principle.
— Нет. У меня написано, что это Liskov Substitutability Principle.

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

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

30 лет назад
1987ой год, приезжаю в пионерлагерь, где приятель работает вожатым. Сразу загрузили — помогать деткам исправлять ошибки в программах на FOCAL. Помог, все программки заработали. И только после отбоя удалось наконец почитать описание языка. Собственно так и познакомился с БК-0010.


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

Ну то есть правильно не верил. Кодовая база велика, но написана на 99.9% не вами.
UFO just landed and posted this here
UFO just landed and posted this here
Совершенно верно! Диалог там — художественный вымысел, для иллюстрации другой общей проблемы, о которой говорится в той статье. HR-ы по большей части — хорошие, умные создания.
Это уж совсем какие-то упоротые. Не имел опыта сталкиваться с такими, к счастью.

Это обычная вещь при переманивании. У рекрутингового агентства — портфель заказов на разные профили. И они шерстят соцсети и все остальное и смотрят, а кто куда годится. Если человек и не думает о смене работы — его сложно уговорить написать резюме. А вот заманить на такое собеседование — чуть проще. Любопытно же, кто это и куда тебя хочет на работу позвать. :-) А что это рекрутеры просто собирают базу — выясняется уже когда пришел.
UFO just landed and posted this here
встал часов в 15 часов, в 22 часа на работе, к 4 утра все проверил, упаковал и на такси.

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

Не знал Гаврила расписанья,
Он не любил себя стеснять,
Он приходил в ВЦ к обеду
И утром уходил поспать.
UFO just landed and posted this here
Когда завод-производитель матриц наконец-то выпускает новую сколько-то-там-K панель, фирма A просто меняет пару констант в прошивке

Увы, технологии меняются. А новая технология — новый код.

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

Увы, не выйдет. Чип определяется пиковым потреблением CPU. А пиковый процесс (0.001% кода) и так вылизан.

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

Именно так. И это правильно. Ну как пример. Когда вышел STM32F7 и на горизонте замаячил STM32H7 — мы выкинули все железо и сделали заново. Без внешних микросхем памяти и flash, без linux, на голом Soc и FreeRTOS. И получили удешевление В РАЗЫ. И новый рынок — беспилотники, там очень важен вес и размер платы.

Шли бы эволюционным путем — до сих пор бы сидели даже не на linux, а на x86 и MS-DOS.

А выигрывает именно тот, кто готов переписать сове решение под новые технологии.
UFO just landed and posted this here
Код графической подсистемы, отвечающий за масштабирование виджетов, конфигурацию декодеров видеопотоков, выбор дефолтного разрешения при стриминге и т.д. вообще никак не зависит от самой технологии изготовления матрицы :)

Сказочки. Много ли программ, сделанных во времена 640 на 480 способны красиво масштабировать на экранах в 10-20 мегапикселей? Ну там шрифт нормально отрисовать, например? Знаете такие программы? я вот не — знаю.

Заменяем формулировку на «повысив эффективность использования ЦПв пиковых процессах», и вот оно.

Это не отрицает наличие технического долга во всех остальных вещах. Согласен, есть вещи, где технический долг неуместен, и это одна из них.

система ведет свою историю с начала 90-х годов (начиная свой путь еще с древних SCO UNIX и Solaris), и до сих пор в системе есть модули с кодом из тех времен.

Повезло, что это не система 50ых годов и написана она не COBOL. Такие мастодонты тоже есть, особенно в правительственных структурах США.

Вот только скоро их обойдет какой-нибудь выскочка. Примерно как гугл обошел старичков с их вылизанной архитектурой.
UFO just landed and posted this here
Так я о том и говорю, разработчики этих программ не ставили себе такую цель

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

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

Зато ещё две — сдохли. Я про Windows (не NT) и UNIX (не linux).
Да, бывает когда продукт закапывают и заменяют на новый — но такое обычно бывает или при каких-то совсем революционных изменениях, или когда становится ясна тупиковость ветви развития

Да ну? Linux почему закопал UNIX? Что-то революционное? Тупиковая ветка? Просто UNIX перестал развиваться из-за своей древности.

UNIX даже в 1990 году был безнадежно стар. Например, в нем не было нативной поддержки русского языка — символы ASCII были 7битные. Для года его создания — нормально. Для 1990ого года — ужас. Две русские локализации (ИНМОС и ДЕМОС) независимо друг от друга перерабатывали ядро на 8битный ASCII. Это ещё один пример «Новой технологии», которую создатели не предусмотрели.

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

От размера программ зависит. Чем программа больше — тем реже меняется лидер. Чем меньше — тем быстрее.
UFO just landed and posted this here
Но это не значит, что с выходом каждой новой модели автомобиля мы должны строить по всей стране новые дороги.

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

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

Если бы они бросались писать с нуля новую операционную систему каждые несколько лет по веянию моды — было бы всем лучше?

Так по факту они и бросились. Linux, FreeBSD, QNX написаны с нуля. По старым чертежам — но с нуля.
И дело не только в патентных ограничения.
в среде корпоративной разработки обычно никто не бегает кругами с криками «обожемой, срочно бросаем все и переписываем весь проект с кнокаута на реакт!!!!1».

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

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

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

Аналогично — с процессорами. Там огромные errata, которые никто не собирается исправлять.
UFO just landed and posted this here
В каком случае заказчику нужно будет бросить все, и начать делать с нуля полностью новое ПО?

Не тот вопрос! Правильный вопрос: когда стартап, пишущий с нуля, получает техническое преимущество над монстром с долголетней архитектурой? Частеньно.

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

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

Телевизор — это клиентская часть, серверная — телестудия. Что с клиентской частью для IPAD? JS образца 1997 года? JAVA? Что-то новое и нативное, написанное с нуля?

Думаю, что плюнули они на свою наработанную архитектуру и написали нативного клиента с нуля. И это правильно.

А замена стандартов в серверной части действительно происходит очень медленно. Цветное телевидение вводилось 30 лет. Так что не спорю, что в серверной части эволюционный путь лучше. А в клиентской с её быстрой сменой стандартов?
UFO just landed and posted this here
UFO just landed and posted this here
Повторю вопрос. Что с клиентской частью для IPad? JS образца 1997 года? JAVA? Что-то новое и нативное, написанное с нуля?

Хорошая аналогия, только, скорее, не телестудия, а телевышка.

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

Это как в фотографии — в массовом сегменте цифра, а как нужны сотни мегапикселей для рекламных плакатов — так фотопластинки и довоенная камера с мехами.
UFO just landed and posted this here
С нуля, конечно, до этого мобильных приложений у них не было вообще, была только веб-морда — то есть это по сути дела новый продукт, тут эволюционировать не с чего было

Вот именно. С нуля. Хотя могли бы использовать что-то вроде electron и сделать приложение из сайта.

Об этом и речь — что в некоторых областях лучше с нуля, чем с наворачивать слои совместимости. Точнее — не совсем с нуля — остается know how, остаются библиотеки.

существующие решения никто не снимает с поддержки и не прекращает их развитие.

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

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

А уж дешевые смартфоны… Они вообще без поддержки. То есть выпуск запчастей — просто не предусмотрен, обновление прошивки — тоже.

Так что вот вам целая область, где обновления не тянут.
UFO just landed and posted this here
Разговор про софт, хватит уже постоянно в сторону железа скатываться.

В 98% процессоров софт — лишь приложение к железу. Оглянитесь вокруг, процессоров море. В часах, в микроволновке, в стиралке, в пылесосе, в телефонах, роутерах, лифтах… И лишь малая часть — в компьютерах.

Разговор начался со смены клиентского железа (софт для телевизора) и так и идет вокруг железа.

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

Ох! И опять — вашими устами да мед пить. Постоянная беда — то одну подсистему переписали, то другую. Было конфигурирование платы кодом — ввели device tree. Подсистему wi-fi раза 2-3 переписывали. Был ifconfig — ввели ip2… Ну в общем как новая плата — так переделка хотя бы одной подсистемы в linux. Ну и, соответственно, в прикладном софте железки.

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

По секрету — у мобильников без Android с обновлениями все ещё хуже. Как и у других железок. Телефон (не смартфон) хоть раз обновляли? Часы? Микроволновку? Стиралку?

Наша серверная часть (GPS, ГЛОНАСС) тоже обновляется раз в 5-10 лет. Выработал ресурс спутник, ушел с орбиты — запустили новый, с обновленным софтом.
UFO just landed and posted this here
Если у вас локалка — можно ничего не знать. А вот если GPRS… В районе Сочи за пару лет до олимпиады в час пик пакеты по GPRS шли раз в 20 минут.

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

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

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

Но для такого решения нужно прилично понимать технологическую логику.
UFO just landed and posted this here
Опыт показывает, что как раз я — могу. Люди со словарным запасом в 100 раз больше — не могут.

А вот вам обратный пример. Китаянка, лет 10 в России, победитель конкурса русского романса имени Изабеллы Юрьевой. И мне пришлось объяснять ей, что такое совершенная форма глагола. За 10 лет практики — не поняла. Потребовалось полчаса теории — и она нашла эквивалент в китайском и поняла отличия.
UFO just landed and posted this here
Конечно. И чтобы закончить институт и аспирантуру и защитить кандидатскую в России — тоже. Просто ей самой захотелось лучше говорить на русском. И оказалось что 10 лет практики дают меньше, чем немного теории.
UFO just landed and posted this here
Ли Вон Яна читали? Ну вот при перепутывании совершенной и несовершенной формы похоже получается. Все-таки «я делал задание» и «я сделал задание» имеют разный смысл. А отличаются они именно верным выбором совершенной и несовершенной формы.
UFO just landed and posted this here
Общаться могла — она лет 10 училась на русском языке сначала в ВУЗе, потом в аспирантуре.

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


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

Давно с живыми детьми общались? Говорить грамотной литературной речью они начинают лет в 10-12. Использование причастны и деепричастных оборотов приходит ещё позже (а у дебилов) не приходит. И это при том, что лет с 4х — начинается изучение родного языка по учебникам. Сначала — в садике, потом в школе.

Хотите тратить 15-20 лет на изучение — языка, тогда да, изучайте как дети, на практике.

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

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

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

P.S. Дебил — это не ругательство, а олигофрения в стадии дебильности. См. «Форест гамп», но Гамп — имбецил, а не дебил. Помните «а потом я прикупил акции какой-то яблочной компании»?
UFO just landed and posted this here
если людям надо что-то у вас узнать, они будут вас слушать, несмотря на скудный словарный запас или произношение. они могут про себя плеваться, ругаться и проклинать вас — но если вы в состоянии донести до них нужные данные, а другие не могут — выхода нет. Я общался с китайскими инженерами на одной из выставок MIPS, их английский был хуже моего. Но стоящая рядом девушка-переводчик из их группы хоть и говорила намного лучше, но ни черта не понимала в терминах (вообще косяк конечно, такую с собой брать — но, может не было других)
из своего опыта — я спокойно веду переписку на английском, но мне некомфортно на нем говорить, потому что сомневаюсь в произношении. почитать что-то, посмотреть что-то в оригинале — получается. а для разговора нужна практика, поэтому в планах найти свободное время для голосового общения с native speaker, и никакая теория тут не заменит такой опыт

а в вашем примере — если за полчаса теории она это поняла, то скорее всего, раньше просто не задумывалась о совершенной форме. для точного понимания неплохо бы знать контекст, как вы это ей объясняли. все таки «а как у вас образуется совершенная форма глагола» — это одно, а «слушай, а почему иногда это слово пишется делал, а иногда — сделал, никак не могу понять в чем разница» — это другое. к тому же, многие исполнители не знают языка, на котором они поют. заучивают интонации и произношение и всё.
Объяснял примерно так
«Очень приятно с вами познакомилась!»
«познакомиЛАСЬ» — что СДЕлала. То есть знакомство УЖЕ состоялось. Но эта фраза говорится ВО ВРЕМЯ знакомства, потому там говорится «познакомиТЬСЯ» (что ДЕлать, а не что уже СДЕлано). Причём форма «приятно познакомиться» настолько устйочивая, что все другие варианты звучат не по-русски. То есть просто «познакомилась» сказать можно, а со слово «приятно» — только форма «познакомиться».

Привыкай, в русском много необъяснимых и малообъяснимых финтов ушами. Мы едем В Китай, но НА Украину. :) И почему так — никто не знает. :)

После пятого объяснения она нашла эквивалент в китайском языке и все стало просто.

Не думаю, что можно закончить институт, аспирантуру и защитить кандидатскую в России «заучивая интонации и произношение». Просто 10 лет общения на русском не заменяют целенаправленное изучение, даже с таким дурным преподавателем, как я.
насчет приятно познакомиться
не хочется лезть в умные источники, превращаться в зануду и искать грамотное объяснение, своими словами — довольно простой способ объяснять нюансы использования глаголов подставляя что-то типа модальных глаголов. в данном контексте это будет — приятно было познакомиться — лучше ощущается отстраненность действия от говорящего
приятно познакомилась — тут никакой глагол не влезет, зато напрашивается указание на объект:
я/ты/кошка/страна приятно познакомилась

и получается, что в 1м варианте смысловой упор на то, факт совершения действия, и эта форма стала устоявшимся выражением
а во 2м — акцент на кто-то-там совершил какое-то действие — упор или на само действие, или на кого-то-там

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

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



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

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

Модальные глаголы и артикли не проходят в курсе русского языка. Тем не менее в русском был артикль «сей» и есть модальные глаголы (те, что управляют другим глаголом — надо/хочу/могу кушать).

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

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

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

учить можно, хуже от этого не будет, но зачем?

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

Ну как пример… программисты на С++ обычно не понимают, что аппаратные исключения можно обрабатывать. Хотя Visual Studio и дает такую возможность. А для Delphi — это норма.

Ещё пример. Мы привыкли, что переменная — это ячейка памяти, куда можно много раз класть разные значения. Но есть язык, где переменная — это имя для значения. И присваивать переменой можно только один раз.
все ваши слова верны, если считать, что написание кода — это всегда задача, требующая высокой квалификации. сейчас — нет. сейчас есть потребность в людях, которые в состоянии написать какие-то простые вещи и чтоб они работали. к сожалению, я осознаю, что в разработке пока еще нуб, поэтому приведу пример из более близкой мне области:
есть задача — организовать видеонаблюдение на объекте.
было бы круто, чтобы в моей команде трудились только высококлассные профи, но это экономически невыгодно. поэтому, на практике это будет примерно так:
1. прокладка кабеля — тут мне нужны дешевые работники. они могут не знать, для чего этот кабель и какие его характеристики. чтобы они не проложили внутренний кабель по улице, им говорят — вот этот кабель тянете здесь, другой кабель тянете там. всё, что от них надо — уметь класть ровную красивую трассу.
2. установка оборудования. просто чтото прикрутить могут и предыдущие ребята, но чаще надо и прикручивать, и как минимум провода развести-подключить. поэтому сюда подбираются ребята с более глубокими знаниями и опытом. которые в состоянии на нескольких квадратных метрах стены выбрать точку для монтажа камеры, чтобы обеспечивался нужный вид, качественно обжать rj45 или припаять BNC, выбрать оптимальный тип крепежа под ту или иную поверхность и т.п. вобщем, когда вариант «берем таджиков и стоим у них над душой контролируем чтоб не косячили» будет дороже и/или неудобнее, чем сразу делегировать эти задачи более подготовленным людям.
3. пусконаладка. здесь нужны инженеры — выставить все параметры оборудования, провести обучение персонала заказчика и т.п.
все эти люди занимаются «установкой видеонаблюдения». при этом у них у всех разная квалификация.
можно загрузить людей и п.1 информацией про виды кабеля для тех или иных условий, объяснить ттх оборудования, научить настраивать. собственно, молодые ребята в основном так и начинают — приходят прокладывать кабель и в процессе учатся всему остальному. но кто-то остается в рамках своих текущих знаний, и ему этого достаточно. естественно, кто-то напирает на теорию и приходит устраиваться сразу инженером. и я не могу сказать, что чей-то подход плохой. если этот подход позволяет добиться поставленных целей — он работает.
если все разработчики будут высококвалифицированные, то кто тогда будет писать те же парсеры на php за 300р?

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

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

если все разработчики будут высококвалифицированные, то кто тогда будет писать те же парсеры на php за 300р?

Высококвалифицированные разработчики за день. Или за полдня.
сейчас есть потребность в людях, которые в состоянии написать какие-то простые вещи и чтоб они работали.

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

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

Высококвалифицированные разработчики за день. Или за полдня.

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

И много хороших вакансий? :-))) И как платят, прилично? :-)

а никто и не говорит, что они хорошие. и платят там наверняка не очень прилично (из личного опыта — есть несколько знакомых, которые пишут на PHP за 40-50т.р./мес, и их устраивает на фоне средней зп по городу около 25т.р.( не Москва))

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

Без амбиций можно и дворником работать. Или в котельной — как Цой.

триста рублей — вы или шутите, или сумму не так прочитали

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

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

Второй. Ибо цена часа простоя — как зарплата второго админа за 10 лет.

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

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

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

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

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

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

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

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

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

Угу, но… вы собрались жить на те деньги, что платят индусам? Или вы рассчитываете на простаков, которые не знают про индусов и международные биржи?
UFO just landed and posted this here
А это единственная стратегия, как зарабатывать на 300 рублевых заказах. Создал кучу аккаунтов — и впарил туфту по 300 рублей куче заказчиков. Да, нечестно, зато выгодно.

А про репутацию — смешно. Разработчик с репутацией и 300 рублей за несколько дней работы? Ну не смешите.
UFO just landed and posted this here
UFO just landed and posted this here
Написано было тут:

если все разработчики будут высококвалифицированные, то кто тогда будет писать те же парсеры на php за 300р?

5$ в час — нормальные деньги для студента, мамы, сидящей с младенцем, или как приработок. Тут я согласен с вами.

А вот 5$ за весь проект — это совсем иная стратегия заработка, основанная на обмане заказчика.
О том, что зачем за 300 рублей писать парсер

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

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

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

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

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

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

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

Программист, работающий за 10К рублей??? Не школьник, не домохозяйка с тремя детьми, не дворник, подрабатывающий программированием, а именно программист на full-time? Не верю. Тот же рерайтинг/копирайтинг дает больше заработка.
Без амбиций можно и дворником работать. Или в котельной — как Цой.

Зачем бросаться в крайности? Мир не чёрно-белый, есть и другие варианты. Не всем быть космонавтами, и не всем этого хочется.


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

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


А вообще, независимо от этого конкретного случая, в том же Израиле рынок забит требованиями микроразработок для всевозможных CMS или того же Magento — на PHP. И я знаком с преуспевающими фрилансерами, берущими порядка 50$ в час, клиенты которых успешно пишут свои блоги, имеют успешные веб-магазины, заточенные под нужды бизнеса. И для выполнения этой работы не нужно даже намёка на высшее образование, только интуитивное логическое мышление и хорошее знакомство с поддерживаемым CMS.


Пока ещё есть. Дальше почти вся такая работа будет забангалорена.

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

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

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

И я знаком с преуспевающими фрилансерами, берущими порядка 50$ в час,

50$ в час — это 8200$ в месяц, то 474 труб в месяц. Извините, это далеко не миддл.

А речь шла 60 центах в час, то есть 300 рублей в день. И чем с таким фрилансом связываться — лучше уж забангалорить.
UFO just landed and posted this here
Развитие средств разработки, фреймворков, методологий, привело к тому что порог вхождения снизился.

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

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

Но в тонкостях работы кодеров я не разбираюсь. 30 лет работал инженером-программистом и так и помру инженером и программистом.
UFO just landed and posted this here
Гм, вам IDE подсказывает название процедуры и особенности её применения? Или вам только порядок параметров нужен, а на особенности забивается болт?

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

Мне это все очень напоминает миниатюру Жванецкого про пуговицы.

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

В целом же согласен, IDE не заменяет знания API.
А отличия CREATE_ALWAYS от OPEN_ALWAYS хорошо помните? А отличия FILE_FLAG_NO_BUFFERING от FILE_FLAG_WRITE_THROUGH?
Никогда не доводилось использовать эти флаги, за исключением CREATE_ALWAYS, поэтому при необходимости открыть файл нестандартно, я посмотрю документацию.
Ну и я о том же — быстрее глянуть в доку и написать правильно, чем потом ловить ошибку.
UFO just landed and posted this here
Контекстная справка со времен турбо-паскаля известна, если не раньше. Собственно IDE для этого не нужен, в почти любом программируемом редакторе можно взять текущее слово под курсором и передать его внешней программе.

А вот динамически генерируемая справка по собственным, а не стандартным процедурам — это уже достоинство хорошего IDE.

Собственно к чему это все. IDE не освобождает от просмотра справочника, она лишь делает этот просмотр чуть удобнее. То есть выдвинутый F0iL тезис "придется каждый раз при каких-либо сомнениях или ошибки компиляции производить поиск по справочникам. Вот она и разница в скорости разработки." не верен.

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

IDE дает большой выигрыш в уменьшении цикла компиляции, то есть полезно при написании методом тыка или отладке. Но если писать с малым количеством ошибок — выигрыш от IDE не столь велик.
UFO just landed and posted this here
Нет, vim никогда не заменит хорошую IDE в плане анализа кода и рефакторинга.

Просто языки бывают разные: для JS, PHP и прочих языков с динамической типизацией большой выгоды от IDE действительно нет, и достаточно использования vim или даже Sublime Text.

А вот писать что-то крупное на C++, Java, C# без использования IDE — это уже мазохизм.
Основное в vi — это быстрое программирование рутинных операций. Но прикрутить и вправду можно многое. Так что вот вамещё один путь работы без покупки IDE.
UFO just landed and posted this here
Вот в хаскеле ему альтернатив нет, это да.

А можно подробней? Это или что-то другое? У меня пока что очень неплохо работает Atom с набором пакетов atom-haskell. Причём, установка довольно прямолинейная, практически без бубна, поддерживается stack.

UFO just landed and posted this here

Я когда-то пробовал превратить Vim в IDE, но не для Haskell, а для Perl, PHP и JS. Сейчас уже не вспомню, по каким конкретно причинам не зашло. В общем — время загрузки, конфликты с уже установленными плагинами, некоторая непредсказуемость поведения, тогда как по удобству, интуитивности и фичерам всё равно до полноценного IDE не дотягивало. Остался на PhpStorm с плагином CamelCade для Perl. Кроме того, я ценю Vim в первую очередь как мощный и быстро доступный универсальный текстовый редактор, и этой цели после загромождения кучей плагинов он как-то перестал активно содействовать. Вполне возможно, что всё это решаемо, но я не гуру, и тогда не было особого желания копаться в потрохах и тратить время на выяснение.


Для Haskell пока не пробовал. Я абсолютный новичок в Haskell. Года четыре назад пытался изучать этот язык — кажется, пробовал Emacs, плагин для Eclipse, и даже Leksah. Последний IDE оказался (на мой взгляд) слишком нестандартным и сырым. Eclipse работал (когда был в настроении), Emacs, емнип, тоже. Но я быстро попал в Cabal hell, поагонизировал пару вечеров и снёс всё к чертям. :)


Недавно узнал о Stack, и как он решает проблему Cabal hell, так что решил попробовать снова. Гугление быстро привело к Atom. Порог вхождения низкий, функциональности для учёбы вполне хватает. Читаю Real World Haskell, доки по Stack — пока всё работает предсказуемо.


Может, стоит снова попробовать… Если решусь — отпишусь о результатах.

UFO just landed and posted this here
Разницу между тезисами совсем не видите?

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

Аналогично с поиском ошибок. Можно разобраться в причинах ошибки и сразу её исправить. А можно при помощи IDE попробовать пару дюжин вариантов — вдруг какой заработает.

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

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

Аналогично с кодом — если мы плохо знаем код, то IDE очень полезен. Если весь код в памяти — можно и без IDE.

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

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

Ну как реальный пример — баг на этапе инициализации ОЗУ. Или другой реальный пример — баг на старте ядра linux (ещё до момента, когда можно использовать kprintf).

Я вот восхищаюсь коллегой, который эти баги поймал и исправил. Но IDE он не пользуется. Может и не умеет — не знаю. Linux comandline oldschol — это почти религия. Но код у него лучше моего.
Если исправил методом тыка, а потом разобрался, почему именно так, а не иначе, то что же в этом плохого?.. А если нет — то это, как уже выше говорилось, проблема в мышлении. Если отобрать IDE, будет так же бездумно копипастить из интернета, отбери интернет, будет дёргать коллег… Силой такие вопросы не решаются, человека нужно направить в правильное русло. И если он не захочет туда пойти, то ничего не сделаешь, любознательность и интерес силой не выбить.
Если исправил методом тыка, значит не разобрался, а запомнил. Правильный метод — сначала разобраться, а потом исправлять.

Но иногда не хватает времени и в итоге...
Как пример, помню я, что typedef SomeType SomeArra[N_ELEM]; не самая лучшая идея. Ибо описание параметра как SomeArray &pArray иногда приводит к проблемам. К каким, и на каком из десятка используемых компиляторов — не помню. Просто для совместимости лучше так не писать.

Был цейтнот, сразу времени не было, а вспоминать сейчас ту ситуацию — откровенно лень. Да, наверное, и не вспомню уже.


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

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

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

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

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

Дети чуть более рациональны, чем взрослые. Поэтому их можно считать моделью, почти избавленной от внутренней мотивации.

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

Собственно по JS я вообще книжек не читал. Зачем? Подправил, проверил в 7 браузерах (IE 8,IE 9, IE 10, старая Opera, FireFox, Safari, Chrome), не вышло — подправил иначе. Чистый метод тыка.

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

И такое поведение — не единично. Человек рационален и идет к цели ближайшим путем.

Помните «обучение начинающих BASIC должно караться наравне с растлением несовершеннолетних»? BASIC сам по себе — не хуже FORTRAN. Беда в том, что он интерпретатор, то есть имеет короткий цикл отладки. И поощряет написание программ методом тыка вместо изучения языка.
наличие бесплатного IDE далеко не самое важное, что нужно для изучения языка. Хороший учебник намного важнее.
Вот с этим полностью соглашусь.

По поводу JS'а — так вам оно и не надо, вы справляетесь и так. Будет надо — начнёте штудировать учебники.
Тут можно конечно сказать, что если все будут так рассуждать и будут посредственными специалистами, то индустрия будет загибаться или развиваться не так быстро, но это философский вопрос… да и мне так не кажется, есть любознательные по природе люди, которых метод тыка не устроит, они захотят разобраться, есть амбициозные. Бывает ещё личностный рост, когда человек сидел-сидел себе, стряпал сайтики на битриксе, а потом подумал «да какого чёрта?!» и начал изучать C# и шаблоны проектирования.
В общем, я думаю что всех знаний не получишь, и стоит понять какое направление приоритетное, и в нём уже рыть всё досконально. Опять-таки, если есть желание :)
Угу, именно так — при наличие IDE можно «справляться и так». Это ограничивает рост квалификации на уровне серенького джуниора. И даже когда надо — я лезу в справочники, а не решаюсь наконец-то прочитать учебник или описание языка. Ибо нужного в данный момент результата так достичь быстрее.
Собственно — зачем учить язык, если все можно найти на stackoverflow? :-)

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

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

Что касается приоритетов — любой новый язык дает свои парадигмы. И иногда это очень полезно. Ну как пример — АЛГОЛ-60 дает хорошее понимание, почему не стоит усердствовать с лямбдами. SFC — понимание, как писать process flowи так далее…
UFO just landed and posted this here
Трюк Йенсена на любом языке делается. А уж стоит ли им пользоваться — каждый решает сам. Алгол-60 — это просто предельный случай использования лямбд. Там даже передача параметра по ссылке была частным случаем лямбды.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
А как за пределы песочницы выйти? Обмен по ком-порту, запись файлов данных… Насчет «любого браузера» — это в теории хорошо, на практике — намучались с IE 8/IE 9 даже на простейшем, встроенном в железку сайте.

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

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

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

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

И вот к такому — нужно быть постоянно готовым. И это тоже — АСУТП, просто чуть иной.
UFO just landed and posted this here
UFO just landed and posted this here
Читаем внимательней там же

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

Так что «петлей и веревочной палкой» все можно запустить в win95/98. Чуть-чуть модернизации — и все заработает. Delphi 7 под unicode переделывать сложнее было.
UFO just landed and posted this here
Видите в чем дело… я работал с библиотекой. реализующей обратную функцию (unicode в неюникодном VCL) и понимаю, что мест, где придется менять код — совсем немного.

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

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

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

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

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

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

У FMX основное требование — DirectX 9.0, а он есть под Win98SE. Так что выпадает только Win95.
UFO just landed and posted this here
Ну а мне — наоборот, попадались "роутеры", чья веб-настройка не работает в более-менее современных браузерах.
UFO just landed and posted this here
Железо времен Win98 и пользователь, работающий на win98 — это разные вещи. Если бы железа не хватало для ворда и офисных игрушек — его бы сменили. Так что железо будет всего лишь 10-15 летней давности.

А минимальная версия… Вы хоть раз писали в описании библиотеки минимальную версию? Её пишут с большим запасом, с учетом работы всех функций. А в конкретном приложении все функции библиотеки не нужны, так что реально — можно и меньше.
UFO just landed and posted this here
Тогда не забудьте, что само программирование — лишь капля в море иных профессий. Хотите массовую профессию — учитесь торговать в ларьке.

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

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

ICP DAS I-7188? Хорошая машинка.
UFO just landed and posted this here
99% программистам в современном мире с этим столкнуться не придется


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

У меня на него был свой собственный язычок написан. Байт-код с интерпретацией и на нем и на 386. Служил в качестве клея между ФБ на паскале.

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

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

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

Согласен. Мне довелось быть знакомым с oberon, ada и после них многие новые фишки в языках видятся, как более или менее удачное применение старых идей.
Полностью согласен. Где-то пол года назад сильно думал чего бы нового изучить, при этом всегда был страх что я потрачу много времени на изучение и когда я хоть что-то смогу с изученной технологией сделать она уже устареет. В итоге начал учить ассемблер и основные принципы работы микропроцессоров. Эта тема врядли скоро устареет, а знания эти помогут лучше понять тотже С/С++. К тому-же открываются большие перспективы для дальнейшего обучения.
UFO just landed and posted this here
UFO just landed and posted this here

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

Нелогично, что "+" — это конкатенация строк, а "-" — арифметическая операция. В том же PHP для конкатенации строк используется ".", чтобы не было путаницы.
UFO just landed and posted this here
черт, это потрясающая иллюстрация к вопросу «зачем нужно учить типы данных».
если всё так, то такая конверсия, на мой взгляд, усложняет а не упрощает жизнь.
какая оскорбительная картинка
в англоязычном сообществе вас бы уже предали анафеме, а не плюсы ставили
Ко-ко-ко! Чувства юмора отсыпать?
вы лучше отсыпьте уважения тем, кто тут мечтает о работе в цивилизованных странах
за такой юмор люди лишаются работы в один момент
а кто-то работает проституткой в цивилизованных странах
да норм картинка, правда старенькая.
Там еще много всего интересного можно найти;

Не давно на собесе было.
console.log(1);
setTimeout(function () {
console.log(2);
}, 0);
console.log(3);
Всегда можно умножать оба слагаемых на единичку. Костыль, зато нет таких сюрпризов как на пикче сверху.
UFO just landed and posted this here
На самом деле бред, в моем случае помог и по прежнему помогает letcode, topcoder, kaggle и др. Ровно как и петпроджекты, не раз слышал истории о том, как люди имея всего 1 персональный проект после вуза успешно приходили на senior позиции в Я не имея до этого никакого опыта. Вывод -было бы желание. Хотя по своему опыту -соло учиться сложно, держать уровень мотивации и выбирать направление лучше с ментором. Обычно имея хорошего наставника вам понадобится значительно меньше времени. Но нет ничего не достижимого- алгоритмизация вычислений это то, чему можно научить любого, да потолок у всех разный, но это уже совсем другая тема.
Потратить это же время на дальнейшее обучение будет более выгодным.
это рекурсия/бесконечный цикл:
сейчас поучиться, чтобы потом больше зарабатывать
сейчас вложить, чтобы потом больше получить

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

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

и тут по идее должна быть решения дилеммы но я ее так и не заметил, может невнимательно прочел конечно..)
И действительно. Уважаемый kbaa, расскажите, пожалуйста, детальнее про выбранный подход к насущной проблеме, а то недосказанность некая получается.
Хотел написать поизящней, но, видимо, перемудрил и не совсем удачно сформулировал мысль. Смысл, что в ситуации, когда есть очень дешевые заказы и стоит выбор — тратить время на них, или на обучение, я решил попробовать международные биржи фриланса. Там выяснилось, что даже простые задачи могут стоить уже более адекватных денег. Плюс еще английский подтянуть. Я посчитал это достойным компромиссом, рассказ про это будет во 2й части
С нетерпением жду продолжения! Как раз интересен опыт работы на апворке у нашего брата, очень актуально.
>> Вспомнил, что когда-то хотел стать программистом. Мне было это интересно. А сейчас мне 30

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

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

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

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

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

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

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

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

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

фармацевтам, крутившим гипсокартон, в надежде, что он доучится?
UFO just landed and posted this here
300-350к долларов в год в долине или 300-350к рублей в месяц у нас?
UFO just landed and posted this here
в любой работе есть участки с разной плотностью и уровнем
начинающий джун, который может уже править запятые, менять дизайн и внедрять простые функции — освобождает от этой работы более продвинутых программистов.

Больших денег никто не даст, особенно сейчас, когда мем «войти в айти» раскручивается уже два года минимум.
Недавно на хабре появились пара статей Левана Квирквелии InkOut, прочитав которые, я загорелся. Загорелся созданием мобильного приложения для dnevnik.ru (дочка учится в школе, скоро сын пойдёт, захотелось смотреть успеваемость так, как мне этого хочется). И я начал изучать Java. Мне 35.
p.s. Запросил доступ к API Дневника, ответили, что уже есть мобильное приложение и тишина…
Тут есть другая проблема.
Зарплата джуна.
Я вот сейчас не рискну поменять специальность, потому что это означает уменьшение заработка в разы. То есть несколько лет надо выкинуть, просто чтобы вернуть то, что уже есть сейчас…
Но мне повезло, я работу свою люблю. :)
Это да, проблема но не фатальная. Случился в моей жизни переезд, кардинальный такой: со сменой города, работы — с тех. директора до простого сисадмина (а по сути эникейщика, да и эта должность далась с трудом), с понижением зп в два раза. Опыта жалко, знаний жалко, а что делать? Когда надоело сидеть и себя жалеть теряя драгоценное время — взялся за питон =) вдруг пригодится когда.
Привет. В 41 год в 2015 из чистого интереса взял курс по R на Курсере. Через год я уже работал в университете программистом. Пока на минималку, но для начала и это не плохо, главное, что я стал получать деньги за код. Теперь это как наркотик, я не могу бросить. Наверное, таки есть какая-то программисткая железа :)
Как верно заметил автор ниже, когда понимаешь, что для начала не нужны суперспособности, гораздо легче начинать.
Я теперь всех агитирую учить код.

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


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

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

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

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

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

у автора нет никакого, причем он даже не видит необходимости в нем, но уверен, что из него получится разработчик «заводов» на пустом месте
расскажите, пожалуйста, почему не надо наливать кипяток в полиэтиленовый стаканчик?
Возможно потому, что рискуете получить стаканчик без дна. Полиэтилен стремительно размягчается и плавится при температуре 100-120 градусов. А вот в полистирол (из которого делают белую одноразовую посуду) лить кипяток опасно — он не только плавится, но и происходит его разложение до стирола (крысиная LD50 = 500 мг/м3) и производных бензола.
Возможно, полиэтилен разный бывает. Мы как-то вот чай кипятили в полиэтиленовых пластиковых «полторашках», прямо на костре. И ничего не расплавилось ни разу. Плавится только если огонь достаёт до места, где нет воды.
Мы как-то вот чай кипятили в полиэтиленовых пластиковых «полторашках», прямо на костре.
Можно воду вскипятить в бумажном кульке, если что. См. ютюб, там еще в полиэтиленовых пакетах ухитряются…
В бумажном кульке можно кипятить потому, что бумага 100 градусов держит. А вот полиэтилен, судя по комментариям выше, нет.
такие статьи, если они прилично написаны — всегда интересно читать. У меня несколько похожая история, разве что хождения по мукам были сконцентрированы в пару лет.

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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


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


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


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

UFO just landed and posted this here
вы легко можете найти в интернете все материалы о том, что есть дискриминация, включая законы вашей страны, вместо того, чтобы троллить

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

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

а меня вот уже давно не удивляет неспособность некоторых индивидуумов к поиску простейшей информации в интернете, прежде чем ввязываться в дискуссии на темы, о которых они понятия не имеют, равно как и о своих правах
UFO just landed and posted this here
Разве это дискриминация, вот когда ты отвечаешь на все вопросы на собесе правильно, а тебя не берут — вот это печалька
UFO just landed and posted this here
ищите работу в приличных странах, там нет дискриминации по возрасту, полу, национальности и расе, пенсия начинается в 65, так что за 30-35 лет вы вполне успеете построить приличную карьеру
Вот только хрень мне не надо рассказывать про то, чего там «нет». В UCLA позицию постоянного профессора можно получить только если аппликант до 40 лет. Это из примеров разговоров с людьми под большой стакан, так сказать. А на публику да, все тип-том, мы открыты для мира и всего света…
Зависит от тараканов в голове, но я бы рекомендовал после 30-35-ти начинать что-то свое.

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

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

принудительная армия да еще в «советском» варианте — это изначально неправильно
Я лично жил во времена, когда еще был страх перед армией в которой адская дедовщина и многие другие страшные вещи. Да и все отслужившие друзья в один голос говорили что нечего там делать.
Сейчас армия другая. Имел возможность пообщаться с большим количеством военнослужащих как из обычных частей, так из СОБР, ГРУ и т.п. Сейчас, конечно, надо не отмазываться. Сейчас надо искать возможности попасть в «правильные» части.
Вы просто зря потратили год своей жизни, поздравляю. Год, который можно было отработать джуном и в итоге иметь нормальную работу и нормальную зарплату. Ну и некоторые накопления заодно.
Чтобы утверждать, что год потрачен зря, надо иметь 100% уверенность, что при другом раскладе он будет потрачен с пользой.
Ну тут сомнительно. Хуже, чем провести год в армии, может быть лишь год в тюрьме или в больнице. В остальных случаях, даже без видимой пользы, по-крайней мере не будет физического и психологического дискомфорта.
Мы уходим в оффтоп. Лично я за год:
получил навыки монтажа при минимальном наборе инструментов (обжимать RJ45 отверткой это самое детское)
научился настраивать ОПС
познакомился с многими хорошими людьми из разных уголков страны
стал на порядок спокойнее
отъелся и отоспался (сон и еда по расписанию — это нудно, но эффективно) и вообще здоровье покрепче стало
Было бы желание, провести время с пользой можно везде. Но, повторюсь, пока армия это черный ящик, агитировать за нее не буду. Но и демонизировать тоже не стоит.
Ну вот вы сами и говорите, что за год буквально ничего полезного не сделали. Это если объективно к вопросу подходить.
Ну как сказать, получив эти навыки, я потом на 6 лет в эту сферу (ОПС и видеонаблюдение) втянулся. По всей части до сих пор работает поставленное мной оборудование. Денег я за это не получал, но ведь польза не в деньгах измеряется?
Я понимаю, что не хочется верить, что в армии есть польза. Но она там может быть. Поэтому я призываю не быть настолько категоричным. Если хочется поспорить или интересна тема — наверное, лучше в личку.

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

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

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

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

С такими навыками гораздо проще найти работу, социально адаптироваться да и вообще жить, на мой взгляд. Да и ботинки постоянно начищены
UFO just landed and posted this here
Многим людям крайне необходим физический и психологический дискомфорт для переоценки своих возможностей в лучшую сторону)

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Это не глупость, господа, потому что когда вам на работе понадобится придумать какой-то нетривиальный алгоритм почище quicksort-а (сортировки не причем, просто алгоритм), а у вас не будет необходимой базы, вы не сможете этого сделать. Это как выучить алфавит или грамматику иностранного языка, чтобы затем им пользоваться.
это все сегодня гуглится
а вот архитектуру нового фреймворка, который сэкономит вам месяцы неподъемного труда, вы вряд ли сможете нагуглить
UFO just landed and posted this here
а как можно сделать вывод по архитектуре фреймворка, которого еще не существует?
UFO just landed and posted this here
так а там, кроме алгоритмов, больше ничего нет

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


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


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


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


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


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


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

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

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


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

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

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

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

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


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

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


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

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

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

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

Кого вы имеете ввиду?
UFO just landed and posted this here
Это (специально так пишу — не верю, что баба такое хамло) — само является еще тем расистом. Но при этом всех (в куче веток по куче суб-тем) на 360 градусов в онном обвиняет.
«Расизм» по странам.
«Расизм» по образованию.
«Расизм» по наименованию профессии.
«Расизм» по участникам сообщества и по самим сообществам.
у вас зуб на врачей? врачи вам что-то не так поправили? смешно же читать, ей богу

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

У меня обратная ситуация — был в 2001 г. одним из самых крутых архитекторов в Oracle NY (админку сам писал при этом на всем что шевелитcя на Solaris — бэкэндом владел ненашутку) в Oracle NY Financial Services это было (жил там вечно). Теперь в 55 лт — смотрю может еще достать порох то и веб студию организовать для начала и на JS статические сайты высокоскоростные реально адаптивные фермить.
а что в деманде статические js сайты?
У вас есть сомнение, что 90+% ВСЕХ сайтов статические — но это так. Не важно, что написаны через cms и т.д. — по факту они также статические. Тоже самое, что и с образованием которое мы получаем — по факту только ежедневная реальность собственной оперативной памяти головного мозга — шагреневая кожа лучше себя ведет к сожалению.
Привет всем! А у меня немножно другая проблема. Программирую со школы, из промышленных языков знаю java8 и back-end фреймворки. Прохожу собеседования, меня приглашают — но я не иду работать, и не знаю что с собой делать. Не ужели правда, пока есть станет нечего — придётся идти?? или есть что-то ещё? Подскажите. До работы правда час-полтора добираться — это нормально вообще?
Привет. Всем бы такие проблемы :)
для многих нормально тратить столько времени (и даже больше) чтобы добраться до работы.
из комментария не совсем понятно, зачем ты хочешь устроиться на работу, понятно только, что острой необходимости в этом нет

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

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

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

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

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

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

— 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.
А насколько глубоки ваши познания в вышеперечисленном?
Что понимаете под PuTTY, например?
Что понимаете под PuTTY, например?


Под ним и не получится понимать «многое» — тулл для ssh под win. Удобный (ибо хорошо настраиваемый, с запоминалкой).
Когда кто-то предоставляет доступ до полу-боевого (тестового, максимально приближенного к боевому) сервера, то неизбежно задается вопрос «вы сможете подключиться?». Я первым делом это проверяю, сразу пишу ответ «да, через PuTTY подключился успешно, могу заняться задачей»(если все хорошо… если плохо — то можем выяснить «в чем же проблема»). Клиент в ответ радостно прощается до чекпоинта.
UFO just landed and posted this here
Если вам этого хватает — то почему бы и нет?
И да, пишите про VCS, так же лучше получается, если указать знакомую вам систему отчетности (трекеры/документация)… но это имеет смысл, если вы все же «набегами» на какие-то задачи. Т.е. «позвали-пришел-РешилПроблему-расчет-попрощались».
Спасибо за ответ, я пожалуй слегка некорректно описал свой опыт, под теорией CS я подразумевал не базовые вещи аля чем heap sort от quick sort отличается, а например детали реализации KD дерева. Базовые алгоритмы и приниципы работы компьютера с дискретной математикой у меня в ВУЗе к счастью были но не на том уровне как например у выпускника факультета кибернетики МГУ. Мне честно говоря казалось, что без знаний хотя бы 80% из книги уровня CLRS в Яндекс не берут.
Мне честно говоря казалось, что без знаний хотя бы 80% из книги уровня CLRS в Яндекс не берут.


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

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

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

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

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

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

Выше советуют начать тестировщиком, тут ничего не могу сказать, сам никогда не рассматривал такую возможность и не знаю их тренды.
Как раз джуну очень полезно в яндексе поработать, ибо всему научат и строчку в резюме дадут, а вот получит ли там крутой специалист достойную зарплату — вопрос
У меня джунов пачка, работают. Есть и те, кто вырос быстро, за 100К в окладе перевалили. Да, по началу им было туго, месяц стажировки, без оплаты, второй с минималкой, а после — обучение в одной из школ программирования, целый месяц по 4 часа в день им вдалбливали как можно и как нужно делать. Теперь из 16 джунов трудятся 11. Лентяи слились по пути, кому было интересно остались.
Честно говоря, с таким описанием я бы к вам не пошёл, когда был джуном
Алгоритмы заботай, на собеседовании это единственная самая важная тема. Есть сайты вроде interviewbit.com, там все алгоритмы разбиты по темам и на каждую есть видеолекция, пара учебных задачек и десяток задач с реальных собеседований.
На мой взгляд, часто достаточно изучить какой-то фреймворк или библиотеку, чтобы найти работу в АйТи. «Гениев», готовых освоить, то дофига. А когда проекту срочно нужен человек просто владеющий чем-то специфическим, то могут быть сложности с поиском и есть шанс получить работу без всякого другого опыта или высшего образования.
Какая знакомая история. Только я 17 лет как ИП, затем ООО. Открыл и закрыл более 13 микробизнесов, около сотни прожектов и идей. Параллельно был devops — но там некуда расти, доростал до начальника ИТ три раза — скукатища, проекты нудные и т.д. и т.п. Программирование в возрасте 6и лет basic, затем ассемблер — все это на zx-spectrum. Потом паскаль, С на школьном компе. Потом забил, потом снова что-то где-то как-то. КОгда надо php и блевотная java.

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

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

Articles