Как вы можете измерить свои навыки программиста?[закрыто]

StackOverflow https://stackoverflow.com/questions/110522

  •  02-07-2019
  •  | 
  •  

Вопрос

На предыдущем собеседовании мне задали вопрос:«От 0 до 10: как вы оцениваете себя как программиста?»

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

Итак, есть ли способ узнать, насколько хорошо вы выполняете свою работу?

Это было полезно?

Решение

Позвоните своему предыдущему работодателю и поговорите с тем, кто унаследовал весь ваш старый код.Они скажут вам, насколько вы хороший программист.;)

Другие советы

Это сложный вопрос.С чисто интроспективной точки зрения, я думаю, что один из лучших показателей «хорошего программизма» таков:Насколько вам нравится ваше ремесло?Я встречал множество разработчиков, некоторые из них очень хорошие, но никогда не знал любой который был разработчиком с 9 до 5 и добивался чего-то лучшего, чем посредственные результаты.

Конечно, взгляд внутрь себя — не лучший способ измерения компетентности.Я думаю, что ваши коллеги-программисты смогут дать вам достаточно убедительный ответ.Формулировка такого вопроса требует соблюдения социального этикета, но потенциал все еще существует.По моему опыту, те, с кем вы работаете, лучше всего поймут, насколько хорошо вы справляетесь, хотя бы потому, что именно им придется наводить порядок, если вы допустите ошибку.:-)

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

10 – Вы не знаете, что на самом деле ничего не знаете.

9. Вы просто хвастаетесь, и, вероятно, вы не так хороши, как вам кажется.Даже если вы действительно настолько хороши, вам не хватает политических навыков, чтобы понять, что говорит о вас цифра «9».Или вы достаточно известны/почитаемы в отрасли (т.вы однажды написали книгу, и у нее есть такое прозвище, как «Книга ______» или аббревиатура, которую большинство разработчиков сразу узнают), и вы не боитесь называть свое имя.

8. Ты чертовски хорош, и ты это знаешь, но ты достаточно умен, чтобы осознать клеймо выбора 9 или 10.Вам лучше иметь возможность это подтвердить.

7 – Ты очень хорош, но знаешь, что тебе нужно многому научиться.

6 – Вы компетентны, и вам нужно многому научиться, но вы не очень уверены в своих способностях.Ты уверен, что тебе не 7?

5 — Достойный младший разработчик.Вы только что закончили школу и достаточно умны, чтобы понимать, что на самом деле вы ничего не знаете о реальном программировании, но знаете, как взломать код.

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

3 или ниже. Если вы так мало уверены в своих способностях к программированию, почему вы подаете заявку на работу программистом?

Таким образом, «правильный» ответ, вероятно, 5-7, в зависимости от того, на какую работу вы проходите собеседование.У 8-ки достаточно опыта, чтобы не задавать этот вопрос.

Этот вопрос на собеседовании на самом деле не о том, насколько вы хороши как разработчик.Речь идет о том, насколько вы самосознательны и насколько хорошо вы оправдываете (перед интервьюером) любую цифру, которую вы выдвигаете.

Правильный способ ответить на этот вопрос во время собеседования (в отличие от философского ответа) — это выбрать свои самые сильные стороны и предоставить убедительные доказательства того, что вы входите в X% лучших разработчиков в этих конкретных областях.

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

Чего не следует делать, так это понимать вопрос буквально.Обычно это не то, чего хочет интервьюер.

Как человек, который берет интервью у потенциальных разработчиков, я бы сказал, что самым безопасным ответом на этот вопрос будет от 6 до 8.Я предполагаю, что средний ответ составляет около 7.Я думаю, что на самом деле важнее отсеять некомпетентных (0–5) или невежественных (9–10).Если вы решите ответить 9+, будьте готовы это доказать.

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

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

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

Кажется, существует три уровня владения любым языком программирования:

  1. Вы исправляете синтаксические ошибки сразу и без каких-либо тяжелых умственных усилий.
  2. Вы можете читать код других людей и понимать их намерения, не «переводя» код на естественный язык (или какой-либо другой язык программирования).
  3. Как только вы поймете проблему, вы сможете выразить ее естественным образом с помощью конструкций, предоставляемых языком (императив, объектно-ориентированный, функциональный...).

Я думаю, это проведет вас по шкале от 1 до 10.

Стоит отметить, что глубокое знание одного языка может помешать изучению другого.Потому что, как только вы начнете думать на языке «А», вам придется перепрограммировать свой мозг, чтобы выучить язык «Б».Очевидно, это применимо только при переходе к совершенно другому типу программирования, например.C->C++, C#->F#, Java->Scala и т. д.Поэтому я не думаю, что можно быть «идеальным программистом» абстрактно.

Эйлер-рейтинг вашего проекта может дать представление (не о ваших навыках, а о вашем стремлении не сдаваться до конца):

http://projecteuler.net/index.php?section=problems

Один совершенно действительный подход к «Как бы вы оценили себя с 1 до 10?» это указать врожденная проблема с самооценкой.Подведем итоги экспериментов в этой увлекательной статье:

  1. Почти все оценили себя как выше среднего.По крайней мере 50% этих людей были либо нечестны, либо заблуждались.
  2. Люди, которые на самом деле в верхних 25% часто опускаются до уровня 50–75% (т. е. они оценивают себя искусственно заниженно).
  3. Наиболее точно себя оценили люди, находящиеся в диапазоне 50-75%.

Вы можете резюмировать это следующим образом: 50% самооценок — ложь, а еще 25% — неправильные.Так что вы мог решите спросить у дрона, проводящего собеседование, тратят ли они ваше время или оценивают вас психологически…

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

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

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

Короткий ответ: вы сравниваете себя со своими сверстниками.То есть возьмите человека, который ничего не знает, и поставьте 0, возьмите лучшего программиста, которого вы лично знаете, и поставьте 10 — каким вы себя считаете по сравнению с этими двумя людьми?Близок к лучшему?Это будет 8.Середина?это будет 5.

Просто не отвечайте 0 или 10 и постарайтесь быть объективными.Суть вопроса не в вашей оценке как программиста, а в оценке ваших навыков самооценки.Ваша проницательность, так сказать.

Есть только один показатель, по которому можно оценить хорошего программиста:ЛОК/час.Все остальные показатели излишни :p

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

Если это так, похлопайте себя по спине.Вы делаете хорошую работу.

Помните, программное обеспечение не готово, пока оно не начинает приносить деньги.

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

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

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

Фактический ранг 0–10 гораздо менее важен.

Я считаю, что важно не переоценивать важность знания языка.

Лучшие навыки, которыми может обладать программист, связаны с решением проблем и проектированием.К тому времени, когда вы начнете фактически использовать выбранный вами язык, это будет почти просто набор текста.(признавая, что одна область, в которой вы, надеюсь, использовали свои навыки решения проблем и проектирования, — это компоновка вашего кода для решения проблем читаемости и обслуживания)

Таким образом, мерой программиста является то, насколько хорошо он может объединить разрозненный диапазон идей или проблем для решения конкретной проблемы.Увеличение навыков – это потенциально просто добавление областей знаний, которые можно использовать.

Конечно, ничто из этого не помогает в качестве показателя для определения вашего собственного навыка, но другие уже сказали, что это в любом случае не поддающийся измерению вопрос.:-)

Если вам нужен звуковой байт для ответа:

Когда я начал работать профессионально, мне было, наверное, 2. Сейчас я бы сказал, что мне было около 7, но каждый день я работаю над тем, чтобы достичь 10.

Слов в минуту.

На мой взгляд это тяжело (а в контексте интервью даже НЕСПРАВЕДЛИВЫЙ) вопрос!До сих пор я работал в трех разных компаниях.Везде я встречал очень мало отличных программистов (намного лучше меня), много хороших программистов и несколько программистов, которые должны измениться к лучшему.Но разделить их на категории от 0 до 10 невозможно!

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

  1. Технические навыки:Купите хороший справочник в стиле «поваренной книги» по языку, которым вы в основном пользуетесь;Для каждой задачи, обсуждаемой в книге, сначала напишите свое решение, а затем сравните его с предложенным в книге.
  2. Скорость разработки:Зарегистрируйтесь на Топкодер и решать свои накопившиеся проблемы или участвовать в соревнованиях в реальном времени.
  3. Участие в команде разработчиков:Купите обед для одного из ваших доверенных коллег и попросите его/ее честно оценить себя как члена команды (например,«В чем вы видите мои основные сильные и слабые стороны как члена нашей команды?Что бы вы посоветовали мне сделать, чтобы улучшить?») [Если в вашей команде нет никого, к кому вы могли бы обратиться для такого обсуждения, возможно, они что расскажет вам кое-что об этой проблеме.]
  4. Навыки коммуникации:Сядьте с коллегой, который нет разработчика и спросите его мнение о вашем текущем проекте.Обращать внимание;подумайте, насколько ее/его восприятие соответствует вашему собственному.
  5. Оценка:Каждое утро записывайте (только для твоих глаз) о том, чего вы ожидаете достичь в этот день и сколько времени это займет.В конце концов, сравните эту запись с тем, что произошло на самом деле, чтобы увидеть, насколько далеко вы были.Чтобы улучшиться в этой области, подумайте о причинах различий и о том, что, по вашему мнению, могло бы сделать ваши предположения более точными.

Вы всегда можете посоревноваться с коллегами-программистами и проверить, насколько хороши ваши мыслительные способности.Вы можете попробовать сайты, такие как www.topcoder.com или www.spoj.pl или wwww.codechef.com, они предоставляют вам ряды, и вы можете увидеть, как хорошо вы делаете.Однако они проверяют исключительно ваш алгоритмический мозг, а не то, как вы кодируете.Если бы мне задали этот вопрос, я бы сказал, что я постоянно учусь и верю в возможность совершать и исправлять ошибки, я не боюсь самокритики своего кода и не стесняюсь просить других указать на мою ошибку, вы может решить, в каком масштабе это будет находиться.

Определите масштаб 100%.

Определите, что вы остаетесь на отметке 100,0.

Определите позиции других разработчиков и известных личностей ИТ.

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

Мне задавали этот вопрос пару раз.Когда я только закончил университет, я сказал 7/8.Теперь, когда я работаю уже несколько лет, я говорю 4, хотя думаю, что теперь мне стало намного лучше.

Я не рассматриваю 0-10 как прямой график.Я рассматриваю это скорее как экспоненциальный график.Конечно, я по-прежнему говорю 4 из десяти, НО я считаю, что я лучше, чем 90% программистов.Я видел некоторые их работы, и это меня пугает.Я работал над банковским программным обеспечением SSL, и меня пугает то, что оно действительно работает.Итак, есть те 10% программистов, которые лучше меня, НАМНОГО лучше меня.Я не уверен, смогу ли я когда-нибудь их догнать.Дойти до 4, на мой взгляд, несложно.Гораздо труднее добраться до 5.С 5 до 6 невероятно страшно.

Отличные программисты, достойные 8, 9 или 10.

Опыт.Чем шире ваш опыт, тем вы лучше.Вы знаете только то, что вы испытали.

Размер и сложность системы, которую вы разработали (или успешно работали в ней, не повредив ее).

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

Я хотел бы сначала проанализировать вопрос.

Анализ зависит от нескольких вещей, таких как язык, структура, природа проблемы, (я PHP и WordPress Guy, так что ответ в этом контексте) 1.плагин Patch Work, 2.Здание с нуля, 3.использование API

Мой общий подход будет (в большинстве случаев) 1.Понять заданный (или уже созданный) область объема функциональности (по сравнению с текущей задачей задачи) 2.Рассматривая один из лучших способов решить (определенно есть более одного пути каждый раз ...) 3.Кодирование 4.Тестирование в сценариях в реальном времени (для настройки производительности) 5.На начальных этапах работы любого программиста все четыре шага рекурсивны до получения окончательного решения, но по мере роста опыта 1–2 шага становятся рекурсивными.

Способность понимать фундаментальную философию любого языка важна.Отдых – это отношение к решению проблем.

А в PHP, кажется, у меня 6,5.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top