Чому інтерв'юери не просять заявника прочитати якийсь код? [зачинено]


13

У мене було десяток інтерв'ю в житті (я збираюся закінчити навчання), і мені цікаво, чому мене лише один раз попросили прочитати і пояснити якийсь код. Приблизно 90% робочих місць переважно стосуються підтримки існуючих систем. Уміння IMO читати чужий код - важливий навик.

Чому інтерв'юери не перевіряють це? *

* Серед моїх друзів я єдиний, кого попросили переглянути якийсь код.


4
Мене попросили один раз прочитати якийсь код С на інтерв'ю, і я вказав на численні погані практики в коді: пам'ять, що тут виділяється, і звільняється там і т. Д. Це був їхній виробничий код. Я не отримав пропозиції.
Кевін Клайн

1
Голосування про закриття просто тому, що ми не можемо відповісти, чому інші люди щось робили чи не робили. Нам усім відомо, що він був усунутий з процесу найму, перш ніж вони перейшли до етапу читання вихідного коду. Якщо це було змінено на "якщо інтерв'ює вимагають ...", це може бути підходящим питанням.
GrandmasterB

1
@GrandmasterB Інтерв'юери також з’являються на цьому сайті. Якщо вони навмисно не шукають навичок читання коду, це може бути вагомою причиною для цього.
Ізката

Будь ласка, уникайте розширеного обговорення в коментарях. Якщо ви хочете детальніше обговорити суть цього питання, то, будь ласка, відкрийте запитання на Meta, де належить таке обговорення. Дякую.
maple_shaft

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

Відповіді:


10

Коли я задавав питання інтерв'ю, спершу я це робив, але повільно його припиняв. Заявники, які могли добре написати код в інтерв'ю, усі могли добре прочитати код в інтерв'ю. Заявники, які не могли прочитати код, також не могли його написати. Питання, пов'язані з читанням коду, насправді не розмежовували жодного заявника.


4

Коротка версія

Якщо робота полягає у підтримці програми, навички, які потрібно перевірити під час співбесіди:

  • Можливість зрозуміти велику базу коду з її документацією, одиничними тестами тощо.

  • Можливість рефакторингу коду та внесення змін, не порушуючи нічого.

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

Довга версія

Вас запитали код написання? Якщо так, як зазначив Знак у своїй відповіді , цього достатньо. Якщо ми трохи узагальнимо, людина, яка пише чіткий, зрозумілий вихідний код, зможе прочитати вихідний код, написаний іншими людьми.

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

Є ще кілька причин, щоб не просити читати код для роботи з технічного обслуговування:

1. Це важко зробити надійно

Конкретно, що б ти зробив, якби інтерв'ю? Зробіть так, щоб ваші кандидати читали код Який код? Якою мовою? Наскільки добре чи погано написано? З коментарями чи без них? З документацією чи без неї?

Що ще важливіше, що це говорить про кандидата? Наскільки добре він співвідноситься з самою кодовою базою даних?

Скажімо, у вас є застарілий додаток VB.NET для підтримки. Ви знаєте, що вихідний код здебільшого некрасивий і неперевірений, і кілька коментарів застаріли або вводяться в оману. Останні три місяці у вас був дуже вмілий розробник, який працював над рішенням; він відремонтував і підрозділ випробував найважливіші частини програми, додав коментарі, де була необхідність у коментарях, і, що найголовніше, написав детальну документацію про загальну архітектуру, критичні частини та підводні камені.

Зараз ви наймаєте розробника для підтримки цієї бази коду. Під час інтерв'ю ви б дали частину спадкового (некрасивого неперевіреного) коду чи той фрагмент коду, який було відновлено попереднім розробником?

Ви б дали документацію? Для того, щоб прочитати документацію, кандидату потрібно буде витратити хоча б кілька годин. Це робить неможливим це робити під час співбесіди.

2. Читання короткого фрагмента коду не те саме, що читання коду знайомого проекту

Пам'ятайте, робота полягає в підтримці проекту. Важко підтримувати велику базу коду перші дні чи тижні, коли ти не знайомий з проектом. Набагато простіше це зробити через кілька місяців, коли ви написали всю документацію і чітко бачите загальну базу коду.

Найголовніше, щоб перевірити, чи буде людина ефективною в ці місяці . Вам байдуже, чи людина не зможе взагалі нічого зрозуміти перші два дні.

Запросивши людину прочитати короткий фрагмент коду з нуля, ви не перевіряєте, як ця людина змогла б мати справу з знайомим, задокументованим кодовим числом тисяч LOC .

3. Підтримання вихідного коду - це не просто його читання

Підтримуючи базу коду, ви змінюєте її. Розробник, який просто читає код, не приносить нічого корисного для своєї компанії.

Корисні навички - це вміння перетворювати код рефактора , додавати одиничні тести , передбачати вплив зміни тощо. Ви не перевіряєте ці вміння, просячи людину прочитати код під час співбесіди.


2

Читання - це припущення, що базується на тому, що для письма існує здатність. Розглянемо поняття будь-якою мовою. Програмування - це лише мова для спілкування між людиною та машиною. Розгляньте спілкування людини з людиною. Якби ви найняли когось для перекладача японської мови, чи не варто було б міркувати, що якщо вони зможуть написати есе на 1000 слів на певну тему, вони зможуть прочитати його?

Як програмісти, наша основна діяльність - це створення коду та переклад абстрактних ідей у ​​конкретні реалізації. Це взагалі означає писати. Я погоджуюся, що читання так само критично, але у великій більшості випадків, коли здатність до письма є здатністю до читання, також є. Єдиний реальний випадок, коли я міг бачити помітну різницю, - це оточення, де є дуже багато складних випадків, які розвивалися з часом. Навіть враховуючи це, ви не очікуєте, що хтось зможе їх прочитати та зрозуміти, хоча б не вивчивши їх.

Крім того, читання коду та пояснення того, що ви думаєте, це насправді не виражає інтерв'юеру, як ви використовуєте свої навички критичного мислення. Це показує трохи аналізу, але більшість роботодавців хочуть зрозуміти, чи можете ви думати, не поміщаючи їх у коробку. Вони хочуть знати, чи зможете ви зрозуміти поняття без вигоди (або навіть костильності) існуючого коду, щоб сказати вам, що або як зробити щось.


Прочитайте, так, зрозумійте? ... не обов’язково.
jmoreno

1
@jmoreno: Можливо, ні, але враховуючи, наскільки дорогоцінний час, якщо ви попросите кандидата написати щось подібне, ви можете отримати набагато більше знань, ніж зможете спостерігати, як вони читають щось складне.
Джоел Етертон

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

1
@DanMonego: Я розумію вашу думку, і не в тому, що я зовсім не згоден, але питання стосується того, чому більшість інтерв'ю не включає читання, а не те, що цінність читання. Більшість інтерв'ю не передбачають більше, ніж тривіальних реалізацій, чи то читання, чи то правильного через характер часу.
Джоел Етертон

1

Раніше я вважав, що читання коду має бути дещо продемонстроване в інтерв'ю, але з часом я зрозумів, що це марна трата часу як для інтерв'юера, так і для співбесідника. Чому? Тому що навіть погані кодери можуть прочитати фрагмент коду.

Можливість судити про чиюсь здатність читати код стає актуальною лише тоді, коли ви дивитесь на щось складне або код, що охоплює багато класів і файлів. Вміти відстежувати код, щоб зрозуміти, що він робить, - бажана риса, але просто не вистачає часу, щоб хтось придумав хороший приклад (не виробничий код), а також немає часу в інтерв'ю, щоб задати таке питання .

Отже, погані кодери можуть читати код, але вони не вміють добре писати код. Попросити побачити приклади роботи кандидатів або попросити кандидата написати код на співбесіді - це набагато кращі показники їхньої майстерності. Якщо вони можуть виписати чистий короткий код, швидше за все, вони зможуть добре прочитати код.

Я прошу кожного кандидата, з яким я беруть інтерв'ю у варіанті проблеми FizzBuzz . Це швидко, просто і може вибирати погані кодери набагато швидше, ніж все, що я знайшов. Хороший програміст отримає це дуже швидко та легко, і це швидко дасть вам зрозуміти їхній стиль кодування та продуманий процес.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.