Pull to refresh

Comments 607

Очень похожая и история, и ситуация :) Правда «Микрошу» родители купили в 89-м, а МК-61 года за три до того.
Состоятельные у Вас были родители, ибо «Микроша» тогда стоила 500 руб, как высококачественный катушечник.
Помню, году в 1995, когда контора на Дмитровском Шоссе, которая выдавала «Микроши» напрокат, собиралась закрываться из-за отсутствия спроса на них, я туда поехал и скупил пяток «Микрош» — отыгрался за своё испорченное детство!
Ну, цветной телевизор тогда дороже стоил 3УСЦТ какой-нибудь, емнип, а не такая уж редкость была.
Какая гадость эти 3УСЦТ! Элементная база — отстой… Хорошо, что те времена уже прошли… хотя до сих пор не признаю ЖК телевизоры — пользуюсь телевизорами на ЭЛТ.
>> пользуюсь телевизорами на ЭЛТ
В случае со старыми игровыми консолями это единственный выход :)
Уверен что в конце концов вы выбрали какое-то «дорогое» направление и смогли в нем достаточно хорошо «продвинуться». Ваш профессиональный и жизненный опыт позволяет решать весьма сложные задачи по этому направлению т.к. зачастую требуются синтезированные решения на основе знаний и опыта полученных ранее из предыдущих направлений вашей деятельности. Вы умеете самостоятельно достаточно быстро обучаться по любой требуемой теме. Ваш возраст — гарантия стабильности, человек в районе сорока весьма стабилен т.к. к этому возрасту успевает приобрести необходимый бытовой минимум и лишиться многих недостатков присущих молодым. Возможно вы делаете все не так быстро как молодежь, но ваш результат гораздо «более» предсказуем. Ваш нынешний работодатель научился это понимать и ценить. Поздравляю — вы стали «труднозаменимым» и хорошо оплачиваемым сотрудником!
Я не выбрал «дорогое» направление. Я за чистую и незамутнённую идеологию. «Дорогие» направления для меня — это 1С и SAP. Но они противоречат моим убеждениям. Посмотрите, сколько 1С-ники получают и сколько Python-овцы и сколько «плюсовики» за совершенно различные по сути скилы (ох, ща на меня набросятся все скопом и закидают чем-то...).
Последние 3 года программирую в основном на Python — вот на нём, так сказать, и «фигачу». Могу и на C++, но его последние 3 года почти не использовал и начал забывать.
Ну вот уже понятнее — питонистов сейчас на рынке примерно вчетверо меньше чем пхпешников к примеру, т.е. это уже чуть более «дорогой» язык для работодателей. Python — ЯП общего назначения, что именно вы на нем «фигачете», какой тип задач чаще всего решаете, какие фреймворки используете?
PHP не признаю из-за идеологии, хотя он так коммерчески успешен.
Ну что именно? Сайты пишем, естественно. Сейчас вынужденно перешел на django. Тип задач пока один: как «вправить мозги» этому django и заставить его делать то, что мне нужно, а не то, что он хочет.
Просто интересно — что за идеология?
Когда-то там не было ООП и threading-а, а негатив остался.
PHP должен умереть :)
PHP создан чтобы умирАТЬ.
И если его использовать по назначению, то умерЕТЬ он должен :)
до сих пор не признаю ЖК

PHP не признаю из-за идеологии, хотя он так коммерчески успешен.


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

Тем более про PHP вы сами написали, что уже всё изменилось. А для простого народа именно этот язык стал возможностью программировать в принципе из-за своей простоты. И он создавался не ради кода, а ради решения простых проблем на простых домашних страничках, с чем он великолепно справляется. Зачем ему тогда были потоки и объекты?
Подумайте, вы бы «признали» PHP, если бы рассматривали его в том контексте, в котором я его описал?
поддерживаю. Это один из моих тестов человека при приеме на работу :)
А я считаю совершенно правильным, когда человек занимается тем, что ему нравится, и старается не устраиваться на работу, которая ему не нравится.
И насчет PHP я с ним полностью согласен. PHP — большая помойка, благодаря этому он, кстати, и стал успешен.
Что конкретно нуждается в обосновании?
ваша странная позиция по поводу одно из самый мейнстримовых языков современности, например. Каждый раз вижу ваши комментарии и лезу минусовать, жаль что лишь однажды это можно сделать :)
Да, мой основной язык за последние 10+ лет большая помойка :) Нет целостности, нет даже формального описания синтаксиса (если не считать за него исходники транслятора). Десятилетие может прикручиваться элементарная для других языков фича, и то работать будет в строго определенном контексте.
В исходники его транслятора, как и (большинства) библиотек лучше не заглядывать во имя сохранения душевного спокойствия :)
Иногда без этого никак :(
А Вам почему бы не сделать форк и всё не исправить? Сделать свой PHP, который лучше?
Почему как обычно, куча ругающих, а желающих всё исправить так мало? Потому и продолжаем есть кактус?
А зачем плодить диалекты? Кроме того, если из текущей реализации PHP выбросить все те костыли и странности, которые в нем есть — получим язык, несовместимый с, собственно, тем, что сейчас подается, как PHP.
Зачем делать fork? Надо просто сделать бесплатную замену PHP->Python, и проблема решена. Сэкономим десятки человеко-лет.
надуюсь меня не полезете минусовать ;) если отвечу на вопрос «чем php плох?» ссылкой: habrahabr.ru/post/142140/
А я, как говорится, просто оставлю это здесь: habrahabr.ru/post/142140/

(Ой, выше, видимо, уже дали эту ссылку. Прошу прощения. Просто статья великолепна и отлично запомнилась многим)
имхо сарказм(){ половина зарплаты 1С-ников — это возмещение морально-психологического ущерба программисту (с САПками, кажется, тоже самое, только компенсация выше)} (сам мурыжил Комплексную 1С год как админ, потом как программист).
В случае саперов там ещё вопрос в том, что на нашем рынке грамотный сапёр — зверь редкий, причем зачастую вложившийся в свое обучение. И высокая зарплата — суть компенсация оплаты редкости и отбивка затрат на образование.
Долго вкуривал, о каких «сапёрах» идет речь))

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

Ну и все в свободное время пишут собственную конфигурацию :-D
Я впитал за свою многолетнюю практику принцип того, что всего знать невозможно. Зато можно научиться быстро искать и обрабатывать/использовать информацию. Технологии меняются как слайды, и за ними никогда не угнаться. А работа всегда найдётся!
Общий смысл понятен (возраст аналогичный).
Мне не кажется правильным плясать от «мне нужно найти работу» (такую идею я вижу в вашем тексте). Если заниматься тем, что нравится и/или интересно, вопросы с работой обычно решаются сами в том или ином виде. Чего вы хотите от жизни? Зачем вам карьера?
Ну смотрите, уважаемый frog. Мне, например, прям сейчас хочется делать один стартап, но он не принесёт денег (ну разве что небольшую прибавку к пенсии), и никому, кроме меня он не нужен. Кушать, тем не менее, хочется. Что делать? Правильно, искать работодателя, который занимается успешным стартапом, и у которого я мог бы работать, используя аналогичные технологии. Работаю на него и делаю своё в свободное от работы время. «Карьера» нужна, чтобы заработать немного денег на пропитание. Вот и всё.
Сначала зарабатываете (хоть на несчастной 1С :) за ограниченный промежуток времени (месяцы) сумму, которая позволит кушать следующие несколько месяцев. После этого уменьшаете объем работ за деньги и начинаете параллельно заниматься стартапом (либо осваивать новую технологию, которая затем позволит вам меньше работать и при этом получать больше денег. Или другим способом повышаете свою ценность).
На следующем цикле тоже самое, но с еще большем перекосом в сторону стартапа/самообразования. И т.д.
Хм… хорошая идея, но 1С у меня на грани тошноты… не могу забыть, как она съела весь софт на access в одной конторе, где я работал. Эта мерзостная глюкалка, под которую еще можно до сих пор «программировать». Помню, какой у нее был язык программирования в 1997 году. Гадость. А SAP и остальные странные вещи, которые потенциально принесут деньги — я даже туда лезть не хочу, этот весь банковский софт…
Про 1С это просто пример. К стоматологу ходите, когда зуб заболит? Ну вот считайте, что это тоже самое. Появится резерв на несколько месяцев, сможете разорвать круг по которому ходите. Но всё-таки я не случайно выше спросил, чего вы хотите от жизни. Обычно всё упирается в это. Кто-то хочет красивую жизнь, кому-то пофиг на комфорт и интереснее себя менять — вариантов много, соответственно рецепты разные.
Не друг, у меня та же история жизни, почти 95% совпадение. Только я пошел в банковский бизнес. Так вот это трясина!!! Нечего в ней делать.
Абсолютно поддерживаю. Постоянные оверхэды и срывы сроков…
SAP не банковский софт, если уж на то пошло
SAP != 1C. 1C это малый и средний бизнес, SAP это средний (если может себе позволить) бизнес, и большой (корпорации) бизнес. Конечно 1С можно натянуть на большой бизнес, но все это будет с большим скрипом и костылями…
Плюс еще нужно учитывать, что SAP придется натягивать на отечественные финансово-банковские и законодательные реалии и пилит не меньше 1С. А в условиях того бизнеса, на который SAP рассчитан это в принципе непросто.
В общем, каждому гвоздю своя кувалда.
Сильно согласен. 8.х (особенно 8.2 и, надеюсь 8.3) гораздо приятнее 7.7 — и в плане языка, и плане среды и платформы.
А «мне нужно интересную работу» нормально? :) Но вообще мне кажется, что рассчитывать на то, что вопросы с работой решатся сами несколько наивно.
> А «мне нужно интересную работу» нормально? :)
Лучше, но не ощущается масштабность желаний :-)

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


простите — но программист должен знать что такое машина тьюринга. пока же вы слишком хорошо описываетесь поговоркой
«Специалист подобен флюсу — его выпуклость однобока»
Я знаю, что такое «машина Тьюринга» — проходил в ВУЗе. Честн говоря, и что такое «конечный автомат» — знаю. Загнул немного.
Кому должен-то? Будет необходимость — всегда можно досконально разобраться.
к сожалению за это не платят. есть два человека — и один говорит «я это знаю», а второй «всегда можно разобраться» то как вы думаете — кого возьмут?
Вы так говорите, будто ответ очевиден и однозначен. ИМХО, человек, который может с чем угодно быстро разобраться, гораздо ценнее человека, который в ВУЗе выучил определение машины Тьюринга, но не может и шагу ступить за рамки того, что ему преподавали.
Честно скажу: ни разу не программировал под машину Тьюринга после ВУЗа, и лично с Тьюрингом не знаком и у него не работал.
Возможно, это и к лучшему, что вы с ним не знакомы, учитывая известные о Тьюринге факты из личной биографии.
Минусующим неплохо было бы ознакомиться с биографией Тьюринга сначала.
Кстати, Тьюринг был неплохим марафонцем.
Вы так говорите, как будто его личные предпочтения влияли на его профессиональную деятельность. Человек может быть талантливым в одном, а может быть талантливым и в двух. :-)
Вы не поверите, но тут многие знают его биографию
Может быть, минусуют как раз потому, что знают его биографию?
UFO landed and left these words here
Тут вам не гос.дума, тут люди приличные сидят, на оскорблении других очков не заработаешь :)
Возможно, минусующие (меня, если что, среди них не было — прошу не обижаться) как раз знают те факты из биографии Тьюринга, на которые вы намекаете и просто огорчены вашей нетолерантностью.
Вопрос некорректный. Хороший руководитель принимает решение не по таким простым критериям.
По-моему, всё-таки важнее не знание машины Тьюринга, а умение очень быстро решать не совсем тривиальные задачи. Тут может помочь знание алгоритмов. Я тренировался на contest.yandex.ru/, пока не затошнило… слишком сложно.
Решать не совсем тривиальные задачи — это, безусловно, очень хорошо. Но вот странно в этом отношении читать про вопрос номер 10. Я ни разу не программист, но и то почти с ходу придумал какой-то вариант — похоже, даже рабочий. Возможно, именно это и хотел работодатель? Но тогда странно считать нормальным ответ «можно посмотреть в интернете»
>есть два человека — и один говорит «я это знаю», а второй «всегда можно разобраться» то как вы думаете — кого возьмут?

Вот есть два человека, один говорит «Да, я знаю А, Б и В», а второй говорит «Не знаю ничего из этого, но могу разобраться». Но когда понадобится Г, Д, Е, а потом еще немного от У, Ф и Х, то первый скажет «О-о-о, не-ет, я это не знаю», а второй скажет «Да не вопрос, могу разобраться» — и таки разберется, ибо этот скилл у него прокачан годами.
А это не факт, что у первого скилл «разобраться» тоже не прокачен. Просто так жизнь сложилась, что на момент собеседования он А, Б и В знал и даже помнил :)
Ну разумеется, не значит. Поэтому нельзя однозначно сказать ни «берем первого, т.к. знает», ни «берем второго, т.к. он быстрее разберется».
Бывают такие программисты, с плохой памятью. Наступают на одни и те же грабли, приходят с вопросом, по которому месяц назад был ликбез. Возможно, они читали про А, Б, В, но в памяти не осталось ничего. Другой же программист, всё что прочитал, помнит. Может пересказать и применить.
Ой ли… вы можете «всегда разобраться при необходимости», только если у вас есть фундаментальные знания, понимание что где и как применяется, но вы слегка плаваете или забыли.
А если о какой-то области вы даже не слышали, то как говорят в наших краях «you don't know what you don't know». Посыл такой, что если вы не знаете какую-то область и где она примененяется, то встретив задачу, легко решаемую с помощью методов из этой области, вы будете выдумывать что-то свое и скорее всего гораздо менее эффективное, а иногда совершенно некорректное решение.
Когда вам в последний раз в практической работе помогло знание что такое машина Тьюринга?
Совсем недавно понимание что такое конечный автомат помогло сделать дизайн фреймворка для автоматического тестирования распределенного приложения.
Конечные автоматы имеют большое практическое значение, в отличие от МТ, практическое значение которой в основном сводится к возможности доказательства очередной теоремы из CS.
А зачем? Вот, например, я в университете проходил МТ чуть ли не в первом семестре, потом, за прошедшие с того момента 19 лет, она мне не понадобилась. Зачем мне про неё помнить? С другими дисциплинами аналогично — я потихоньку забываю то, что не использую — в памяти остаются лишь какие-то общие моменты, без деталей.
Очень знакомо. Но на самом деле типичная ситуация для «пограничников».
Т.е. людей, которые можно сказать стояли у истоков компьютеров, в таком виде, в каком мы знаем их сейчас.
Которые начинали лет 20-25 назад. Прошли с DOS до Windows 8, и с ASM до JS.
И помнят времена, когда интернета еще не было)
Много опыта в самых разных вещах, но пройти собеседование при этом тяжело.

Как мне кажется, хорошим вариантом будет копать «долгоиграющие» технологии, вроде java.
С таким багажом опыта, знания будут набираться очень быстро. И востребованность рынком будет.
Я не только помню времена, когда в России интернета ещё не было, я помню времена, когда в ФИДО нереально было попасть, и я не мог этого сделать несколько лет!!! Туда можно было попасть только через очень хороших знакомых и по большому блату! И я несколько лет сидел в «левых» сетках под названием Draftnet, еще какой-то net…
Большой блат приобретался очень легко — через пиво сисопу )
Надо было напрограммировать им что-нибудь, вы же программист.
Я в фиде вообще через друга с телефоном сидел после переезда издалека.
Вернее, только читал :(
Соглашусь с первым абзацом. Я лично не прошёл бы ни одно типовое собеседование, про которые на хабре постоянно пишут. Но почему-то меня это не волновало и сейчас не волнует.
У меня похожий послужной список. Правда я поняла, что computer science — важная штука, нашла программы нескольких буржуйских вузов и по ним добирала и продолжаю добирать недостающие знания. Алгоритмы, особенно сложные, мне ещё предстоит осваивать. :)
Я думаю, что в статье вырисовывается проблема отсутствия фокуса и структуры — как в знаниях, так и в профессии — классическая ситуация самоучки.
Выход достаточно прост: выбрать конкретную область приложения усилий — все знать невозможно, да и не нужно. Почитать требования в вакансиях, ибо от питонистов на веб требуют одно, для сишников на железо требуют совсем другое, а для сапы — третье. И прочитать базисные книги по теме. Обычно после этого оказывается — «о, вот как называется то, что я использую много лет».
Для исчерпывающих ответов на те 13 вопросов, что приведены выше, нужно прочитать всего три книги (по протоколам инторнета, основным понятиям ООП-подхода, взаимодействие процессов) и пару статей (оптимизация запросов, алгоритмы сортировки).

А computer science нигде, по сути, не учат. Из того, что могут дать даже в самом хорошем учебном заведении на практике 90% не будет использовано, ибо в этой области все очень быстро меняется, и каким именно направлением кто займется — в вузе не знают. Поэтому один из основных скиллов программиста — быстрое самостоятельное обучение тому, что нужно.
Для исчерпывающих ответов на те 13 вопросов, что приведены выше, нужно прочитать всего три книги (по протоколам инторнета, основным понятиям ООП-подхода, взаимодействие процессов) и пару статей (оптимизация запросов, алгоритмы сортировки).

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

Задавали подобные вопросы. Когда-то читал, и даже ethernet-кадры(или пакеты? или фрэймы? — не помню :( ) анализировал из интереса, чтобы разобраться. Помню, что даже при простейших запрос-ответ по IP-адресу в пределах одной «шины» (то есть без DNS, без внешнего роутинга и т. п.) пакетов больше чем два, как это можно было бы предположить без хотя бы поверхностных знаний об OSI в приложении к Ethernet/IP/TCP/HTTP. Помню, что как минимум есть пакеты, подтверждающие доставку. Но вот однозначно описать, тем более с правильными названиями типа ack (или ask? — не помню), точно не смогу. Я не гожусь на должность веб-разработчика, оперирующего данными на уровне HTTP?
ACK — acknowledge.

Ну для веб-разработчика этого точно не надо. А вот если нужно сетевой обмен на tcp писать, то желательно иметь представление о 3 way handshake и прочих «кишках» tcp. Хотя бы, что бы потом не выглядеть глупо в глазах сетевых админов с вопросом «почему у вас сеть так медленно работает?».
А зачем спрашивали, если из описания вакансии явно следовало, что даже HTTP запросы «ручками» разбирать не придётся?
По опыту прохождения собеседований могу предположить — что-бы показать, что сам знает это :)
От веб-разработчиков, обычно, не требую знаний таких тонкостей в протоколах, достаточно общих слов, типа «запрос отсылается на сервер (apache/fpm/tornado/ngnix), там происходит обработка параметров, после чего отдается php/python интерпретатору» — этих знания для его работы вполне достаточно.
А вот для разработчика сетевых низкоуровневых сервисов, скорее всего, потребуют примерную раскладку — он обязан это знать, это его специализация. так же, как и отличие демонов, и основы взаимодействия процессов. с другой стороны, от него не потребуют знаний интерпретаторов php/python и методов оптимизации запросов к БД.
Очень часто требуют чуть ли не уровни сигналов в кабелях описывать.
от веб-разработчиков уровни сигналов? ни разу не встречал.
Утрировал, конечно. Но на уровне Etehrnet-пакетов (всякие ARP и т. п.) спрашивают, причем вакансия явно не предполагает хотя бы ручной разбор HTTP-запросов. Иногда ощущение складывается, что цель собеседований показать, что ты плохой разработчик, а потому на заявленную зарплату можешь не рассчитывать.
а, ну тут 2 варианта: либо сбивают цену, либо просто тестирование на общую квалификацию. в любом случае, отвечать тут не обязательно.
кстати, очень хорошо помогает контрвопрос «А вы с какой целью интересуетесь?»
А вдруг ему интересно, как эта магия работает?!
Наихудшая сложность сортировки это как минимум O(n!) — генерируем все перестановки, проверяем каждую на отсортированность.
Если так рассуждать, можно за O(n ^ n) прозаниматься херней и вообще максимальная сложность неограничена.
Совершенно верно. Максимальная сложность алгоритма сортировки не ограничена. Это с точки зрения той самой Computer Science.
По-моему, вы забыли учесть сложность проверки последовательности на отсортированность. Так что либо O(n*n!), либо O(n^2*n!) (если не пользоваться транзитивностью сравнения).
Bogosort — рандомно раскидываем элементы в массиве и проверяем, не отсортировались ли они случайно.
Почему не может быть сортировки быстрее O(N * ln(N)), кстати, действительно полезно почитать и понять. А потом почитать про radix sort, который сортирует быстрее. Не для прохождения интервью, а потому что такой подход может пригодиться на практике.
Если мне не изменяет память, то быстрее O(N * ln(N)) не бывает сортировок, основанных на сравнениях элементов между собой, а не сортировок вообще.
Аналогично, за O(N * ln(N)) бывают сортировки, основанные на транзитивности сравнения, одинаковом размере элементов и прямом доступе к памяти. А не сортировки вообще.
А если массив уже отсортирован, какая будет временная сложность?
Если известно, что массив отсортирован — то 0. Если это нужно проверить, то зависит от алгоритма. Какой-нибудь пузырёк или простые вставки сработают за O(n). Большинство других алгоритмов не обратит внимания на отсортированность, и пойдёт по своему обычному пути. А наивный quicksort (берущий в качестве разделяющего элемента первый, а не средний) затратит n^2, если не свалится раньше по нехватке стека :)
Я про интервью. Если я правильно понял, сложность сортировки теоретически варьируется от O ( 0 ) до О (+∞)?
Лучше сказать от О(1) (надо ведь проверить условие, что он отсортирован), но, в общем, да. Зависит от конкретной постановки задачи и от алгоритма.
Что-то не соображу… реально сложность проверки отсортированности O(1), а не O(N)?
Как правило, конечно, O(N). Но, как я написал, «зависит от конкретной постановки задачи». Например, возможно, что конкретно этой функции сортировки передают не только длину массива, но и длину уже отсортированного начального куска (а почему бы и нет? Если в конкретном алгоритме она известна, то для сортировки очень даже может пригодиться). Тогда в лучшем случае (когда эта длина равна длине всего массива), сортировка проверит, что делать нечего, и вернётся. За O(1).
Это наверно в конце массива флажок ставить, если он отсортирован. И потом проверять только флажок.
Наверно это то, что хотели сказать комментом выше)
Вопрос про какой алгоритм, radix sort? Так ему всё равно, сложность та же — O(N*k).
Массив из нулей и единиц (детерменировано, больше ничего нет) вы как будете сортировать?
Я тут полузабанен за срач в каком-то топике. Поэтому, я вам сразу скажу, что массив байтов сортируется за О(н). Массив нулей и единиц это самое простое просто, посчитать единицы.
Зачем его сортировать, если всю информацию можно поместить в два счётчика — количество нулей и количество единиц? Сделать это можно за время O(N).
Ну я сообщением выше, вроде, то же самое написал.
вы правильно выставили тег «hr» — пока вы работаете не на себя, вы все еще человеческий ресурс. Как и любой ресурс вы изнашиваетесь и морально устареваете. Именно с такой позиции вас оценивают люди с деньгами.
Перестраивайтесь. Не закапывайтесь как страус в интересный код. Не надо подтягивать свои слабые стороны, компенсируйте их членами команды. Лучше используйте свои сильные. Делайте сервисы которые генерируют прибыль. Извините за прямоту но возраст штука упрямая, дальше будет хуже.
Проблема тут в идиотизме собеседующих.

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

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


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

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

Основная проблема кризиса среднего возраста в том, что человек сталкивается с тем, что он не добился того, чего ожидал в 20-летнем возрасте. Эти умозаключения могут происходить на уровне подсознания, вызывая у человека волнение и депрессию в реальной жизни. Из кризиса всего два выхода — либо признать, что жизнь проё*на и дальше плыть по течению, либо кардинально всё поменять и начать с начала на основе полученного опыта.
А я не уловил депрессию в данном посте.
На мой взгляд автор счастливый человек.
В принципе, да, но опасаюсь:
1. Остаться без дохода в связи с отсутствием позиционирования на рынке;
2. Остаться с нулевой (дефолтной) пенсией на старости лет.
2. Отбросьте этот пункт, как думаете, заставит он вас активнее двигаться вперед и реализовывать свои идеи (надеюсь, которые потенциально окупятся и будут приносить доход)?
1. Решаемо
2. Так и будет, поглядите на поколение которое будет отдавать денег в пенсионный фонд. Их мало и они все тупее (значит дешевая низкоквафицированная рабочая сила). Пенсионному — просто неоткуда взять столько денег. Надежда только на себя.
Кхм, я попросил бы с такими резкими высказываниями насчёт «все тупее». Это Вы как так оценили целое поколение?
Да, я так назвал целое поколение. Если не согласны, прогуляйтесь до ближайшего знакомого преподавателя и спросите прав ли я или нет. Именно они лучше всего это ощутили. Умницы есть в любом поколении но в поколении которое сейчас выпускается из универов или выпустилось не так давно — их на порядки меньше. Не потому что они какие то лентяи или недоумки — просто когда нужно было заниматься их воспитанием их родители пытались удержаться на плаву. К слову это первый год, за последние лет 5-7 когда предыдущий поток студентов был слабее этих новеньких. Радует.
Уровень меняется из года в год так, что оценить средние способности совсем непросто. В этом году группа первокурсников слабая. В прошлом была заметно сильнее. В позапрошлом — средняя. И так далее. Пожалуй, можно сказать, что сильные стали сильнее, чем были раньше.
да почему не просто то)) оценки никто не отменял. У многих преподавателей со стажем в голове есть метрики, которые более менее уже устоялись, по которым они оценивают уровень знаний. Сейчас даже отличные преподаватели часто идут на сделку с самим собой, ибо поставить двойки всей группе — будут проблемы, а по факту то…
оценки никто не отменял

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

Ну… уровень 5-6 сильных студентов группы слегка повышается. Уровень остальных — остаётся прежним: как тратили по часу на реализацию очереди на двух стеках, так и продолжают.
Можно ещё ориентироваться по сложности задач какой-нибудь олимпиады, например, ACM. По-моему, лет за 10 почти не меняется. И распределение результатов остаётся прежним.
Не с того начали. Начните с конкурса при поступлении) Раньше был отбор, сейчас — формальность. Не с чего особо выбирать)
Кстати об этом: я дико извиняюсь, но мне для ответа на вопрос «как сделать очередь из двух стеков» понадобилось что-то около двадцати секунд (я не смотрел в интернетах и никогда раньше не сталкивался с такой задачей). Это же просто, разве нет?
И какая получается средняя сложность (в операциях push/pop) прохода одного элемента через эту очередь, если считать, что элементов обработано N, среднее число элементов в очереди K<N/2, а в начале и в конце очередь пуста?
Зависит от последовательности операций же. От ≈1 в лучшем случае до ≈К в худшем.
Хотя с ≈1 я погорячился. Но точные оценки — вопрос не на 20 секунд.
Если среднее число операций может быть K, значит, с реализацией что-то не то. Студентам я в этом случае предлагаю подумать ещё (а не хотят — соглашаться на 4). Но, конечно, экзамен это не собеседование…
>Если среднее число операций может быть K, значит, с реализацией что-то не то.
Т.е. при К=1 вы можете предложить решение с числом операций меньше 1? =)
Если серьёзно — действительно, до правильной реализации я не додумался. Любопытно.
хмм… а разве не 2 (push+pop) на элемент если они приходят+уходят по одному-два, и до 4(2push+2pop) на элемент, во всех остальных?
(т.е. 4K операций)
Нет, это 4*N. Т.е. в среднем на 1 элемент — 4 операции. От K не зависит. Конечно, можно немного пооптимизировать в окрестности пустой очереди (класть элемент сразу во второй стек, если стеки пусты, отдавать последний элемент сразу...)
Простите, но:
файлы редактировал упорно в FAR-е, и моя производительность не страдала от этого
Вчерашние выпускники отлично знают computer science и знают все эти загадочные слова, магические пассы и умеют внятно говорить.
Какая именно степень детализации имеется в виду? Мой рассказ может растянуться на целый день, а время у нас ограничено.
Кажется, нет, не общие. Или общие. Забыл уже, в общем.
mike1

Потому и не кусают.
Здравствуйте, уважаемый Дмитрий! Не ожидал, что мой скромный пост всколыхнёт такой трафик, что даже затронет такого гуру. :)
На самом деле, я для C++ использую MS Visual Studio, для Python — PyCharm. Но реально, по привычке иногда возвращаюсь к FAR-y- уж очень там удобно всё…
Что касается fork-ов — ну, конечно, я уж не до такой степени ignorant — знаю, что у них общее, что нет. Это так, для примера написано…
Так что же вы голову морочите? :) «Иногда возвращаться» и «использовать вместо IDE» — разные вещи. Вообще, у меня после этого вашего комментария сложилось впечатление, что вы занимаетесь самобичеванием.
Не, я не использую его вместо IDE, скорее вместе с IDE.
Самобичеванием — к сожалению, да, занимаюсь. Может быть, я представляю себя здесь хуже, чем я есть на самом деле, но это же полезно! Почему нет?
Потому что не выгодно для устройства на работу. Зачем кому-то более плохой или депрессивно настроенный сотрудник, тем более в отношении себя? Если есть те, кто свеж и уверен в себе, имея при этом значительно меньший опыт? В Штатах, насколько я читал, важно, чтобы сотрудник умел себя хвалить и преподнести, иначе кому это делать и как узнать, чем он хорош? Ну да, HR вместе со спецом могут потратить время на то, чтобы разобраться, а могут и не потратить.
В Штатах, насколько я читал, важно, чтобы сотрудник умел себя хвалить и преподнести, иначе кому это делать и как узнать, чем он хорош?

На протяжении большой части жизни нам вдалбливали в голову, что хвастаться плохо. Что хорошего специалиста работа сама найдет. И т. д., и т. п.
Да, так и есть.
А избавиться от этого очень сложно, если вообще возможно.
Возможно. Проверено на себе. Постепенно. Просто хвалите себя и других за всё, что можно. Делайте комплименты. В том числе себе. Вы делаете хорошо? Значит можно гордится своей работой и просто сказать — я доволен тем, что сделал и готов рассказать об этом.
А если не доволен? Вечно времени не хватает, чтобы «отполировать».
Вечный баланс — идеален или достаточно хорош? Если код достаточно хорошо выполняет свои задачи, значит доволен. Или вы тот человек, который не может ездить ни на чём, кроме бугатти/ламборгини/… потому что остальные машины не отполированы?
Машины я не делаю :) А за код стыдно.
В результате в Штатах все меньше специалистов и все больше гуру самопиара. Естественный отбор.
В здоровом теле здоровый дух, а навыки нужно не только иметь, но и уметь их показать, помоему вполне нормальная ситуация. В Штатах все в порядке с индустрией командной разработки, в отличии от той же России, в которой при наличии талантливых одиночек програмных продуктов не производят (если сравнить со Штатами).
Тамошняя индустрия успешна, потому что из России и Индии аутсорсит :)
Да, кстати, может, и единичку в нике как-то объясните рационально? При кажущейся неважности такие вещи ведь свидетельствуют об аккуратности и дотошности — наиважнейших качествах кандидата.
Я понимаю, что интерьвюеру за короткое время надо максимально понять человека. Но зачастую перегибают с такими психологическими нюансами (ну признайтесь, вы же не профессиональный психолог). В результате, на основе ответа «mike был занят», вы можете сделать не верные заключения типа «не амбициозен», «без фантазии». Это будет несколько надуманно, если человек просто не отнесся серьезно в момент регистрации к выбору ника и уж никак не мог подумать, что это может как-то повлиять на решение о его принятии или не принятии на работу.
mike был занят, к habrahabr-у присоединился поздно, но очень хотелось быть «майком». Не хочу быть непонятно кем и брать алиасы. Я не скрываюсь ни от кого. Индекс 1 вполне меня устраивал, никаких отрицательных эмоций не вызвал. «Не амбициозен», «без фантазии» — абсолютно верно! Но не думаю, что такой ник влияет на решение о принятии на работу.
Сентенцию об аккуратности и дотошности не очень понял, уважаемый Дмитрий. How does one depend on the other?
типа как петр1 или екатерина2 (на престол взошли поздно, все ники заняты). мне показалось, в ответе dk есть доля иронии ;)
Кто-то моет руки перед едой, а кто-то при посещении столовой, когда берет поднос, плюхает хлеб прямо на него, не подстелив даже салфетки. Или добавляет единичку к логину, когда видит, что такой уже занят. Элементарная гигиена, никакой иронии. Гигиена для программиста — это все, это образ мышления, она во всем прослеживается. Тот, кто не моет руки, пишет с ошибками и т.д., скорее всего налепит в коде костылей (особенно если прослеживается еще симптом «нет времени») и наговнокодит так, что последователям проще потом будет все с нуля переписать (хотя этот же человек в другой области, не связанной с кодингом, может очень неплохо креативить или помогать брейнштормить). Я в данном случае не имею никого конкретного в виду, просто излагаю свои убеждения.
Спасибо за разъяснение, Дмитрий, понял Ваш образ мысли.:) Даже не пришло такое в голову, если честно, когда регистрировался здесь :)
вот жеж. любопытно, какие умозаключения можно сделать об образе мышления программистов, которые пользуются логинами, которые, вообще говоря, они даже не сами придумали? ;)
Не любят изобретать велосипеды? :)
Немного не понял мысли. Прошу прощения, а на чем основаны эти Ваши убеждения?

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

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

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

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

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

1. Он не следит за своим интеллектуальным имиджем (как-то принято считать, что грамота — удел интеллектуалов)
2. Он привык не проверять то, что он делает. То есть делать «тяп-ляп». (Написал — перечитай, прежде чем читать будут другие)

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

Ответы по пунктам.

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

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

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

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

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

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

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

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

«Неважных вещей» в нашем деле не бывает. В этом я убедился многократно.

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

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

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

А если пятерку добавляет? :)
Значит, предыдущие четыре заняты. Всё просто.
Ой, а что же мне тогда делать с моими четырьмя единичками. Вот уж никогда не думала, что такое может быть важно. :)
Всё теперь. Не видать вам Гугла, Яндекса и Каспера…
Да, кстати, может, и единичку в нике как-то объясните рационально?

С точки зрения психологии цифры в нике говорят об утилитарности мышления. Для программиста это нормально.
Да какая утилитарность? От таких единичек и возникают в коде при рефакторинге переменные вида «count1» и т.д. Единичка в нике (при занятом безъединичном) ИМХО свидетельствует о том, что человек рано сдается и идет по самому простому пути, а не пытается найти что-то универсальное, т.е. = говнокод
x1-x2 vs x_begin-x_end
Не обязательно. Может быть данному человеку нравятся цифры, возможно, нравится именно цифра 1. Мало ли какие ассоциации возникли, когда он ник выбирал… например, царь Петр Первый, и т.д. Такие вещи хорошо прослеживаются при анализе тысяч ников и сопоставлении с психологическими портретами их обладателей. Психология с этим работает.
Диагнозы по никам и аватаркам — весьма странное занятие.
Если нужно ставить диагнозы, то еще и не по такому ставят… Мой знакомый психолог, кстати, кандидат наук, специализировался на рисунках, которые люди от нечего делать бессвязно рисуют когда им скучно, ну там на лекциях, собраниях и т.д.

Впрочем, в данном случае это не диагнозы, а что-то типа классификации.
Не кожу я с единичками! Не кожу! Ну как вам это доказать? Я могу вам на мыло прислать образцы. У меня английский — advanced, и я знаю, как верно называть переменные и классы. Я их называю правильнее, чем многие индусы…
UFO landed and left these words here
Всё так, и дальше будет хуже. Знаю по себе, так как начинал еще с перфокарт. Подозреваю, что наниматели смотрят на 40-50-60 летнего соискателя и думают: «уж я-то в его возрасте буду ого-го каким специалистом/ученым/предпринимателем, а это какой-то неудачник». Выход один — глубоко копать какую-либо тему и сделать в ней себе имя. Например, создать продукт, которым все будут пользоваться и который будет на слуху. Жаль, что я поздно спохватился.
Это опасно — можно угрохать полжизни и так и не «поймать волну».
Пол жизни уже угрохано. Надо что то делать.
п.с. 36 зим.
Я не хочу свою вторую половину так же бездарно «угрохать».
Я сделал несколько собственных интернет-проектов. Что-то приносит денег, что то нет, но тенденция положительная в смысле того что я скорее буду дальше делать проекты себе чем другим.
Как сказали выше:
Жаль, что я поздно спохватился
целиком и полностью поддерживаю. Осознание того что вещи которые вчера давались за пол дня, с возрастом могут занимать неделю — мало кто осознает. И что он неконкурентоспособен будет даже если удвоит свою производительность и скил. Все хотят заниматься своим любимым делом а не менять парадигму способа получения дохода. На реальность им начхать.
Осознание того что вещи которые вчера давались за пол дня, с возрастом могут занимать неделю — мало кто осознает.

Это какие например?
Дай ка я перепишу этот модуль…
Это из-за прогрессирующего перфекционизма
Это образно. Ну если уж сильно чтото интересно то например деятельность связанная с изучением чего то нового… Да, как пример «перепишу модуль» или дали исходнинки — сказали разобраться и дописать. Люди после 30-40 начинаю приобретать косность мышления. Это биология.
Это не биология. Это лень.
Я тоже так думал пока тридцатник не стукнул.
Мне почти сорок. И я всё больше убеждаюсь, что мозг — это мышца. Её нужно тренировать. Иначе — да, коснеет.
У всего в этом мире есть свой ресурс.
Мозг — гибкая структура. Он вытесняет неиспользуемые связи.
вернемся к этому разговору лет через 5-10)) Когда биология расставит все по своим местам))
Давайте вернёмся сейчас, чтобы не ждать. Мне будет 40 в следующем месяце. Пока что не замечаю на себе никаких упомянутых признаков. По отдельным знакомым замечаю даже в 30. Причём, это очень бросается в глаза — биология тут непричём, человек натурально сам решает что ему сколько-то стукнуло и ставит на себе крест в том или ином виде. Чисто психологический аспект. Есть знакомый, которому за 50 — он бодрее и активнее многих 30-летних, по крайней мере со стороны.
(да, естественно речь сейчас не идёт о реальных тяжелых заболеваниях — они могут возникнуть в любом возрасте)
Вы счас мне что показать то хотите?)) Что чем дальше тем моложе? Или ваши органы не подвергается износу? )) Я не врач, но меня терзают смутные сомнения))
Я хочу сказать что психологическое состояние как правило оказывает несопоставимо большее влияние, чем износ органов. Поэтому серьезно беспокоиться стоит о нём, а вовсе не о возрасте.
Любопытно. Ссылки на результаты медицинских исследований в студию пожалуйста.
Зачем? (тем более, что не представляю как подобные исследования могли бы быть проведены — объективные формальные критерии для психологического состояния людей будет весьма трудно сформулировать).
Я вижу вокруг себя прямые и обратные примеры в достаточном количестве, чтобы иметь уверенность в том, что сказал. А остальные пусть сами решают как им жить.
Ну у нас тут технический ресурс. Научные доказательства -приветствуются. А человек существо интересное — часто выдает желаемое за действительное. Потому и спрашиваю)
К сожалению, о психологическом состоянии в технических терминах говорить не получится — в первую очередь потому, что одни и те же слова и фразы разные люди пропускают через свой собственный опыт и своё текущее состояние. Придавая им подчас противоположные значения. Если бы это было не так, все бы становились счастливыми после пары визитов к психотерапевту :)
Подвергаются. Но обычно до 50 лет, если человек ведёт здоровый образ жизни, все органы, включая мозг, у него в порядке.
Ну это обсуждение идеального коня в идеальном сферическом вакууме.))
Как и с мышцами, тут нужен комплексный подход. Скажем, правильное питание.
К стати, в молодости и мышцы тоже растут быстрее.
Ну не знаю. После 30 замечаю за собой в таких ситуациях наоборот повышение эффективности. Перестаю рыть вглубь и вширь больше чем необходимо для поставленной задачи. Сказано «переписать модуль (незнакомой системы)» — разбираюсь в его входах и выходах, интерфейсах, контрактах и т. п., не обращая внимания на всю систему. Иногда сильно заставлять себя приходится так работать, не поддаваясь искушению «тут не модуль переписывать надо, а всю систему», но когда получается, то эффективность заметно повышается.
Я бы не сказала, что с возрастом стало сложнее воспринимать новый материал. Если человек занимается прокачкой скиллов постоянно, то и мозг у него натренирован.
Это путь вникуда. Рано или поздно вы начнете тупить. Вы будете это понимать но ничего сделать не сможете
Тогда уже можно выходить на пенсию и выращивать цветочки на приусадебном участке. :)
Не понимаю откуда оптимизм и радужные надежды по поводу пенсии)) Вы реально думаете что вас ждет пенсия на которую сможете прожить?:)
Ну живёт же как-то остальной народ. Хорошо, будем не цветочки выращивать, а картошку и прочие овощи. :)
Вот человек)) Пенсионный фонд лет через 10-15 предложит всем потуже затянуть пояски ибо денег у них нет. То что вы сейчас отдаете со «зряплаты» управляется крайне неэффективно. Чтото около 8% годовых в плюсе. Вычтите инфляцию и увидите что они работают вам в минус. Добавьте к этому шикарные здания пенсионных фондов в вашем городе (у нас в Уфе он просто шикарен, не говоря уже про обстановочку). Ну и на десерт демографическая яма с 90-х годов. Я по моим оптимистичным прикидкам 1 работяга в нашей стране будет кормить 5-6 пенсионеров. Можете продолжать игнорировать это а потом удивляться и злиться а можете пытаться адаптироваться ища источники доходов которые будут вас кормить с вашим минимальным участием.
У меня есть пара знакомых программистов, которым уже по 60. Пока продолжают работать. Один дотнетчик, а второй (точнее вторая) не знаю чем занимается.
Я ж не против. Везде есть замечательные и экстремальные исключения :) Я простой сметрный, особых иллюзий по поводу своих сверхспособностей не испытываю и что со мной будет в 60 — бэз понятия. Может буду как они, а может меня к этому времени кашкой с ложечки кормить будут )) (бррр...)
Я от природы оптимистка. Смотрю на своих 75-летних родителей, они такие живчики, что не каждый молодой угонится. Рассчитываю на тоже самое.
А вообще вы правы, лучше обзавестись пассивным доходом. На государство у меня тоже очень мало надежды.
Тут есть обратная сторона медали: возможность закопаться в своем продукте и выродиться в маразматика. Это легко и просто, когда человек пилит что-то свое, оно приносит деньги, успех. Зачем шевелиться? А как раз самое время чтобы не просто шевелиться, а бежать.
Соглашусь с комментарием о проблеме самоучки и «отсутствия фокуса». Конечно, измыслить писать длинные соображения на тему дурных способов собеседования, неспособных отобрать очевидно толковых людей, но, но…

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

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

Аппарат, кстати, включает в себя и язык: может, мы с коллегой не круты в программировании, но хотя бы говорим на общем языке, уже на чём спасибо. То есть мне с сегодняшним выпускником проще решить общую задачу, чем с Архимедом. Такие дела.
Выпадение из волны рынка — это такая плата за приятную свободнотворческую работу, где не приходится задумываться о будущем. Можно принять позицию «это весь мир сошёл с ума» и далее получать отказы, однако потребность заучивать «скучные» сегодняшние реалии для получения достойной зарплаты от этого не исчезнет.
Народ, объясните мне бестолковому, что такое «computer science»?
Википедия говорит, что это просто «Информатика».
Если употреблять «computer science», вместо «информатика», то становишься крутыми прогером и зарплата вырастает?
Объясните, пожалуйста.
Computer science включает в себя намного более широкий спектр отраслей знания, чем информатика в классическом советском понимании, как нас всех научили еще в школе (и современные представления об информатике из школы). У людей в сознании слово «информатика» чаще всего ассоциируется с одним курсом в школе или университете. Однако сами понимаете, в том же университете к информатике относят еще огромную кучу курсов и предметов.
Спасибо.
Но взять туже Википедию и русскоязычная версия "Компьютерные науки". Это ведь так просто, не правда ли?

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

У ТП — всякие салинги, принты и ещё куча слов… (ни в коем случае не приравниваю, а просто намекаю :D )

Завтра начнут переводить «Высшую математику» и «Русский язык»?
Уходить в сторону великодержавного шовинизма тоже не стоит, я думаю. В разговорной речи среди программистов и людей из it области говорить «компьютерные науки» просто не принято, звучит достаточно коряво, так как нет и не было никогда в русскоязычной среде такого понятия. Лучше уж информационными технологиями или информатикой обзывать (хотя опять же — нет адекватного понятийного соответствия). Вот и еще один пример — it никто же не называет информатикой или не говорят «итэ» (сокращение от «информационные технологии»).
Дело ведь не западничестве или поклонении перед английским языком (не все, кто пользуется англицизмами, пытаются выглядеть умнее, как ТП). Все упирается в удобство и понятность. Если я хочу коротко дать понять кому-то, что имею ввиду матанализ — я так и скажу «матанализ», зачем мне обзывать это дело calculus. В то же время если я захочу обозначит целый курс предметов от матана до дифуров, я скажу вышмат — и меня поймут. А в английском языке нет адекватного перевода для этого, соответственно переживать что станут переводить, не стоит. А для CS есть — и почему бы им не пользоваться, если говоришь с просвещенным человеком, чтобы более точно выражать свои мысли?
А для CS есть — и почему бы им не пользоваться, если говоришь с просвещенным человеком, чтобы более точно выражать свои мысли?

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

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

И википедию, по ссылке, которую оставлял выше
Начиная с 1980-х годов смысл кардинально меняется, как указывает Д. А. Поспелов: «ближе всего содержание этого понятия подходит к тому, что в США и большинстве других стран называется computer science, то есть компьютерные науки».

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

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

Ну спорить дальше не имеет смысла. Ответ я получил в полной мере. Спасибо за диалог.
«Компьютерные науки» гораздо менее удачный термин чем «computer science». Говоря о CS мы понимаем что в английском языке слово «computer» образовано от слова «computing», и связано с вычислениями, а не с компьютером как устройством.

Информатика тоже не подходит — «изучать информатику» обычно означает «учиться работать с компьютером».
Это в головах тех так означает, кто хотя бы на вики поленился зайти. Или учителя не слушал в школе на первом уроке информатики :)
Сейчас предмет «информатика» опошлен, особенно в школах и нетехнических вузах. Там что только не изучают — от десятипальцевого набора текста (когда учителю лень, он включает всему классу клавиатурный тренажёр — и погнали), до работы в Microsoft Word.

Поэтому «отличные знания информатики» может обозначать что угодно, чего не скажешь о Computer Science.
Попробуйте погуглить на тему «Theoretical Computer Science» и поймете разницу.
Спасибо!
Но гуглить я умею:
Википедия говорит, что это просто «Информатика»'
Проблема скорее всего в том что вы до сих пор не определились со своей специализаций. Веб-программист, прикладной, базы данных или системное программирование. Технологий слишком много и невозможно их все обьять, приходится выбирать какую-то специализацию и концентрироватся на ней. Из вашего описания видно что у вас по сути нету специализации — у вас все и сразу и демоны с ассемблером и джанго на питоне, а это невозможно. Т.е. возможно, но понятно что тут чуть-чуть и там чуть-чуть, а нужно именно глубокое понимание технологий.

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

Невозможно эффективно работать редактируя в файлы в FAR. Сказать такое на интервью — верный способ получить отказ, если собеседует технический специалист.
А что требуется для «эффективной работы» в среде разработки? (не сарказм) Отладчик, возможность рефакторинга, сборки из среды, интеграция с VCS? Интересно, что я могу потерять. Правда, иногда простой редактор удобнее среды — например, надо быстро переименовать сто файлов по сложному правилу, и создавать проект ради одноразового десятистрочного скрипта не хочется.

Правильно понимаю, что сказать «хожу по папкам в mc, редактирую всё в vim, отлаживаю в gdb» на интервью — тоже верный способ получить отказ?
Изредка применить какую-то возможность инструмента или пользоваться им постоянно это разное. Например, среда программирования обычно позволяет перейти к исходному коду функции по клику на её имени, парсит и показывает синтаксические ошибки и вагон ещё того, что вам не покажет редактор в FAR. Поэтому, сказав, что вы так же эффективно работает в FAR, как и в средах разработки, может показаться, что этот уровень эффективности как раз «такой же низкий», а не «такой же высокий». Т.е. если от использования для редактирования FAR эффективность не падает, то её нету вообще. А если вы пользуетесь FAR изредка для мелкой правки здесь и сейчас, то об этом можно даже не упоминать ибо основная работа идёт в специализированных средах.

От ваших постов веет максимализмом, простите.

У меня в жизни например был факт разработки одного продукта в easy editor`е (ee — редактор такой простенький под FreeBSD). Не то что бы я горжусь качеством кода внутри, давно это было, но продукт до сих пор работает и выполняет свои функции.

Я не думаю что автор хотел сказать что он принципиально пишет в FAR`е, как вы это поняли. Лично мне это говорит что человек способен разрабатывать даже в «пустом окружении». Не знаю как вам, а для меня это признак крутости. Старая школа.
Быть способным и постоянно так делать — разные вещи. Не только я так понял.
Не принципиально пишу в FAR-е, а вопрос юзабилити или, так сказать, микрооптимизаций от использования различных сред разработки меня не очень волнует. Это не значит, что я не экономлю деньги работодателя. У меня реально высокая скорость печати. Когда нужен дебаггер — я пользуюсь средами для удобства. Когда не нужен — могу писать и в FAR-е.
Т.е. если от использования для редактирования FAR эффективность не падает, то её нету вообще.

Вот… золото
В условиях стартапов приходилось заниматься всем и понемногу. Так как «спартапное» мышление в меня уже въелось за много лет, то сложно его поменять.
Да, глупо говорить про FAR, когда появилось так много разнообразных IDE для программирования на все вкусы… когда я начинал на Python в 2001 году, было только одно IDE под него, и оно было невероятно глючным… так что использовал FAR.
> Невозможно эффективно работать редактируя в файлы в FAR.
Не надо переносить свой ограниченный опыт на всех.
Невозможно эффективно работать редактируя в файлы в FAR. Сказать такое на интервью — верный способ получить отказ, если собеседует технический специалист.

Я не был бы столь однозначным. При всей своей любви к IDE, глядя на коллегу работающего в FAR, я просто не успеваю глазами отслеживать что он вообще делает.
Я так понимаю, вы говорите о скорости набора программного кода в FAR? Даже такая простая операция, как переименование метода в рамках проекта, гораздо сложне выполняется без движка для рефакторинга (т.е. анализа кода проекта). Я поверю, что можно быстро набирать текст в любом редакторе, будь то vim, FAR или Notepad, но для всего остального (профилирование, отладка, рефакторинг, прогон тестов, использование VCS) придется идти за дополнительными утилитами, что не всегда удобно. К примеру, я не понаслышке знаком с взаимодействием фронтенда и бэкенда отладчика (в моем случае Visual Studio и GDB) и могу сказать, что ту тонну информации, которую студия с поразительной частотой запрашивает в процессе отладки и показывает в разных окошках, просто нереально так же быстро получить напрямую у GDB, запустив его через консоль.
Нет, не о скорости набора кода, а именно о его поддержке. Да и при использовании VCS для простых задач (обновить копию, сделать коммит и т. п.) я сам предпочитаю консоль, а не IDE — как-то проще и нагляднее. Вот диффы анализировать уже в IDE иду.
Насчет VCS соглашусь, сам через консоль обычно большинство задач делаю.
Допустим, переименовали функцию, которая используется в 50 разных местах проекта (причем обо многих даже не подозреваем). IDE дает возможность по-тихому заменить ее название, что делать в таком случае в FAR-e?
Поскольку я использую IDE для этого, то могу только предположить, что нужно использовать sed.
regexp-ами заменить. Так же, как и в IDE. Но телодвижений, вероятно, придется сделать больше. А может быть и так же, не знаю.
Регулярные выражения вам не помогут в случае, если функций (или методов) с таким именем несколько.
если речь конкретно про python, то в общем случае вам ни что не поможет. getattr(self, 'mehod')() и приехали. а про частные спорить не интересно — sed или rope какая разница)
Между прочим (ИМХО) тот, кто хотя бы парочку раз пробовал инструмент поиска и замены в phpStorm или pyCharm, никогда, НИКОГДА больше не вернется к sed-у (по крайней мере, при работе с кодом).
Это, кстати, косвенно указывает, что такие языковые конструкции применять в крупных проектах — ни в коем случае нельзя. А если в данном языке без них не удается решить задачУ, значит надо выбирать другой язык.
perl -i -npe 's/old-name/new-name/g' *

от пальцев должно отскакивать.
Это заменит не только функции, но и переменные, куски слов внутри комментов и т.п., этот случай редкий, но как раз идеально подходит для агрумента не плодить своих велосипедов, а использовать нормальную IDE
Я так понимаю, вы говорите о скорости набора программного кода в FAR? Даже такая простая операция, как переименование метода в рамках проекта, гораздо сложне выполняется без движка для рефакторинга

Для C# в IDE от MS всё прекрасно, особенно с решарпером.
Но для C++ вплоть до 2010-й версии было настолько всё отвратительно, что FAR, обвешанный плагинами, легко по функционалу обходил IDE в плане навигации, выполнению операций с блоками и т.п.
Мне кажется, что «FAR, обвешанный плагинами» уже может сойти за IDE, а в исходном сообщении, как я (возможно ошибочно) понял, говорилось про более-менее «голый» FAR.
Не, не голый, конечно, а полностью укомплектованный «продвинутыми» плагинами.
Ну тогда мне кажется и вопрос IDE vs текстовый редактор + «умные плагины» не может стоять. Кстати говоря, Visual Studio по факту тоже состоит из кучи хотя и поставляемых в коробке, но плагинов (поддержка C# и C++, например).
Ну, почему же, очень даже возможно. У меня на прошлой работе практически все забугорные сеньйор-аксакалы (дяденьки 40-50 лет и немножко выше) писали кто в FAR, кто в vim, кто в TextPad. И в репозиторий коммитились из комманд лайна. Даже в киевском офисе был (и есть) человек, который пишет в FAR — а он, между тем, один из самых крутых программистов на проекте.
И если собеседующий «технический специалист» за подобный факт отказывает на интервью — есть повод усомниться в адекватности такого специалиста.
Если идеально знаешь код системы, то да — вполне неплохо можно и а FAR'е писать и ручками рефакторинг делать (т.к. все взаимосвязи в голове).
Но если взять пример, когда приходит новичок и начинает разбираться с кодом, дебажить, профилировать — то это нельзя эффективно делать фаром. Взять хотя бы проваливание в метод, класс, анализ зависимостей, переименование и пр.
Поэтому слова «у нас самый крутой спец все делает в фаре и не жужжит» говорят лишь о том, что этот спец отлично знает код. Посади его в новый проект и эффективность тут же упадет по сравнении с использованием IDE.
Кстати, да, возможно, что изучение чужого кода с помощью FAR куда менее эффективно, чем с помощью нормальной IDE.
Да. Но в FAR-e меня привлекает текстовая мода, четкий шрифт и ненапряжный синий фон. Реально лучше для глаз.
Если только это, то что мешает настроить нужный шрифт и фон в IDE?
Это не настраивается — это текстовая мода. Консоль. Чтобы IDE превратить в FAR, надо оттуда полностью снести все панели, мешающие обзору, раздвинуть панель редактора на весь экран, заменить в нем шрифт на растровый 8*12, фон на синий и сделать много других манипуляций. И получится FAR.
В vim-е тоже обожаю редактировать и знаю многие его командочки.
Возможно тут проблема такая: не хочу быть программистом «как все», боюсь потерять самобытность, не хочу «на конвейер».

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

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

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

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

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

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

Интересно, чтобы вы сказали, прочитав биографию Леонардо да Винчи?

Что он был гением.

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

Эникейщик умеет много чего, но ни в чём не достигает совершенства.

Да Винчи же во всём (ну или почти) преуспел, поэтому я и указал на нелогичность сравнения.
Преуспел? Ну и где же его вертолет?
Вы не бизнесмен чтоб решать нужен человек или нет. Мелкому бизнесу какраз таки не нужен спец который умеет суперски «закручивать гайки на 12 а на 10 — у него уже не хватает навыка» там нужны универсалы, которые могут либо решить проблему, либо иметь достаточно знаний чтоб озадачить кого-то и проконтролировать.
А я и не утверждал, что он не нужен совсем никому.
Но автор ведь не хочет куда попало, а ищет какие-то уникальные задачи, хочет «выполнить свое предназначение в жизни».
Большое спасибо автору за интересную статью!
Ну зачем вы так прибедняетесь (" не могу отнести себя к касте программистов"). Много людей бы позавидовали вашему опыту, уверен.

Мне меньше лет, чем Вам, я изучал много Computer Science в университете, и хорошо знаю, что на ИТ рынке компании отбирают программистов совершенно по-разному. Я сам бывал на собеседованиях, где кандидатов отсеивали по принципу «знает мало функций стандартной библиотеки Oracle», при этом они даже не проверяют, умеет ли они вообще писать и анализировать код, знает ли он механизмы работы со основными структурами данных и таблицами, итд Можно бы было зазубрить 40-50 функций и выглядеть супер-программистом. Поэтому, ваши истории — ничего удивительного в них нет. У тех, кто отбирает программистов та же самая проблема, которую вы обозначали — смещенный фокус. Они думают, что отбирают программистов, на самом деле рискуя тем, что код писаться будет тяжело. Они сами не понимают, что они делают.

PS. Про Computer Science в 90-ые: Я хорошо знаю, что существует некоторое количество университетов, где и в 90ых это было. Нельзя сказать, что нигде не было.
Не понял. В 90-е был один Университет в msk — МГУ. И там это было?
Разве один? Вроде начиная с 92-го пошла мода на переименования институтов в университеты да академии.
Два университета. Один московский государственный (МГУ), другой дружбы народов.
Computer Science — такого термина не было на нашем славном факультеле Вычислительной Матетатики и Кибернетики.
Впрочем, название факультета иногда так переводили, чтоб иностранцам понятнее было.
Программу обучения я могу попробовать восстановить в памяти.
1) Pascal (есть класс «Роботронов»)
2) Ассемблер (или трифтокод для второго потока) ЕС ЭВМ (есть терминальный класс ЕСxxxx — забыл номер). Подсчитать количество разных слов в введенном тексте.
3) Для мальчиков Ада на терминалках военной кафедры. Практики немного. В основном — теория
4) Фортран в терминальном классе HP. Что-то там с методами Рунге-Кутта 4-го порядка.
5) Что-то там на ямахах MSX было. То ли бейсик, то ли элементы машграфа. Был преподами освобожден за явным знанием.
6) Си на бумажке и мелом на доске. Кто имеет доступ к IBM-совместимым компам с гордостью рассказывает о подсветке синтаксиса в BC3.1. Круто! Ребята, использующий соурсер вылетают в коридор с широко открытыми глазами — крутой компилятор! он использует DI и SI для циклов!
7) Пролог и целый семестр как его там… забыл… формальной логики? нет. вылетело из памяти
8) На некоторых кафедрах лисп, рефал и еще несколько забавных языков
9) Лектор на лекции рассказывает про многообразие языков и даже приводит программу сложения матриц на APL
10) Базы данных. За семестр лектор успевает слово-в-слово прочитать 100-120 страниц из книжки. Рассказывает он интересно, но мы знаем, что это за книжка. На компах властвуют dBase и foxBase, самые крутые хвастаются тем, что видели Клиппер и какой-то Кларион.
10) На экзамене (1993г) в аудитории нет ни компьютера, ни даже проектора. Впрочем, и не надо — мы математики по профессии, а не программисты. Компьютерная программа — это не самоцель, а только инструмент для быстрого подсчета или решения математической задачи.

Мы все учились понемногу
Чему-нибудь и как-нибудь (с) Пушкин.
Немного уже подзабыл.
ЕС конечно же 1045, на военке был практикум по PL/1 (а Ада — только как теория, потому что язык вероятного противника)
У нас в МГИЭМ в 1990-1995 было примерно то же самое. Тоже юниксовый класс в каком-то подвале и несколько классов с IBM PC. И никакого, да, абсолютно никакого computer science. Если, конечно, С, Prolog и ассемблер EC не считать за computer science.
Удивлен. СПбГЭТУ (в 1992-м переименован из ЛЭТИ, ехал поступать в институт, поступил уже в университет)), факультет автоматики и вычислительной техники, кафедра «Информационно-измерительная техника» (учились в потоке с другим факультетом, электрофизическим, кажется), инженеры-системотехники (программисты учились в параллельной группе на кафедре вместе со всем факультетом). На первых трех курсах застал:
— FORTRAN на СМ1420 (клон PDP-11)
— C и ASM 8086 на ЕС-1840 (клон IBM PC)
— TurboPascal и TurboVision на каких-то брэндовых PC AT, ООП
— Ассемблер какого-то микроконтроллера, который гоняли на эмуляторах под MS-DOS
— MathCAD на ВМ
— плюс на различных курсах типа микроэлектроники давали доступ к компам для расчетов схем, разводки плат и т. п.
Какова алгоритмическая сложность наилучшего и наихудшего возможного алгоритма сортировки массива из N элементов? (Наихудшая сложность – O(N^2), потому что нужно сравнить каждый с каждым, наилучшая – O(N * ln(N)). Почему такая наилучшая? Не помню. Читал в книжке. В какой — не помню).

Вы упоминали Мейл и Яндекс. Так вот незнание таких базовых вещей разработчиком вполне может обернуться дополнительным железом, которое придется поставить под ваш код и которое стоит существенных денег. А разница может быть всего лишь в том, чтобы заюзать стандартный sort или написать в нужном месте нормальный sort, который работает за O(N) вместо O(NlogN).
если сортировка становится прямо проблемой прямо вот такого масштаба, это должно быть понятно из контекста задачи (тетрабайты данных, миллиарды сортировок), и вы будете иметь дело с множеством других умопомрачительных базовых вещей. во всех прочих случаях узкое место вероятнее всего будет в другом месте, а на реализацию нормального sort вы только время потеряете напрасно. а что дороже в Мейл или Яндекс — время или железо — еще вопрос)
Нет, сортировка там может быть совсем не проблемой в контексте задачи. Просто немного неаккуратно написать тут, чуть не оптимально в другом месте, чуть хуже ассимптотику для сортировки выбрать и всё: под нагрузкой (такой как у Яндекса или Мейлру) имеем в кластере для этого сервиса больше железа, чем могло быть, если бы писал человек, который в таких вопросах себя чувствует свободно. А железо — это деньги. А зачем платить больше, когда расходы можно предотвратить ещё на этапе собеседования? :-)
угу) пока ищется кандидат-всезнайка только что и остается — расходы считать. деньги это ведь не только железо. собеседования тоже денег стоят. специалистов нужно отвлекать. высокооплачиваемых, кстати, так ведь?.. а железо оно и в Африке железо. на то время, пока спец на испытательном сроке постигает премудрости оптимизации сортировок и прочие культурные особенности местного тех.процесса, можно вполне приличный vds найти за 10$ чтобы скинуть лишнюю нагрузку. ведь софт уже будет работать, да прибыль приносить :)
можно вполне приличный vds найти за 10$ чтобы скинуть лишнюю нагрузку

Действительно. Странные ребята, строят себе датацентры, а всего лишь десятью баксами можно было бы обойтись :-)

Складывается ощущение, что мы говорим о компаниях и задачах абсолютно разного масштаба.
Если вы выучите алгоритмы сортировки, и концепции ООП, то выйдете на новый уровень, на котором вас снова будут браковать новые гуру.
Ask any C++ guru and they will tell you: avoid mutation, avoid side effects, don’t use loops, avoid class hierarchies and inheritance.
Подозреваю, что у этого процесса нет конца. Всегда есть проект крупнее. Всегда есть человек опытнее…
Хитрость объясняющая бесконечность состоит в том, что уровни знаний не являются пирамидой, это запутанная сеть, и гуру одного человека может смотреть как на пример на другого, который по каким-то другим знаниям может этому первому человеку восприниматься далеко внизу.
С наступающим юбилеем! То что вам хочется что-то поменять, это типично и правильно. То что вы сами не знаете какую работу ищите, то это просто здорово, по мне скучны люди которые однозначно знают, кем будут через 10 лет. Когда хочется сделать что-то новое, это нельзя выразить словами, как доказывал Жак Деррида: «Единственное возможное изобретение, это изобретение невозможного, когда мы называем цель, мы уже ее производим». Искренне желаю вам успехов, хотя по приведенным ответам на вопросы, я бы вас вряд ли принял на работу, просто может задавал другие вопросы.
Спасибо, автор. Во многом узнал себя.
Меня вот что удивляет. Постоянно слышно, что «программисты востребованы» и что «работы хватит на всех». В тоже время человеку с таким опытом так сложно найти работу. Судя по всему, собеседования проходят те, кто прочитал какую-то книжку «Как пройти собеседование». А потом они появляются на форумах и задают такие вопросы, что непонятно как их взяли.
Большие корпорации типа Яндекса это всегда большая бюрократия, прежде чем попасть к специалисту, который сможет оценить реальные навыки придется пройти собсеседования, где HRы «сверяют ответы по бумажке». Для этого мало понимать и уметь, для этого надо тупо заучить что-то, как на экзамен, сидишь готовишься пару дней, потом сдаешь и все тут же вылетает из головы.
Мне вот такое не подходит, жалко времени своего, поэтому я в такие компании и не хожу, если уж очень приспичит, всегда можно написать какой-то конечный продукт, который нужен подобной корпорации и продать целиком вместе со своими услугами за много денег.
У Яндекса другая проблема: на собеседованиях они спрашивают вещи, которые никак не связанны с вакансией, на которую вы собеседуетесь.

Не так давно проходил у них собеседование на вакансию Android-разработчика. Про сам Android (или даже Java) ни слова не спросили, зато были вопросы логические и алгоритмические. Не совсем понимаю в таком случае, кого же они на самом деле ищут.
Программиста? Как программист может что-то писать, не владея логикой и без способности к построению алгоритмов?
Я подразумеваю, что если человек идёт собеседоваться на вакансию программиста, то эти вещи (алгоритмы и т.п.) он знать должен, и предполагаю, что на собеседовании должны задавать вопросы именно по тематике вакансии.
Проверить не помешает.
Гугль спрашивает в таком же ключе. Яндекс и Гугль оперируют терабайтами данных, сотнями тысяч запросов в секунду. В таких условиях знания эффективных алгоритмов гораздо важнее знаний конкретного языка и платформы.
мм, тетрабайты данных, сотни тысяч запросов в секунду, на андроид — это из какой области?
1. Вычислительные мощности ограничены (не у всех же 4-х ядерные монстры за штуку баксов). Сначала программисты говорят, зачем знать логику и алгоритмы, а потом пользователи удивляются, чего это у них приложение тормозит и страницы листаются по одной в секунду.
2. Очень многие современные приложения — всего лишь фронт-энд к серверу. Сервер будет явно не рад, получить десять запросов, там где можно обойтись одним. Для приложения у которого 1000 скачиваний может и ничего, но приложения яндекса скачиваются миллионами…
Помните про преждевременную оптимизацию? Тут зависит от того, сколько есть времени на проект. В реальной жизни обычно очень мало. И выгоднее сделать вторую версию приложения или выполнить рефакторинг уже работающего, найдя бутылочное горлышко уже на реально работающем проекте и исправить его.
Смотря о каком уровне оптимизации мы говорим. Об оптимизации уровня кода, или об оптимизации уровня дизайна. Второе может быть многократно дороже, если вообще возможно. Многие знают про «don't optimize prematurely», и с гордостью говрят об этом на собеседованиях, но обычно забывают про менее известное «don't pessimize prematurely».