Как я могу знать, хороший ли я программист?

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

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

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

Итак, интересно, есть ли какой-либо способ программист может сделать какую-то разумную самооценку? Как мы узнаем, хороши ли мы на работе или нет?

Или, если термины типа good и bad слишком плохо определены, как программисты честно идентифицируют свои сильные и слабые стороны, чтобы они могли воспользоваться преимуществами прежний и работать над улучшением последнего?

301 голос | спросил Kristopher Johnson 1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

30 ответов


325

Хороший программист понимает, что им нужно продолжать учиться и расти. Они стараются изо всех сил прилагать все усилия, признаться в неудачах и учиться у них.

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

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

Хороший программист любит программировать и будет делать это в свое свободное время, даже если они уже проводят более 80 часов в неделю.

Хороший программист знает, что он /она не отличный программист. Истинно великих программистов не существует, есть только те, кто утверждает, что они велики, и те, кто знает, что они не велики.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
91

Как говорит Пол Грэм в этом pod cast , вы не можете. Только ваши коллеги могут рассказать вам.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
59

Я всегда находил, что проще всего судить о вашей работе, делая две вещи.

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

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

Теперь, ради выхода из темы, я процитирую Роберта А. Хайнлайна и его взгляд на эту тему:

  

"[Программист-ударник] должен быть   в состоянии изменить подгузник, спланировать   вторжение, мясник, свиньи, корабль,   дизайн здания, написать сонет,   балансировать счета, построить стену, установить   кости, успокаивать умирающих, принимать заказы,   давать приказы, сотрудничать, действовать в одиночку,   решать уравнения, анализировать новые   проблема, подача навоза, программа a   компьютер, готовить вкусную еду, сражаться   эффективно и умело галантно.   Специализация - для насекомых ».
   - от Ноутбука Лазаря Лонга.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
55

Это Матрица компетенций программиста только для вас: http: //www.indiangeek .net /WP-содержание /добавления /Программист% 20competency% 20matrix.htm

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
38

У Джеффа есть одна из моих любимых сообщений в блоге по этой теме ... Почему я лучший программист в Мир

«... наша работа не лучше, чем кто-либо другой, нам просто нужно быть лучше, чем год назад».

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
28

Я думаю, что тот факт, что вы задаете этот вопрос, доказывает, что вы не плохой программист, поэтому, на мой взгляд, вы на полпути. :)

Плохие программисты всегда думают, что они отличные программисты, по моему опыту.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
21

заявление Ника «Плохие программисты всегда думают, что они великие программисты ...» объясняется Эффект Дуннинга Крюгера , который обобщает, что люди, которые немного знают о предмете, часто оценивают, как которые они действительно знают.

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

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
18

Ответ, получивший наибольшее количество голосов, действительно огорчен. В основном это говорит о том, что у вас нет жизни вне программирования. А как насчет семьи? Сообщество? Увлечения? Какую профессию мы находим в том, где вы должны быть озабочены точкой одержимости, чтобы считаться «хорошим»? Я действительно думаю, что нам нужно получить некоторую перспективу здесь.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
10

Вы можете попробовать конкурировать в конкурсах алгоритмов TopCoder .

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
9
  

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

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

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
9

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
9

Вот некоторые примеры реальной работы плохого программирования. Конечно, аналогичный код был повсюду скопирован /вставлен в 100 мест. Гай уволили, но я слышал, что он снова получил хорошую работу. Наслаждайтесь:

a)

if (! TableObject.loadList("sql condition").isEmpty()) {  
    List<TableObject> myList = TableObject.loadList("sql condition");  
    ...  
}

б)

public static Type getInstance() {  
    if (instance == null) {  
        return new Type();  
    }  
    return instance;  
}

с)

getForeignKeyObjectProperty1() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty1();  
}  

getForeignKeyObjectProperty2() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty2();  
}  

...

getForeignKeyObjectPropertyN() {
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getPropertyN();
}

г)

public boolean isHasImage() throws SQLException {
    StringBuilder query = new StringBuilder();
    query.append("select user_name");
    query.append(" from user");
    query.append(" where has_image = 1");
    query.append(" and user_name ='"+getUserName()+"' and user_image is not null");
    Connection c = Database.getInstance().getConnection();
    Statement st = c.createStatement();

    try {
        ResultSet rs = st.executeQuery(query.toString());
        if (rs.hasNext()) {
            return true;
        } else {
            return false;
        }
    } finally {
        st.close();
    }
}

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

EDIT: Чтобы ответить на комментарии: я получил работу до окончания школы, и у этого парня уже было несколько лет опыта программирования. Его уволили через несколько месяцев после того, как я получил работу, поэтому я не мог никого наставлять. Примерами, приведенными выше, были только с моей головы - каждый мир кода, к которому он прикасался, был испорчен различными и творческими способами. Большая часть материала начала ползти после того, как он ушел из компании, потому что только тогда другие люди увидели некоторые части кода. Он вообще хороший парень, приятно разговаривать с ним и т. Д., Но он НИКОГДА не будет хорошим программистом, так же, как я никогда не буду хорошим художником или писателем или что-то еще.

Чтобы контрастировать это с другим примером, парень, который пришел на его место, также был подградом в то время. Он изучал колледж, более известный для управления, а затем программирование. Он не слишком уродлив в каком-то смысле, что он запрограммировал что-нибудь для удовольствия или сидел дома и читал о Java или программировании, но он все в порядке. Он быстро поправил и начал выпускать полезный и удобный код. Некоторые люди могут это сделать, другие не могут - просто спросить dailywtf.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
8

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

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

(я сказал, что это последнее, потому что в моей последней компании один программист получил «разработчик года» два раза в три года. После того, как он ушел, мы нашли не менее 20 TDWTF-достойных фрагментов кода. Он разработал код быстро , но не обязательно хорошо. Менеджмент просто не знал разницы.)

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
6

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

Попросите людей использовать то, что вам нравится, и посмотреть, что они думают.

- Кевин Фэрчайлд

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
6

Вы можете это понять?

if(rp->p_flag&SSWAP) {
	rp->p_flag =& ~SSWAP;
	aretu(u.u_ssav);
}

:-)

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
4

Просто мысль о том, что вам нужно самооценить, делает вырезание выше остальных.

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
4

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
4

Для меня самые лучшие программисты никогда не ищут работу. У них есть постоянные предложения для новых позиций, основанные только на их репутации. Поэтому у хорошего программиста могут быть предложения от предыдущих работодателей, если они захотят вернуться. Или у хорошего программиста были бы запросы от бывших сотрудников о том, чтобы приступить к работе для них в новой компании.

С точки зрения сильных /слабых сторон вы, вероятно, уже знаете их. Если нет, попросите более старшего человека в вашей команде. Это даже не должно быть разработчиком. Хороший руководитель проекта знает сильные /слабые стороны программистов. Кроме того, черты, которые определяют хорошего программиста, не ограничиваются только кодом. Понимание бизнеса, навыков общения, суждения и т. Д. Выполняются вне вашей среды разработки.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
3

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

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
3

я бы просто сказал: если вы страстны (я имею в виду ДЕЙСТВИТЕЛЬНО страстный) о том, что вы делаете, если вы гибки (другой язык, новые технологии, полный римейк старого проекта - давайте сделаем это!), если вы продолжаете учиться и совершенствовать свои навыки и никогда, никогда не думайте, что вы достаточно хороши, чтобы остановиться, - тогда вы хороший программист!

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
3

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
3

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

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

Все эти аспекты определяют для меня хорошего программиста.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
3

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

Как я узнаю, какие люди будут хорошими программистами или могут быть хорошими программистами?

1 слово: IQ.

IQ предназначен для программирования в качестве высоты для игроков в мяч.

Я бы поставил математические навыки как еще более политически правильные показатели. Мои преподаватели информатики рассказали мне, что есть один критерий, который правильно предсказывает, кто преуспеет в курсах программирования. Средняя школа Математические оценки. Тем не менее, это действительно IQ.

Это может стать неожиданностью. Нам говорят, что программирование - это работа в колледже. Угадайте, я не забочусь о степени. Мне все равно 3 вещи.

  1. Навыки программирования (которые можно протестировать).
  2. Склонность.
  3. Здравый смысл (не слишком низкий) умения людей.

К сожалению, IQ измеряет только одно. Поэтому я делаю некоторые тесты.

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

Я задаю такие вопросы, как:

  1. Какое расстояние между короткой и длинной рукой часов в 7:35
  2. Если я иду из Джакарты в Семаранг и хочу поддерживать скорость 60 км /час. Затем в первые 2 часа я проезжаю 100 км /час. Как быстро я должен отправиться на оставшуюся часть поездки, чтобы моя СРЕДНЯЯ скорость составляла 60 км /час?

Если вы внимательно посмотрите, эти вопросы вообще не требуют творчества. Только здравый смысл. Любые ученики начальной школы с IQ могут ответить на это.

МОСТ выпускник колледжа не может. Теперь представьте, если кто-то не может ответить на это? Может ли он программировать? Думаю об этом. Как часто вам нужно будет указать, что он должен делать?

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

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

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

Хорошие программисты могут решить код ошибки Google и могут предсказать, какие проблемы проще.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
2

imho, вы хороший программист, если

- у вас есть звуковой теоретический фон. заново изобретать колесо, а также алгоритм или каркас - большая часть времени. [/p>

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

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

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

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

-people вокруг вы знаете, что вы можете помочь решить, какие варианты делать

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

- Ты продолжаешь учиться, тебе любопытно.

-У вас весело программирование, после всех этих лет

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
2
  

«Сэр, я прошел через это   Альфа в Омаху, и я говорю вам, что   чем меньше человек знает, тем больше   шум, который он делает, и чем выше   зарплату он командует ».     Марк Твен

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
2

Лучший программист. Завершите задачу с наименьшим количеством операторов кода вовремя.

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
1

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

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
1

Мне очень нравится то, что сказал Адам V выше.

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
1

Очень сложно самооценить. Некомпетентные люди склонны дико раздувать оценки своих способностей.

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56
1

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

ответил K Lettow 4 J0000006Europe/Moscow 2012, 19:07:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132