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

на предыдущем интервью мне был задан вопрос: "от 0 до 10, как вы оцениваете себя как программиста?'

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

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

24 ответов


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


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

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

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


10-вы не знаете, что вы действительно ничего не знаете.

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

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

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

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

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

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

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

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


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

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

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

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


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

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


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

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


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

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

Я думаю, что это проходит по шкале от 1 -> 10

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


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

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


один совершенно правильный подход к "как бы вы оценили себя от 1-10?- это указать на врожденная проблема с самооценкой. Резюмируя результаты экспериментов в этой увлекательной статье:--3-->

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

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


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

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

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


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

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


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


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

Если это так, похлопайте себя по спине. Ты хорошо работаешь.

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


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

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

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

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


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

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

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

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


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

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


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


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


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

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

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


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

идентифицируйте себя как пребывание на отметке 100.0.

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

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


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

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

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


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

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


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

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

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

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

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

и в PHP я думаю, что я 6.5.