2008-09-21 3 views
24

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

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

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

ответ

56

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

+2

так очень верно. :) – jop 2008-09-21 09:21:27

+10

Это предполагает, конечно, что ОНИ понимают достаточно, чтобы дать правильную оценку. – AviD 2008-09-21 10:32:53

+1

У меня была небольшая подсистема, которая была слишком сложной - все, кто видел код, восхваляли ее безостановочно, потому что никто из них не понимал ее ...: $ (Слишком справедливо для меня, сложность была результатом очень сложное требование, но все же ...) – AviD 2008-09-21 10:34:07

0

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

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

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

+0

Я не согласен; если это хорошо, тогда клиенты _will_ рано или поздно попросят больше функций или изменений. Just my 2p (+: – Everyone 2009-08-13 13:33:29

16

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

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

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

2

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

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

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

+0

Я согласен с вами, но я считаю, что опасно начинать оценку «wrt» со стороны разработчиков. Это правильный подход на конкурсной основе, но он несет угрозу уничтожения единства команды путем введения элиты и высокомерие. – 2008-09-21 08:27:28

+0

Что еще более важно, вы, возможно, были благословлены блестящими товарищами по команде, по сравнению с которыми вы мелкие, даже если вы просто не блестяще себя чувствуете - или, может быть, вы прокляты товарищами по гантели всем, кто прочитал 21 день на Java и считайте себя профессионалами. – AviD 2008-09-21 10:36:36

2

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

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

5

Там, кажется, три уровня квалификации с любым языком программирования:

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

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

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

+3

Я не согласен с вами. Знание многих языков облегчает обучение другим людям. – bobobobo 2009-06-29 15:39:15

0

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

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

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

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

7

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

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

0

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

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

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

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

0

Если вы хотите звуковые байты для ответа:

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

10

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

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

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

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

0

По-моему, это сложно (и в контексте интервью даже UNFAIR) вопрос! До сих пор я работал в трех разных компаниях. Каждый раз, когда я встречал очень мало отличных программистов (намного лучше меня), много хороших программистов и нескольких программистов, которые должны измениться к лучшему. Но их невозможно поместить в категории от 0 до 10!

0

Существует много «измерений добра», чтобы быть программистом; процесс оценки будет варьироваться в зависимости от того, какой вы заинтересованы в Вот несколько идей:

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

10 - Вы не знаете, что ничего не знаете.

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

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

7 - Вы очень хорошо, но вы знаете, что вам есть чему поучиться.

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

5 - Decent junior dev. Вы просто не в школе, и достаточно умны, чтобы понять, что вы действительно ничего не знаете о реальном программировании, но знаете, как взломать код.

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

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

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

0

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

0

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

Укажите, что вы остаетесь на отметке 100,0.

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

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

8

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

Если вы действительно хотите серьезно ответить на этот вопрос, я бы сказал, что Programmer Competency Matrix - отличная отправная точка для областей, которые должен включать такой рейтинг.

0

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

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

Великие кодеры, которые достойны 8, 9 или 10.

1

Там только одна метрика, по которому для измерения хорошего программиста: LOC/час. Любая другая метрика избыточна: p

3

Один полностью обоснованный подход к «как вы оцениваете себя от 1 до 10?» следует указать inherent problem with self-assessment. Чтобы обобщить результаты экспериментов в этой увлекательной бумаге:

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

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

0

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

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

0

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

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

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

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

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

И на PHP, я думаю, что я 6.5.

 Смежные вопросы

  • Нет связанных вопросов^_^