LINUX.ORG.RU
ФорумTalks

Почему решая литкод ты никогда не станешь архитектором (но на самом деле никогда не хотел им быть)

 , , , опус,


7

2

Специальный выпуск для linux.org.ru.

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

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

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

Мне вспоминается старый-престарый эпизод моей жизни, как я еще будучи школьником выиграл олимпиаду по информатике. Задача была на поиск кратчайшего пути (пардон, точного условия уже не помню, это было давно и неправда). Грамотный программист быстро выдаст вам «правильное» решение O(N log N) по алгоритму Дейкстры. Но поскольку на тот момент я не знал алгоритма Дейкстры и не был грамотным программистом, то вместо «правильного» решения выдал асимптотику O(N), заэксплуатировав некоторые особенности конкретных условий той задачи.

И второй эпизод, современный. Меня выбесило одно из недавних моих собеседований: некая контора дала мне тестовую задачку, являющуюся также одной из фундаментальных задач, решаемых их продуктом. Мне просто забыли сказать, что «правильный» метод должен быть O(N^3), и я случайно потратил целый день на разработку метода O(N^2), который оказался настолько неожиданным для «сеньоров», что им понадобилась целая неделя для анализа моего решения на 500 строчек (inb4: фу-фу, лапшемес), а на собеседование со мной собрали всю верхушку — на минуту у меня сложилось ощущение, будто меня собеседуют в гугл, а не в местную помойку. Я не удивлюсь, если вся их шарашка уже работает над интеграцией моего метода, и в скором времени получит премию, мол «наш отдел провел тщательные исследования предметной области...», а тебе, мартыха, хрен с маслом. И это собравшееся начальство на собеседовании было серьезно намерено развести меня на решение еще одной важной для их помойки задачки. Большая часть их штата джуно-мидлов занимается обвязками-прокладками-интерфейсами-тестированием, короче говоря, теми задачами, под которые можно нанять горсть рабов с улицы хоть прям щас — но эти люди в жизни не смогут выдать оригинального решения, а только будут ждать команд сверху.

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

Что мы всё про меня да про меня. С точки зрения массовой индустрии Дуглас Крокфорд — посредственный программист, и в недавнем треде большое число отписавшихся доходчиво пояснило, почему это так. Да, подумаешь, он создал какой-то там JSON, на котором работает половина индустрии, а еще создал JSLint, который ведь оказался так себе и был вытеснен ESLint-ом, и вообще «я могу сделать лучше, просто оно мне не надо». Но печальная истина в том, что тысячи смузихлебов писали на JS безо всякого линта, и, я уверен, при возникновении онного долго противились новой технологии. Проходит время, и вот уже каждый школьник считает своим долгом задействовать ESLint и JSON, а пишет, естественно, на ES2015, добрая половина фич которого была реализована при непосредственном участии Крокфорда (кстати, мало кто знает, что Object.keys/Object.values еще в ES5 было внесено по инициативе Крокфорда) — но этот школьник понятия не имеет, откуда взялись «мои любимые технологии».

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

Более того, если допустить, что Крокфорд выдал некое супер-пупер классное решение для вашей фирмы, то возникает проблема — кто его будет поддерживать/развивать? А также так называемый Bus factor — что делать, если Крокфорда убьют Крокфорд уйдет? Типовой сеньор-помидор, посмотрев на код Крокфорда, выпучит глаза и закричит «ты где такое видел? Кто так делает? У тебя своя голова на плечах есть?».

Всё ли так безнадежно, и есть ли более-менее прикладные задачи, которые не сможет решить сеньор-принципал-архитектор даже в обнимку с цистерной смузи, даже выдавая по два заученных решения литкода в секунду? А может быть и есть. Например, быстрой инкрементальной Agile Scrum Kanban Fast-shipping Test Driven методикой постепенной разработки невозможно реализовать распределенную отказоустойчивую БД со строгой согласованностью данных. Отказоустойчивость — это бинарное свойство, БД либо отказоустойчива, либо нет. Не бывает почти отказоустойчивой приблизительно распределенной БД которая чуть ли не сохраняет все подтвержденные транзакции (привет разработчикам MongoDB). Ну то есть она в таком случае не отказоустойчива и не дает гарантий.

Даже Clickhouse можно почти сделать при достаточном стратегическом запасе смузи (только для единственного хоста), но яндекс так и не осилил аналога ZooKeeper (кластер ClickHouse работает через ZooKeeper), поскольку никакое количество костылей, инкрементально разработанных в Яндексе ранее, так и не смогли заменить одного грамотно продуманного решения. Что мы по итогу видим сейчас? Вся инфраструктура Яндекса стоит на ZooKeeper, найди возможность положить ZooKeeper — весь Яндекс встанет колом. Тот же Facebook тоже полагается на ZooKeeper (хоть и меньше, они там саги любят). В Amazon вообще всё печально, и я не поверю, что с любым количеством денег Amazon способен создать аналог ZooKeeper, поскольку я читал статьи их отдела по исследованию распределенных систем, и уровень там совершенно никакущий. Достоверно мне известна ровно одна контора, способная разрабатывать распределенные СУБД с гарантиями согласованности — это Google. Она разработала самое первое подобное решение, Google Chubby, близкой копией которого позже стал ZooKeeper.

Но вот в чем проблема — ZooKeeper уже есть, а значит «ты нам не нужен». Что же еще требует глубокого вдумчивого погружения и нестандартной находчивости? Похожие требования есть у многопоточных приложений. Еще подобного рода мышление нужно при тяжелой глубокой отладке софтины, на отладку которой систематически забивали, предпочитая спринты и быстрые релизы. Правда, с распространением защищенных сред выполенния, вроде JVM, CLR, JS, и Python, неустранимая потребность в отладке сильно снизилось, потому что в крайнем случае можно просто перезапустить контейнер или иметь запасные контейнеры сразу. (Еще есть UI/UX, но про мертвых либо хорошо, либо ничего).

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

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

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

Показательно, что работодатели идут навстречу этому стремлению, мол «пишешь конфиги для CI/CD? Ну ты же архитектор теперь». Аналитический склад ума нельзя поменять за месяц, его нельзя быстро приобрести или положить на полку на период отпуска. Wannabe-творец-на-выходные в лучшем создаст популярный клон существующего софта — даже не потому, что не способен ни на что другое, а потому, что понимает, что сообщество не примет ни одной значимой инновации серьезнее плагина к Emacs или очередных скрипт-костылей для сборки C++. Да и то, плагины к Emacs не нужны, поскольку уже есть настоящее проверенное решение в виде Vim и его аналогов.

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

★★★★

Последнее исправление: alpha (всего исправлений: 6)

Ответ на: комментарий от shimon

А я и не критикую всех подряд чтоб отчитываться. У меня ЧСВ не хватает для этого.

Lamobot
()
Ответ на: комментарий от byko3y

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

Устаревшие технологии это Java EE 7 на Wildfly application server, восьмая джава. Проект уже переписывали с нуля лет 6 назад, не такой он и старый. Работает стабильно, магии почти нет, все нюансы задокументированы и понятны не только основной команде, что пилят проект, но и основным клиентам.

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

Старый проект прост как тапки:

  • первый слой принимает SOAP/XML на вход, делает оркестрацию запроса, ходит в базу за конфигами и далее шлёт пачку последовательных запросов во второй слой. То есть в одном XML может быть множество сервисов, которые надо активировать через второй слой
  • второй слой принимает REST запросы, список API исчисляется парой сотен. Каждый сервис атомарный (за парой исключений) и для активации сервиса посылается запрос уже в третий слой. Этим вторым слоем тоже могут пользоваться заказчики.
  • третий слой это тупо интеграционный сервис с железяками от поставщиков, там и SOAP’ы, и REST и SSH и прочее.

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

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

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

Irben ★★★
()
Последнее исправление: Irben (всего исправлений: 1)

Нормально. Можно какие-то моменты прокомментировать.

сообщество не примет ни одной значимой инновации

Не нужно работать на какое-то вымышленное сообщество. Одобрение со стороны не требуется. Всё равно не угадаешь, что им надо. Я предполагаю, что Дуглас Крокфорд делал JSON для себя, потому что XML ему не нравился. Получилось так, что идея понравилась и другим. А если бы не понравилось, то JSON в любом случае приносил бы пользу Дугласу.

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

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

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

Kogrom
()
Ответ на: комментарий от Lamobot

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

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

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

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от no-such-file

Уникальный случай. Программисты обычно омежки, которые...

кто такие омежки, расшифруй пожалуйста чтобы загуглить

AndreyKl ★★★★★
()
Ответ на: комментарий от byko3y

Такое ощущение, то чем ужаснее язык, чем более невыносимо на нем писать,

IMHO это обычное создание некого оазиса или заповедника типа коммьюнити 1Це кодеров, которые не могут так просто взять и моментально переключиться на конкурирующие технологии, другие задачи, другую СУБД (вместо каше), не таща за собой условный Интерсистемз какаше или платформу 1Це.

Впрочем это наблюдается почти у всех проприерастов.

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

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

Я ничего не имею против 1Це как платформы, но язык программирования у них - это IMHO нечто, и отладчик цать лет назад тоже тот еще был.

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

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

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 6)
Ответ на: комментарий от AndreyKl

кто такие омежки, расшифруй пожалуйста чтобы загуглить

https://lurkmore.to/Школьная_иерархия

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

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

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от Irben

второй слой принимает REST запросы, список API исчисляется парой сотен. Каждый сервис атомарный (за парой исключений) и для активации сервиса посылается запрос уже в третий слой. Этим вторым слоем тоже могут пользоваться заказчики.
третий слой это тупо интеграционный сервис с железяками от поставщиков, там и SOAP’ы, и REST и SSH и прочее
организация решила запустить новый проект по переписыванию этой системы с использованием Кафки (компании очень хочется Кафку везде впендюрить)
Так вот я расписал архитектуру нового проекта и полгода с командой пилил, а как ушёл, новый архитектор ни на один вопрос не ответил

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

Мне даже не особо понятно, откуда взялось столько фанатов кафки. Да, есть всякие консультанты, рекламирующие свои услуги:
https://towardsdatascience.com/you-can-replace-kafka-with-a-database-39e13b61... - You Can Replace Kafka with a Database. But for goodness’ sake, don’t
Но таких людей не так уж много, и у них, как правило, настолько ужасающее число заваленных проектов за последние несколько лет, что им тяжело чем-то похвастаться (что поделать, стартапы — это риск, ага).

byko3y ★★★★
() автор топика
Ответ на: комментарий от Kogrom

Одобрение со стороны не требуется. Всё равно не угадаешь, что им надо. Я предполагаю, что Дуглас Крокфорд делал JSON для себя, потому что XML ему не нравился. Получилось так, что идея понравилась и другим. А если бы не понравилось, то JSON в любом случае приносил бы пользу Дугласу

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

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

Да, извиняй, временное помешательство.

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

А вот это интересно. В чем заключались учебные проекты?

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

https://lurkmore.to/Школьная_иерархия

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

Toxo2 ★★★
()
Ответ на: комментарий от Toxo2

Иерархия свойствена в целом почти всем сообществам на Земле.

Поэтому вероятно принудительно дрессеруют с самого детства.

sanyo1234
()
Ответ на: комментарий от sanyo1234

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

Далеко не все тупиковые технологии именно «впаривались», очень многие из них были поддержаны децентрализовано. Да, в случае MUMPS и Cobol это чистая коррупция, но есть куча других технологий, как то Python, например.

byko3y ★★★★
() автор топика
Ответ на: комментарий от Toxo2

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

Это батхерт 95% училок. ИХ чмырили в классе, потому что они склонялись к интересам учителя, а не интересам товарищей. Именно потому у них такое неадекватное сочувствие чмыренным, причем, они понимают, что толком с этим делать ничего не могут, потому остается только истерить.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

но есть куча других технологий, как то Python, например.

Сам же писал, что его впарил Google?

Чем плох Python? (комментарий)

и мое в догонку:

Почему все учат Python, мне он не нравится. Мне нравится C# (комментарий)

sanyo1234
()
Ответ на: комментарий от sanyo1234

Сам же писал, что его впарил Google?
Чем плох Python? (комментарий)

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

byko3y ★★★★
() автор топика

Кто-то поменял треду тэги — у меня все ходы записаны:

«Исправление alpha, 26.11.21 23:26 (текущая версия) :

архитектура, жж, карьера, опус, программирование

архитектура, рынок, психология, карьера, программирование»

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Гугл поддержал питон, гугл не навязал питон.

Попробуй где-нибудь в DevOps чате предложить .NET скрипты (c готовыми питон либами через Interop) вместо питона хотя бы для IaC и посмотри на их реакцию. Это секта (включая модераторов), которая кроме питона и GO ничего больше не принимает из императивных языков для своих скриптов за редким исключением типа Groovy для Jenkins, башнянки не в счет.

Причем один из их аргументов как раз: «В нашей секте нет таких специалистов, а нам нужна взаимозаменяемость», но то, что .NET кодеров без DevOps скилзов почти столько же сколько, сколько и питонистов их не интересует.

Кодеры на мумпсе и 1Це - это тоже вероятно секты, как говорится, разделяй и властвуй, а не унифицируй как в .NET CLR.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 5)
Ответ на: комментарий от byko3y

таких школ раньше не было

Ну да, ну да. Просто в интернетиках об этом не писали.

неадекватное сочувствие чмыренным

Конечно. Учитель должен присоединиться к травле, это же очевидно.

Nervous ★★★★★
()

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

функции выучиваются наизусть за пару дней

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

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

Знакомство со стандартной библиотекой теперь называется «очень-очень глубоко»? Хотя, знал я одного «архитектора», которому в своё время пришлось объяснять, что такое итераторы. У него чуть ли не сердечный приступ случился при виде *it и ++it.

Но тебя не взяли не потому что ты слаб, а по другой причине. По всей вероятности, ты не умеешь работать с людьми. У тебя все #$@сы, а ты - Д’Артаньян. А как это выяснить? Обычно просишь человека сделать то, в чём он точно не эксперт, и смотришь как он себя поведёт. Если будет пытаться вместе с тобой достичь результата, то это хороший человек, с которым можно работать. Если же будет высокомерно фыркать, давая понять, что делать такие вещи - удел смузихлёбов, то тут даже тебе должно быть всё ясно.

rupert ★★★★★
()
Ответ на: комментарий от byko3y

В чем заключались учебные проекты?

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

  1. Написание ТЗ.
  2. Рассмотрение прецедентов проекта.
  3. Рисование UML-диаграмм. Здесь уже вырисовывались модули, которые можно было распределить по участникам.
  4. Определение интерфейсов модулей, на основе UML-диаграмм.
  5. Реализация модулей.
  6. В ходе реализации модулей становились понятны ошибки изначальной архитектуры и интерфейсов. Здесь коллективно решали, как и что будем менять.

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

Kogrom
()
Ответ на: комментарий от Exmor_RS

Ты в психотронной тюрячке из своих собственных неверных представлений о мире

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от Irben

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

Ты что! Это же софт скилз, самое главное в современном IT - способность лизнуть и не генерировать ничего лишнего.

sanyo1234
()

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

Lamobot
()
Ответ на: комментарий от AntonyRF

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

Лучше бы 40-80 часов в месяц сделали за хотя бы от 1 тыр в час.

В РФ вообще бывает part-time? Ни один HR мне никогда не предложил part-time.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от rupert

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

А почему бы сразу не пройтись по бусту? Для собеседования в одной сраной конторе чего только не сделаешь, даже несмотря на то, что у меня через день назначено собеседование по Vue, под которое я, наверное, тоже должен бы пройтись по всей стандартной либе и детально разобрать каждую функцию. Ты представляешь, насколько много есть тем в программировании даже на одних только крестах, помимо добавленных в C++11 фич? (спасибо то не C++17) Даже в стандартной либе. Я не был предупрежден, что с меня будут спрашивать по этой теме, потому идите в жопу. А поскольку я еще и предупредил, что у меня мало опыта по теме. то я не могу предположить никакого мотива, кроме «меня разводят на ЗП».

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

Знакомство со стандартной библиотекой теперь называется «очень-очень глубоко»? Хотя, знал я одного «архитектора», которому в своё время пришлось объяснять, что такое итераторы. У него чуть ли не сердечный приступ случился при виде *it и ++it

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

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

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

byko3y ★★★★
() автор топика
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от byko3y

А почему бы сразу не пройтись по бусту? Для собеседования в одной сраной конторе чего только не сделаешь, даже несмотря на то, что у меня через день назначено собеседование по Vue, под которое я, наверное, тоже должен бы пройтись по всей стандартной либе и детально разобрать каждую функцию. Ты представляешь, насколько много есть тем в программировании даже на одних только крестах, помимо добавленных в C++11 фич? (спасибо то не C++17) Даже в стандартной либе. Я не был предупрежден, что с меня будут спрашивать по этой теме, потому идите в жопу. А поскольку я еще и предупредил, что у меня мало опыта по теме. то я не могу предположить никакого мотива, кроме «меня разводят на ЗП».

Если ты C++ кодер в низкоуровневые базовые софты, вероятно в back-end, на кой тебе нужен франт с Vue? Там же эти JS поделки меняли как перчатки чуть не ежегодно раньше? Даже у Microsoft даже с десктоп GUI свистопляска, не считая WinForms.

sanyo1234
()

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

X512 ★★★★★
()
Ответ на: комментарий от byko3y

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

Ох и изверги, нанимают на С++ человека и при этом спрашивают сложность выполнения стандартных алгоритмов. Где это видано?

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

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

Lamobot
()
Ответ на: комментарий от Kogrom

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

Если у вас есть прототип (прецедент проекта), то да, копируете прототип примерно по такому сценарию. Оригинальные проекты по такому сценарию не слепишь. Лично я UML не люблю, лучше старый дедовский текст.

byko3y ★★★★
() автор топика
Ответ на: комментарий от AntonyRF

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

Интересно, есть ли там спрос на такое:

1) Building custom OCI container images even for GUI applications having VNC, SSH, X11 forwarding (e.g. for LibreOffice, even for Windows applications compatible with WINE. etc.). Adding to them software copy protection like EnigmaProtector, Eazfuscator and Guardant hardware tokens. Such Linux containers can be run on MacOS, Windows and Linux (desktops or dedicated isolated hosts in Firecracker microVMs e.g. on K*S or on OpenNebula).

2) Scripting for automation of administration of Linux, Free UNIX, DBMS, other services and activities. Writing scripts for syntax unification of admin tools. Development of custom Bash and Ansible based Kubernetes operators.

3) Scripting IaC and CircleCI.

Создание кастом операторов пока изучаю.

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

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

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 3)
Ответ на: комментарий от Lamobot

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

Да вот она: https://leetcode.com/problems/two-sum/

Идеальное решение при ограничении по времени требует точного применения unordered_map — именно под него мне давали подсказки, именно этого ответа ждали. Но я за отведенное мне время не смог прикинуть, что от меня хотят именно него, а все остальные варианты (map, несколько способов сортировки) дают O(N log N).

byko3y ★★★★
() автор топика
Ответ на: комментарий от sanyo1234

В РФ вообще бывает part-time? Ни один HR мне никогда не предложил part-time

Кстати да, мне тоже.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

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

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

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

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от byko3y

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

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

rupert ★★★★★
()
Ответ на: комментарий от Toxo2

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

Поэтому лучше работать за деньги админом/девупсом,

а кодить только для фана и только для себя, чтобы не таскать «чужие мешки с чужим гавном», а только свои с фиалками LOL. (c)

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от byko3y

А сколько ты просил денег?
Просто интересно во сколько себя оценивает «архитектор» который не смог решить простую задачу (даже на литкоде написано что это easy).

Lamobot
()
Последнее исправление: Lamobot (всего исправлений: 1)
Ответ на: комментарий от X512

Времена великих программистов уже прошли

Когда именно они прошли? В этом году, в прошлом, десять лет назад?

rupert ★★★★★
()
Ответ на: комментарий от X512

Времена великих программистов уже прошли

Их никогда и не было. Программирование - это сугубо прикладное занятие. Слово «великий» более-менее применимо к гениям от науки

vaddd ★☆
()
Ответ на: комментарий от sanyo1234

Поэтому лучше работать за деньги админом/девупсом

Лучше работать за деньги в свободном полёте )

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

Эникеить люди попросили, которым отказать не мог.

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

Toxo2 ★★★
()
Ответ на: комментарий от Toxo2

Лучше работать за деньги в свободном полёте )

Что значит в свободном полете?

Что там с графиком работы в свободном полете? дидлайнами, выбираемыми тобой технологиями? IMHO свободного полета за деньги почти не бывает в РФ, только удаленно с США и то только одиночкой на фрилансе.

sanyo1234
()
Ответ на: комментарий от sanyo1234

Что там с графиком работы в свободном полете?

Вот на этот вопрос точно могу ответить ) Это такой график, когда садишься за компутер в пятницу, а в понедельник встаешь поссать. И не потому что «дидлайн», а потому что искренне кушать не можешь пока не решишь задачу.

Собственно - Линус Торвальдс по его словам как-то так же Linux писал сначала.

Мы птицы, конечно, разного полёта. Но глиссады схожие )

Toxo2 ★★★
()
Ответ на: комментарий от Toxo2

Вот на этот вопрос точно могу ответить ) Это такой график, когда садишься за компутер в пятницу, а в понедельник встаешь поссать. И не потому что «дидлайн», а потому что искренне кушать не можешь пока не решишь задачу.

Хотя бы $40/h за такое?

sanyo1234
()
Ответ на: комментарий от Toxo2

Собственно - Линус Торвальдс по его словам как-то так же Linux писал сначала.

Так ты не путай, он сначала не работу работал, а ростил свои идеальные фиалки в пет проекте.

И сейчас у него прекрасный уровень дохода.

Понятно, что он очень талантливый и уникальный.

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

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от byko3y

Если у вас есть прототип (прецедент проекта)

Я подозреваю, что под прецедентами тут подразумевались use cases, но доказать не могу.

Nervous ★★★★★
()
Ответ на: комментарий от sanyo1234

Вот на этот вопрос точно могу ответить ) Это такой график, когда садишься за компутер в пятницу, а в понедельник встаешь поссать. И не потому что «дидлайн», а потому что искренне кушать не можешь пока не решишь задачу.

Хотя бы $40/h за такое?

Самый кайф - это когда так работаешь не за деньги

vaddd ★☆
()
Ответ на: комментарий от vaddd

Самый кайф - это когда так работаешь не за деньги

Для этого нужны деньги, время, хорошее здоровье и другие ресурсы.

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

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

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.