Наряду с другими качествами программисту нужны хорошие навыки отладки? Если у меня есть заявитель, который не смог найти ошибку в данной программе, но смог решить все головоломки и программы, должен ли я рассмотреть его для работы?
РЕДАКТИРОВАТЬ: - Головоломки нормальные красные, синие и красно-синие шары, как. Программы похожи на поиск непрерывных k нулей в массиве. Программа отладки - это то, что не выполняется из-за условия, которое должно быть> =, но вместо этого>. Все на бумаге.
Ответы:
Да очень важно
Что касается этого конкретного кандидата, возможно, он или она не был достаточно знаком с кодовой базой x, чтобы отладить его.
Хороший решатель проблем должен уметь отлаживать, так как все, что обычно требуется, это иметь очень логичный метод / подход.
источник
Если вы не можете отлаживать, вы почти не программист, не говоря уже о хорошем.
Отладка - это реальное практическое применение не только технических навыков, но и умений анализа и мыслительных процессов. В результате я бы оценил его как гораздо более полезный и актуальный тест, чем вопросы доски или интервью.
Если ваша работа не связана с тем, чтобы тратить весь день на ответы на теоретические вопросы, вам нужен кто-то, кто сможет применить все свои навыки.
Что вам действительно нужно сделать, так это спросить себя, был ли это честный тест на способность к отладке - могут ли они запустить код, поставить точки останова и т. Д. Так же, как в реальном мире? Что это за ошибка? Это что-то, что компилятор подхватит и пометит (в этом случае это довольно бессмысленный вопрос, поскольку им никогда не понадобится это определять)?
Если бы это было просто написано на бумаге, то это в основном просто подробный тест на чтение, и это еще более отвлеченный навык, чем обычный технический вопрос для собеседования, и я бы сказал, что он довольно бесполезен.
источник
Главное правило найма - в любом случае, скажи нет.
Если вам нужно реализовать много нового дешевого кода - вы можете получить этого парня, но лично я продолжу поиск.
источник
Если разработчик не может писать чистый код все время (абсолютно невозможно) и работать только над проектами «зеленого поля» (никогда не будет так), то да, навыки отладки абсолютно необходимы. Абсолютно. У меня был опыт работы с разработчиками, которые просто не любили отлаживать, поэтому они стали ленивыми и бросили код через стену в QA для тестирования. Но эти разработчики не длятся очень долго.
Разработка программного обеспечения - это умение и умение решать проблемы. Эти проблемы включают как проблемы бизнеса, так и проблемы с их (и другим) кодом. Кстати, многие проекты по обслуживанию направлены именно на исправление ошибок, поэтому отладка является абсолютно необходимым навыком.
источник
Я хотел бы иметь в виду, что существует множество веб-сайтов типа «вопрос для интервью», и вполне возможно изучить множество вопросов и головоломок. Одна вещь, которую вы не можете изучить, это отладка кода, который вы никогда не видели раньше. Либо вы написали достаточно кода, который знаете, как отлаживать, либо нет. Если это позиция начального уровня, я не исключаю кандидата, но если он утверждает, что имеет опыт работы с языком и не может отладить код на нем, это, безусловно, поднимает красный флаг.
источник
Основное различие, которое я видел между младшими и старшими программистами, заключается в их умении отлаживать. Умение отлаживать это то, что приходит только с практикой и опытом.
Например, подумайте о странной ошибке, когда Java-программа прекрасно работает на консоли в интерактивном режиме, но не работает, когда вы пытаетесь использовать канал Unix для того же ввода. Если вы сталкивались с этой проблемой раньше, вы можете проверить, что она
new Scanner(System.in)
вызывается только один раз; ошибка в том, что он потребляет буфер при передаче, но, очевидно, не в интерактивном режиме. Я ожидаю, что более старший программист обнаружит эту ошибку быстрее. Возможно, потому что они испытали это раньше, или потому что у них были другие проблемы с буферизацией в прошлом.Что касается решения головоломок и написания нового кода, хотя опыт важен, это то, что программист младшего уровня может выполнять так же хорошо, или даже лучше, чем более старший программист. То есть интеллект и умение могут иметь больший эффект, который не зависит от опыта.
Если у вас есть возможность инвестировать в младшего программиста, у которого могут быть новые идеи и который может помочь команде «справиться», и они, кажется, прекрасно пишут новый код, продолжайте и нанимайте их. Если вы ищете программиста старшего уровня, то отсутствие навыков отладки может быть основным предупреждающим признаком: у них может быть десятилетний опыт работы, который равносилен испытанию только первого года в десять раз.
Как примечание, есть способы стать лучше в отладке без 10-летнего опыта. Я рекомендую книгу Андреса Зеллера « Почему программы не работают: руководство по систематической отладке» , чтобы узнать научные принципы и лучше понять, как воспроизвести, найти и исправить ошибки.
источник
Это зависит от вашей среды. Если вы играете в содоку и другие головоломки весь день, возможно, это будет хорошим кандидатом.
Однако, если у вас иногда есть ошибки в вашем коде, или он не всегда работает точно так, как ожидалось, я предлагаю вам найти кого-то хорошего в устранении неполадок.
Наймите то, что вам нужно, а не какой-то идеал того, каким должен быть программист.
источник
Да.
Отладка кода является частью решения проблем. Я никогда не сталкивался с разработчиком, который написал идеальный код и ноль ошибок. Разработчик будет либо отлаживать свой код, либо чужой. Это необходимость.
Может быть, это зависит.
Отсутствие возможности отладки программы на собеседовании, вероятно, не должно нарушать договоренности, если заявитель смог завершить все другие головоломки и программы на собеседовании. Это действительно зависит от глубины и глубины интервью.
Сколько отладки влечет за собой эта позиция? Если много, то, возможно, следует уделить больше внимания тому, насколько хорошо кандидат может ответить на вопрос отладки. Но поскольку вы упомянули только один вопрос об отладке, похоже, что это не так.
источник
Да. Тем не менее, я бы попросил вас рассмотреть методологию в интервью (то есть викторину / тестовый стиль) менее чем идеально (хорошо, ошибочно), так как многие люди находят код на бумаге странным, незнакомым опытом.
Поскольку отладка - это процесс , а не ответ или результат (например, ошибка ), я бы предложил использовать интерактивный диалог или дискуссию в качестве лучшего средства оценки способностей отладки кандидатов. В то время как большинство людей используют неофициальную специальную систему отладки, хорошие кандидаты в целом будут иметь схожую схему: задавать вопросы, чтобы понять систему или предположения и требования, затем выявлять проблему (часто разделяй и властвуй) и методично сравнивать код в соответствии с требованиями и оценки ожидаемого ввода / вывода, а не волей-неволей, изменяющих кучу вещей сразу, пока он не заработает.
Я также выразить сомнения по поводу проблем головоломки во время интервью, в частности , в письменной форме, как если кандидат не имеет правильные предположения рамки ссылки (на прием), головоломка может быть неразрешимой для них. Т.е. многие головоломки на собеседованиях страдают от единственного правильного пути, в то время как жизнь сложна, и наиболее креативными являются те, кто использует неожиданно новые подходы к решению проблемы, которая может не сработать с конкретной заранее приготовленной головоломкой с ожидаемым решением. , Это все равно что ожидать, что все трубачи сыграют джаз. Это можно сделать, задав вопрос в виде неконфронтационной (давление может повлиять на креативность) интерактивной дискуссии. Опять же, для меня ответ вторичен, когда можно увидеть хороший мыслительный процесс. Скорее всего, вам придется попросить их подумать вслух, но в моем опыте это более продуктивно.
Я не читал или оценен Целлер Почему программы не , но я могу рекомендовать отладку по Agans как короткие, быстрой прочитал , что может помочь укрепить Времнный отладочный процесс в более структурированных, бетоне, и организованные усилия, которые могут помочь быть более эффективным при отладке. Также распечатайте копию и повесьте ее в своем кабинете или на обходном пути, на постере «Правила отладки ». Это отличное напоминание о тех плохих днях, когда кажется, что ничего не получается. У меня мало плохих дней, и я трачу меньше времени на активную отладку (читай: почесал голову в замешательстве ), пытаясь следовать им по духу, если не по письму.
источник
Я бы сказал, что отладка необходима, если программист не настолько хорош, что он никогда не делает ошибок. Я не уверен, что это невозможно, но я не могу представить это с помощью современных популярных языков и инструментов.
Мне не нравится, когда меня ставят на место в интервью. Если кандидат нервничает (а кто нет), он / она может нарисовать пустой текст, как программист, он может быть в состоянии регулярно решать такие проблемы. Затем, если бы это была хорошо известная проблема с собеседованием или тестом по компьютерному тесту, кандидат мог бы знать результат наизусть, но не иметь возможности продумать новую проблему. Также, если кандидат не знаком с языком, ему придется бороться. Многие ошибки трудны, потому что хороший программист знает, что он хотел напечатать, и его мозг быстро реагирует на чтение кода. Я не могу найти использование в стиле C =, где == должен был использоваться при проверке, потому что я знаю, каково было намерение, и мой мозг примет ярлык синтаксического анализа, читая его.
источник
Хорошая часть программирования решения проблем, и для решения проблемы вы должны знать основную проблему, а не только симптомы или несоответствия. Отладка - это искусство определения основной проблемы.
и многое другое.
источник
Я бы добавил немного больше к ситуации, указав на ошибку, и посмотрю, как реагирует человек. Они слишком драматичны в отношении типа «Да! Я идиот, это было так глупо ...», слишком апатичны в лагере «Да, какой бы чувак», или там активно слушали то, что было что-то не так с извинениями или замечаниями, которые означают, что они испортили то, что должны были решить? Просто о чем подумать в будущих ситуациях.
Своевременная отладка - отличный навык. Это немного отличается от того, чтобы дать кому-то проблему, когда она исправляется, когда исправляется. Иногда должны быть предприняты агрессивные меры по спасению системы, что следует признать, поскольку я полагаю, что большинству компаний не хотелось бы останавливать продажи на несколько недель, пока кто-то исправляет ошибку в бухгалтерском программном обеспечении, используемом компанией.
источник
Отладка является критическим навыком. На самом деле, я бы сказал больше, что устранение неполадок является критическим навыком. Кто-то должен знать, как определить проблему (в том числе, какую информацию пользователя запрашивать и какие журналы просматривать), как ее воспроизвести, какие источники данных он имеет в наличии для диагностики проблемы и как ее отладить, а затем как исправить одну вещь. не ломая что-то еще. Однако определить это во время собеседования сложно.
Я хотел бы дать ему реальную проблему для поиска и возможность использовать доступные инструменты, а затем спросить, какие шаги он предпринял, чтобы найти проблему или что еще он мог бы сделать, если он не смог найти проблему в отведенное время. Вы действительно ищете кого-то, кто решает проблему несколько систематически и у которого в наборе инструментов больше инструментов, чем только отладчик и Google (за исключением младшего уровня, когда он должен как минимум попробовать оба из них (кто-то, кто не может пробовать эти две вещи, вероятно, не компетентно, или, по крайней мере, я бы не стал рисковать с ним), но, вероятно, пока не имеет много продвинутых инструментов для устранения неполадок).
Я бы придавал больший вес навыкам устранения неполадок, чем ответам на головоломки (ну, я бы их вообще не спрашивал) или демоническим навыкам программирования. Я редко видел разработчика, который мог бы хорошо устранять неполадки, который также не может написать хороший код или сделать необходимые исправления. Я видел множество людей, которые могли бы объединить некоторый код, чтобы получить «Работающий» продукт, но не смогли решить проблему, если бы от этого зависела их жизнь. В основном потому, что они на самом деле не понимают, что они делают, или не понимают проблему, которую пытаются решить. Хорошие специалисты по трудоустройству знают, как определить реальную проблему, а не только симптом. Кроме того, они знают, какие вопросы задавать, чтобы определить проблему для новой разработки.
источник
В любой работе от 4 до 5 ключевых навыков, и программирование ничем не отличается. На профессиональном уровне вы должны быть хорошими во всех ключевых фундаментальных навыках. Если у вас 4 из 5, он все равно будет вас сдерживать.
Можете ли вы представить продавца, который может представлять, убеждать, формулировать, квалифицировать клиентов, но не может заключить сделку? Они там, и вы не хотите, чтобы они были в вашем отделе продаж.
Отладка, безусловно, является основным навыком, без которого программист не может обойтись.
источник
У меня есть такой стиль кодирования, который требует минимальной отладки. Когда я закончу с 3 строками кода, я запускаю его и проверяю, часто распечатывая пару переменных. В тех случаях, когда я получал нежелательный результат или поведение, я помещал много дампов в свой код - вместо отладки. Я использую настоящий отладчик очень редко. Странно, но это правда.
источник
Отладка - это фаза в разработке программного обеспечения, которая наступает после того, как на вашем программном обеспечении был проведен определенный тест и обнаружена ошибка. Это поиск и исправление ошибки в вашем программном обеспечении. Во многих случаях для поиска ошибки обычно требуется больше времени, чем для ее исправления.
Это процесс устранения ошибок (уязвимостей), присущих компьютерному приложению / системе. Если это не сделано, то хакеры могут воспользоваться ошибками и могут совершать различные вредоносные действия:
1) Они могут раскрыть уязвимость для общественности, что приведет к потере дохода, бизнеса и репутации для разработчиков и поставщиков.
2) Черви ищут уязвимые системы, которые они могут использовать, и, таким образом, копируют себя на эти серверы. например. В январе 2003 года червь Slammer воспользовался уязвимостью в MS SQL Server.
3) Где были упомянуты черви, как мы можем забыть вирусы. Вирусы также могут потерять свои разработчики, которые используют ошибки, присутствующие в программе, с основной целью неприличного разоблачения ...
4) И если программы не будут отлажены должным образом, потребители никогда не будут продолжать работать, если они не получат ценность своих денег. В этом случае вам даже не нужен хакер для выполнения грязной работы - вы также можете доверять доброй старой публике.
источник