Как и большинство людей, я считаю себя немного выше среднего в своей области. Мне хорошо платят, я получил продвижение по службе, и у меня никогда не было реальных проблем с получением хороших рекомендаций или с работой.
Но я был достаточно вокруг, чтобы заметить, что многие из худших программистов, с которыми я работал, думали, что они одни из лучших. Плохие программисты, которые окружены другими плохими программистами, кажутся самыми обманутыми.
Я конечно не идеален. Я делаю ошибки. Я скучаю по срокам. Но я думаю, что я делаю примерно столько же ходов, чем «другие хорошие программисты». Проблема в том, что я определяю «других хороших программистов» как «людей, похожих на меня».
Интересно, может ли программист сделать какую-то разумную самооценку? Откуда мы знаем, хороши мы или плохи на работе?
Или, если такие термины, как хорошее и плохое , слишком плохо определены, как программисты могут честно определить свои сильные и слабые стороны, чтобы они могли воспользоваться преимуществами первого и работать над улучшением последнего?
источник
Ответы:
Хороший программист понимает, что им нужно продолжать учиться и расти. Они стараются изо всех сил стараться изо всех сил, признаются в неудачах и учатся у них.
Они необычайно общительны. Мало того, что они могут объяснить сложные технические термины непрофессионалу, но они стараются изо всех сил выступать в качестве защитника дьявола к своей собственной идее, чтобы убедиться, что они дают лучшие варианты для своего клиента.
Лучшие программисты знают и признают, что есть несколько способов сделать что-то, что не каждая проблема - это гвоздь, и потому что всегда есть лучший способ сделать что-то, чем они планировали, они постоянно стремятся изучить новые методы , технологии и понимание.
Хороший программист любит программировать, и делал бы это в свободное время, даже если он уже тратит на программирование более 80 часов в неделю.
Хороший программист знает, что он / она не великий программист. Поистине великих программистов не существует, есть только те, кто утверждает, что они великие, и те, кто знает, что они не великие.
источник
Как красноречиво указывает Пол Грэм в этом фильме , вы не можете. Только ваши коллеги могут сказать вам.
источник
Я всегда обнаруживал, что легче всего судить о твоей работе, выполняя две вещи.
Проблема, конечно, в том, чтобы найти хороших программистов, и тогда быть хорошим программистом - это не только программирование. Вы должны уметь хорошо работать в группах, но также и самостоятельно.
Теперь, чтобы пойти не по теме, я процитирую Роберта А. Хайнлайна и его взгляд на эту тему:
источник
Это матрица компетенций программиста только для вас: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm
источник
У Джеффа есть одно из моих любимых сообщений в блоге на эту тему ... Почему я лучший программист в мире
«... это не наша работа - быть лучше, чем кто-либо другой; нам просто нужно быть лучше, чем год назад».
источник
Я думаю, что тот факт, что вы задаете вопрос, доказывает, что вы не плохой программист, поэтому, по моему мнению, вы на полпути. :)
По моему опыту, плохие программисты всегда думают, что они замечательные программисты.
источник
Утверждение @ Ника «Плохие программисты всегда думают, что они великие программисты ...» объясняется эффектом Даннинга Крюгера , который обобщает то, что люди, которые немного знают предмет, часто переоценивают, насколько они на самом деле знают.
Будучи немного шутливым ... чем меньше ты думаешь, что знаешь, тем больше ты, вероятно, делаешь ... если, конечно, ты не действительно идиот, знающий себя.
Отвечая на первоначальный вопрос, хотя я склонен думать, что большее влияние (а не контроль), как правило, является хорошим показателем. Если вы видите, что другие следуют вашему примеру или приобретают практику, то вы на правильном пути.
источник
Ответ, получивший наибольшее количество голосов, действительно огорчает. В основном это говорит о том, что у вас нет жизни вне программирования. Как насчет семьи? Сообщество? Хобби? В какой мы профессии, где вы должны быть озабочены до такой степени одержимости, чтобы считаться «хорошим»? Я действительно думаю, что мы должны получить некоторую перспективу здесь.
источник
Вы можете попробовать принять участие в соревнованиях по алгоритму TopCoder .
источник
Одна только эта реализация делает вас лучшим программистом, чем большинство плохих программистов.
Многие из худших программистов склонны думать, что они уже знают все, что нужно знать, и не знают об их ограничениях. В результате они никогда не улучшают свои навыки.
источник
Если вы посмотрите на свой код, скажем, год назад, и подумаете, черт возьми, я мог бы сделать это намного лучше, вы, вероятно, хороши :).
источник
Вот несколько реальных примеров плохого программирования. Конечно, подобный код был повсеместно скопирован / вставлен в 100 местах. Парня уволили, но я слышал, что он снова получил хорошую работу. Наслаждаться:
а)
б)
с)
г)
Если вы делаете такой код, прекратите программирование. Если вы не видите ничего странного в этом коде, прекратите программирование. В противном случае вы не плохие, так что вы даже можете быть хорошими :)
РЕДАКТИРОВАТЬ: Чтобы ответить на комментарии: я получил работу до окончания, и этот парень уже имел несколько лет опыта программирования. Его уволили через несколько месяцев после того, как я устроился на работу, поэтому я не мог никого обучать. Приведенные выше примеры были только с моей головы - каждый кусочек кода, к которому он прикоснулся, был ошибочен различными и оригинальными способами. После того, как он ушел из компании, большинство вещей начали выползать, потому что только тогда другие люди увидели некоторые части кода. Как правило, он хороший парень, с ним приятно общаться, но он НИКОГДА не будет хорошим программистом, как я никогда не буду хорошим художником, писателем или кем-то еще.
Чтобы сопоставить это с другим примером, парень, пришедший ему на смену, в то время тоже был старшекурсником. Он учился в колледже, более известном менеджментом, чем программированием. Он не слишком отвратителен в том смысле, что он что-то программировал для развлечения или сидел дома и читал о Java или программировании, но у него все в порядке. Он быстро адаптировался и начал создавать полезный и поддерживаемый код. Некоторые люди могут сделать это, другие не могут - просто спросите dailywtf.
источник
instance
поле никогда не присваиваетсяType
экземпляру и поэтому всегда остаетсяnull
=)Есть несколько вещей, которые вы можете попробовать, чтобы лучше оценить, как вы складываетесь.
(Я поставил этот последний пункт, потому что в моей последней компании один программист дважды в три года получал звание «Разработчик года». После его ухода мы нашли не менее 20 фрагментов кода, достойных TDWTF. Он разрабатывал код быстро , но не обязательно хорошо Менеджмент просто не знал разницу.)
источник
Разрешите другим разработчикам, с которыми вы уважаете, работать или просматривать ваш код.
Пусть люди на самом деле используют то, что вам нравится, и видят, что они думают.
- Кевин Фэйрчайлд
источник
Вы можете понять это?
:-)
источник
Одна лишь мысль о том, что вам нужно самооценка, делает вас на голову выше остальных.
Один из способов, которым я всегда сужу себя, - это слушать, что мои коллеги говорят обо мне. Хитрость в том, чтобы найти нужных людей.
источник
Это всегда субъективно, кто хороший программист. Я согласен с Ником, что просто задать вопрос - это шаг в правильном направлении. Я думаю, что постоянное желание учиться и улучшать то, что делает хорошего программиста.
источник
Для меня самые лучшие программисты никогда не ищут работу. У них есть постоянные предложения на новые должности, основанные только на их репутации. Так что у хорошего программиста могут быть предложения от предыдущих работодателей вернуться, если они того пожелают. Или у хорошего программиста были бы вопросы от бывших коллег о приходе на работу к ним в новую компанию.
Что касается сильных и слабых сторон, вы, вероятно, уже знаете их. Если нет, спросите более старшего человека в вашей команде. Он даже не должен быть разработчиком. Хороший менеджер проекта знает сильные и слабые стороны программистов. Кроме того, черты, которые определяют хорошего программиста, не ограничиваются только кодом. Понимание бизнеса, коммуникативные навыки, суждения и т. Д. Выполняются вне вашей среды IDE.
источник
Я думаю, это все равно, что удивляться, как узнать, хороший ли ты человек.
Я думаю, к сожалению, ответ таков: только другие заслуживающие доверия люди могут сказать вам это. Я не думаю, что это то, что вы можете точно определить для себя (по крайней мере, это очень сложно - но я думаю, что это может быть невозможно).
источник
я бы просто сказал: если вы увлечены (я имею в виду ДЕЙСТВИТЕЛЬНО увлечены) тем, что вы делаете, если вы гибки (другой язык, новые технологии, полный римейк старого проекта - давайте сделаем это!), если вы продолжите учиться и совершенствуешь свои навыки и никогда, никогда не думай, что ты достаточно хорош, чтобы остановиться - тогда ты хороший программист!
источник
95% всех программистов считают, что они входят в число лучших 5% программистов, остальные 5% являются менеджерами. Так что если вы менеджер, вы, вероятно, не хороший программист, в противном случае вы, вероятно, так.
источник
Я думаю, что это больше зависит от того, что вы делаете со своими навыками программирования. Быть великим программистом - это хорошо, но какое это имеет значение, если вы целый день программируете банковское программное обеспечение (без обид). Это просто не складывается.
Чтобы действительно доказать себе, что вы хороший программист, возьмите интересный сложный побочный проект. Это показывает несколько вещей: вы интересуетесь программированием в свободное время и искренне наслаждаетесь предметом - это важно для хорошего программиста. Это показывает универсальность в том, что вы можете расширить свои навыки за пределы того, что вы делаете в вашей рабочей среде. Это также показывает мотивацию и креативность: вы сами определили проблему и предпринимаете шаги для ее решения.
Все эти аспекты определяют для меня хорошего программиста.
источник
Мой ответ будет политически некорректным. Тем не менее, я на самом деле основатель стартапа, и моя работа заключается в том, чтобы нанимать лучших программистов.
Как узнать, какие люди будут хорошими программистами или могут быть хорошими программистами?
1 слово: IQ.
IQ для программирования, а рост для игроков в баскетбол.
Я бы назвал математические навыки еще одним политически корректным показателем. Мои учителя информатики сказали мне, что есть один критерий, который правильно предсказывает, кто преуспеет в курсах программирования. Высшая школа по математике Это эффективно IQ в любом случае.
Это может стать сюрпризом. Нам говорят, что программирование - это дипломная работа. Угадай что, мне наплевать на степень. Я забочусь только о 3 вещах.
К сожалению, IQ измеряет только одно. Поэтому я делаю несколько тестов.
Я задаю людям вопросы. Простой вопрос, который я ожидаю, ребенок начальной школы должен быть в состоянии ответить.
Я задаю такие вопросы, как:
Если вы внимательно посмотрите, эти вопросы не требуют творчества вообще. Только здравый смысл. Любой ребенок начальной школы с IQ может ответить на этот вопрос.
МОСТ выпускник колледжа не может. А теперь представьте, если кто-то не может ответить на это? Может ли он программировать? Думаю об этом. Как часто вам придется указывать, что он должен делать?
Вы также можете задать такие вопросы, как Microsoft, которые требуют творчества. Вы можете задать вопросы о том, как взвесить 8 шаров в весах, чтобы узнать, какой из них самый тяжелый. Проблема с такими вопросами заключается в том, что это связано с удачей. Однако некоторые из них довольно просты, это должно быть минимальным требованием.
Получение классного программиста может улучшить моральный дух других программистов. Получение одного законного программиста может снизить моральный дух всех остальных.
После того, как люди смогут ответить на подобные вопросы, что очень легко, я бы заставил их написать какой-нибудь джем-код Google.
Хорошие программисты могут решить джем-код Google и предсказать, какие проблемы легче решить.
источник
imho ты хороший программист если
-У вас есть теоретический фон. переизобретая колесо, а также алгоритм или структуру, в большинстве случаев - пустая трата времени.
Вы можете иногда видеть вещи и проблемы с искаженной точки зрения. Это может привести вас к поиску инновационных решений.
- вы тратите время, деньги и усилия, чтобы обновлять лучшие инструменты и лучшие навыки.
Ваш код легко изменить. Если вы разрабатываете чистый, элегантный и понятный код, его модификация не будет болезненной.
-Если ваш код / уровень ошибок достаточно высок. Я знаю, что это может показаться тривиальным, но я знаю многих креативных и опытных разработчиков, которые, тем не менее, очень склонны делать тривиальные ошибки. это сильно ухудшает их эффективность и полезность.
люди вокруг вас знают, что вы можете помочь решить, что делать
-вы можете решать проблемы, используя различные инструменты. плохие программисты продолжают использовать один и тот же инструмент (будь то язык, технология, архитектура и т. д.) для любой проблемы, с которой они сталкиваются
Вы продолжаете учиться, вам любопытно.
-Тебе весело программировать, после всех этих лет
источник
... мой вывод таков: хорошие программисты имеют низкую зарплату и мало шумят ... :)
источник
Лучший программист: выполни задачу с наименьшим количеством операторов кода вовремя.
источник
Сколько ошибок в вашем коде по некоторым показателям? (т.е. ошибок в строке) Сколько кода необходимо перекодировать, когда нужно добавить новые функции? У ваших коллег есть проблемы с изменением вашего кода?
В конечном счете, на этот вопрос почти невозможно ответить, учитывая, что вопрос «что такое качественный код» все еще горячо обсуждается после всех этих лет.
источник
Мне действительно нравится то, что Адам V сказал выше.
В дополнение к тому, что сказали другие, посмотрите на историю обслуживания и поддержки вашей работы. Если ваш код предъявляет повышенные требования к обслуживанию и постоянно исправляется, или его сложно изменить, это может быть показателем его качества. Но это также может быть индикатором плохих требований.
источник
Это очень сложно для самооценки. Некомпетентные люди, как правило, имеют сильно раздутые оценки своих способностей.
Хорошим показателем является то, хотят ли другие люди, которых вы уважаете как программистов, сами работать над / с написанным вами кодом. Если бы у вас была возможность работать напрямую с вами или унаследовать написанный вами код, вы от него отказались? Согласитесь неохотно? Или воспользоваться возможностью учиться на своей работе? Эта техника работает даже лучше, если она ровесница, а не подчиненный или кто-то, кто думает, что вам может быть полезно, чтобы вы чувствовали себя хорошо.
источник
Если вы действительно хотите это выяснить, отправьте некоторый код своим коллегам и попросите (конструктивный) обзор кода. В худшем случае вы чему-то научитесь. Тот факт, что вы находитесь здесь на этом сайте в поисках просветления, уже отличает вас от немытых масс. (если только вы не здесь, чтобы погладить эго. :-)
источник