• Машинное обучение для поиска ошибок в коде: как я стажировался в JetBrains Research
    0
    Да, экспериментальная версия оптимистично будет к концу января. А ещё через некоторое время сделаем вариант и для JS.

    Текущий вариант из гита собирается через gradle :runIde, правда, для этого придётся выкачать либов прилично. :)
  • Путь разработчика (Часть 0х01)
    +2
    Закрыть сессию мешал предмет «Параллельное программирование», но третья пересдача смогла его закрыть. Осадок остался достаточный чтобы возненавидеть MPI, OpenMP и поскорее забыть CPP.

    Ясно-понятно, очередной студент-троечник, который не смог в сессию.

    А вообще, какой смысл этой статьи? Показать тяжелый жизненный путь программиста? Ну ок, а где тогда мораль, какие-то выводы, обобщения, рекомендации? Или это просто псевдопоэтическая попытка излить свою боль в бесконечность? Ну и у каждого тут такой путь есть свой собственный, у многих еще и подраматичнее будет.
  • Почему программировать легко
    0
    Это все прекрасно, вот только разговор был о том, нужна ли программистам математика. И C++ я привел не просто так, а потому что там математика используется чаще всего, и такие специалисты нужны. А если кому нравится php или дельфи, так кто же мешает.
  • Почему программировать легко
    +1
    Про приятно — эта фраза из статьи (поправил опечатку только):
    Правда о том, что программировать легко и приятно, что сложности надуманы, а плюсы работы — недооценены.

    Легко и приятно — не одно и то же, конечно же.
  • Почему программировать легко
    +1
    Уважаемый, так Вам шашечки или ехать? Человек написал статью про то, что программировать здорово и приятно. Я с этим согласен, но интересно в первую очередь решать сложные задачи. Вы знаете людей, которые фанатеют от втаптывания формочек (на любом языке)? Да, это тоже оплачивается, но статья про другое.
  • Почему программировать легко
    0
    У нас в свое время завкафедрой любил про все эти hh.ru рассказывать случай, когда представитель одного очень крупного рекрутингового агенства ему заявил, что его кафедра в СПбГУ говно, мол про нее никто у них в компании не знает. Он над ними просто поржал тогда, ведь всех выпускников сразу же с руками отрывали, им просто не приходилось в агентства обращаться. Топовых профессионалов не через hh.ru нанимают, их направленно хантят.
  • Почему программировать легко
    0
    Вы предлагаете все 114 страниц читать? Прочитал первую, ничего интересного не нашел.
  • Почему программировать легко
    0
    Там написано, как они его считали.
  • Почему программировать легко
    0
    Понятия не имею. Но вот эта штука говорит, что C++ — третий по популярности язык сейчас, и эта популярность растет. Да и многим программистам на C (второй по популярности) также не чужды объемные вычисления.
  • Почему программировать легко
    +2
    Вы когда-нибудь писали оптимизирующие трансляторы? Там как бы без продвинутой теории графов вообще никуда. Или писали бы Вы когда-то системы видеонаблюдения, например? Это в чистом виде проективная геометрия, алгебра, и еще куча всякой интересной математики. Работа со звуком — сплошные дифуры. Функциональное программирование — теория категорий. Дальше продолжать? Я бы не сказал, что подобной работой занимается очень мало людей. Знаешь C++ и не боишься математики — найдешь без проблем очень неплохую работу сейчас. Или для Вас программирование — это втаптывание формочек на php?

    Я не говорю, что всем или даже большинству программистов сегодня нужно знать математику, чтобы выполнять свою работу. Но это общая культура, и, по моим наблюдениям, те, кто ее не знают или знают плохо, далеко не пойдут, им просто базы не хватит. Как можно считать себя технарем и не понимать математику хотя бы на университетском уровне?
  • Почему программировать легко
    0
    Переписать его можно, да, только делать это придется разве что в свободное время — за это никто не заплатит.
  • Почему программировать легко
    0
    Ладно, я не вижу смысла спорить. Циники оттуда и берутся, что им потом приходится разгребать воздушные замки, которые строят 10 джунов с горящими глазами.
  • Почему программировать легко
    +3
    Знавал я такого «программиста», который считал, что не особо нужно знать математику. А потом реализовывал направо и налево алгоритмы экспоненциальной сложности с комментариями в духе «компьютеры быстрые, посчитают, не переломятся».
  • Почему программировать легко
    0
    Если я не уложусь в сроки, это проблема менеджера, пусть бегает, отодвигает.

    Ну вот согласовал с Вами менеджер сроки, а вы не укладываетесь, и говорите, что он должен бегать. Где тут ответственность?
  • Почему программировать легко
    0
    Ну тут «Вася» скорее проявил предпринимательские, чем программистские навыки, но все же. Я бы сказал, что мастерство программиста как раз в том, чтобы находясь в положении «Васи», все равно пытаться делать все как можно более качественно и продуманно. Скилл он как раз в том, чтобы в условии ограниченных ресурсов принимать правильные на перспективе решения. Ведь когда есть много времени на подумать, каждый сможет.
  • Почему программировать легко
    +1
    Когда читаю про качественный и железобетонный код, всегда почему-то вспоминается bash.im/quote/420672. Уж очень жизненно.
  • Почему программировать легко
    0
    Если я не уложусь в сроки, это проблема менеджера, пусть бегает, отодвигает.

    дедлайны абсолютно всегда высасываются из пальца и тем же пальцем двигаются

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

    И многое-многое другое. Программировать действительно приятно и здорово, но убеждать новичков в том, что это легко и просто — это заложить в них основы для огромного и неизбежного разочарования (либо в работе, либо в себе). Легко и просто программировать только в сферическом мире в вакууме. Если автор живет в таких тепличных условиях, остается лишь порадоваться за него, но начинающим программистам представление о жизни портить не стоит.
  • Хороший дизайн, плохой дизайн…
    0
    Как научить его думать правильно?

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

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

    Мое убеждение таково, что если человек не научился думать и не имеет должного опыта, то никакие гайдлайны такого рода его не спасут. Простой пример — пишет неопытный программист GUI приложение со сложной логикой, например, тот же редактор Word. Нафигачил он всю логику в класс MainWindow, прочитал этот пост и понял, что у него проблема, класс перегружен функциональностью. И что дальше ему делать, как понять, как этот класс делить? Ну ок, прочитал он книгу и вынес всю бизнес-логику из класса, осталась только работа с GUI, но и она очень сложная, код запутанный, как его делить дальше? Понятно, что пост ни в каком роде не претендует на полноту, но, на мой взгляд, новичкам лучше давать Если вы нашли логическое и непротиворечивое доказательство, которое не конфликтует с ранее записанными фактами, значит ваш проект имеет хороший дизайн. и больше конкретики.
  • О собеседованиях (от Эрика Липперта)
    0
    Сможете посчитать дискриминант или вспомнить теорему косинусов?

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

    Можете привести пример, как это ему пригодится не в 1% решаемых задач, а хотя в 10%?

    А что, в джаваскрипте сборку мусора уже отменили? Я временами встречаю страницы, на которых была такая дикая работа с памятью, что плакать хочется. Оптимизация производительности в таком случае — это уже исправление последствий неграмотности разработчика.
  • О собеседованиях (от Эрика Липперта)
    +2
    По моему опыту это тоже так. :) Причем чем экзотичнее предмет, тем больше преподаватель считает его самым основным.

    А Вы вот какие знания считаете фундаментальными для грамотного разработчика ПО? Вот абстрактно, без специализаций, этакая азбука для программиста.
  • О собеседованиях (от Эрика Липперта)
    0
    Ну вот если как у меня руки дойдут свою программу четырехсеместрового курса выложить сюда, посмотрите, может покритикуете, там весь третий семестр про архитектуру. Правда, практика показывает, что толку от одной теории мало, так что у нас потом все это закрепляется в студпроектах и летних школах по программированию.
  • О собеседованиях (от Эрика Липперта)
    0
    Хочу сказать, что знания зависит от области, в которой человек работает, и какие задачи он обычно выполняет

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

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

    Что забудет, как бинарное дерево поиска работает или что такое виртуальная память? Опять же, я говорю о базовых вещах, которые нельзя «развидеть», если понял принцип :)

    С последним абзацем я согласен, только редко уж больно встречаются такие самородки, которые без образования это все могут.
  • О собеседованиях (от Эрика Липперта)
    0
    Я бы тоже не смог :)
  • О собеседованиях (от Эрика Липперта)
    +1
    Согласен, работа компилятора, управление памятью, основы БД, архитектура ПО, основы ООП, ФП, параллельного, сетевого программирования и многое другое — это все фундамент, который надо знать. Зоопарк технологий я бы в него включать не стал: грамотный человек, понимающий общий принцип (у которого сформирован вот этот фундамент), вполне в состоянии разобраться с новым языком или технологией за вполне разумное время.

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

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

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

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

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

    Конечно не стану. Предел каждый для себя сам определяет. Если интересно ковыряться в алгоритмах, например, кто же запретит. Если же задача в «расширении кругозора», то остановиться стоит, на мой взгляд, когда качество начинает требовать количества. Хороший пример — спортивное программирование: чтобы добраться до уровня середнячка, надо очень многое узнать и попробовать, а вот чтобы выбраться в топ, надо очень много тренироваться на однотипных задачах, набивая руку. Понятно, что последнее не имеет особого смысла для тех, кто просто хочет подтянуться в алгоритмах, скажем.
  • О собеседованиях (от Эрика Липперта)
    +3
    А где я говорил про Microsoft? Я сказал, что в России есть много компаний, в том числе и филиалов западных, где такие вопросы на собеседованиях не задают.
  • О собеседованиях (от Эрика Липперта)
    +2
    Ну не скажите. Одно дело, когда человека спрашивают о проекте, в котором он работал (конкретные факты, которыми он может оперировать), а другое дело — спрашивают его о том, кем он видит себя через пять лет (невнятная перспектива, про которую он, может, и не думал никогда). И эти товарищи не будут на лесопилке или разноске газет работать. К счастью для них, у нас в России много компаний (и западных в том числе), которые учитывают большой процент интровертов в индустрии и не особо стремятся задавать такие вопросы, особенно в течение часа.
  • О собеседованиях (от Эрика Липперта)
    +1
    Работает и ладно, что там внутри интересует немногих.

    Надеюсь, это все же была шутка.

    Отвечают на все вопросы многие. К счастью, вершина айсберга никуда не делась, и она не такая уж и маленькая. Многие осознают, зачем пришли в университет, и им интересно учиться.
  • О собеседованиях (от Эрика Липперта)
    +1
    Да, у меня половина знакомых на этих вопросах тихо расплачется и медленно поползет к выходу :)
  • О собеседованиях (от Эрика Липперта)
    +1
    Невидимые подробности — это Вы о чем? Я не очень понял вопроса, если честно.
  • О собеседованиях (от Эрика Липперта)
    0
    «гораздо более важна, чем знание пары конкретных алгоритмов». Куда-то конец фразы пропал.
  • Западные бестселлеры на нашем книжном рынке. Карьера менеджера IT-проекта
    0
    перевод которого почему-то прошел не замеченным

    «Незамеченным» должно слитно писаться тут.

    Кстати, а правда у кого-то в России должности официально называются «проект-менеджер» или «продукт-менеджер»? Обычно вроде используют «менеджер проекта(-ов)» и «менеджер по продукту».
  • О собеседованиях (от Эрика Липперта)
    +7
    опытных промышленных программистов, которые не могли сказать мне, что такое бинарное дерево

    Простите, а чем их опыт измеряется тогда, годами чтоли?

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

    Но про основы автор, безусловно, прав. Меня вот иногда приглашают принимать экзамен по архитектуре компьютеров у студентов второкурсников, мне половина не отвечает, как отрицательные целые числа в памяти представляются в x86. А что такое виртуальная память, отвечает при лучшем раскладе только каждый четвертый. И это топовый российский вуз, ага.
  • Интернет вещей – миф или реальность?
    0
    У многих просмотр фильмов в 3D вызывает неприятные ощущения типа головокружения. Многие также находят 3D очки крайне неудобными, и поэтому не смотрят фильмы в таком формате. Например, попробуйте просидеть 2.5 часа в 3D очках, одетых поверх обычных очков.
  • Почему программировать так тяжело?
    0
    Так мы вон выше разобрались, что у человека более-менее отлаженные проекты и хорошо сработанная команда. Это позволяет со временем добиться очень точных оценок даже при таком упрощенном подходе.
  • Интернет вещей – миф или реальность?
    0
    Постойте, это же совсем другое. Наука призвана искать и объяснять законы природы, а тут Вы говорите о новом подходе, который позволяет организовать уже существующие вещи неким интересным образом, получая что-то, чего раньше не было. В общем, ладно, я Вашу позицию понял.
  • Интернет вещей – миф или реальность?
    0
    Ну как же, privacy и все такое. Вот тут, например, почитайте.
  • Интернет вещей – миф или реальность?
    0
    А пример можно?