Черты идеального программиста в моем понимании:
1. Понимает, что программы пишутся для людей.
2. Понимает, что код пишется для людей.
3. Понимает разницу между требованиями и решениями.
4. Может самостоятельно в чем-то разобраться.
5. Знает необходимые технологии и типовые решения.
6. Старается сделать решение оптимальным.
Чуть более развернуто:
1. Пытается пользоваться тем, что делает. Не забывает проверить, что все работает.
2. Называет объекты емко и ясно. Пишет код предсказуемо и понятно. Не забывает о комментариях.
3. Не отклоняется произвольно от требований, сознательно проверяет результат своей работы на соответствие им. Вместе с тем может предложить иной вариант решения, лучшую реализацию.
4. Способен сам продумать реализацию небольшой задачи, не дергая поминутно старшего. Умеет пользоваться google и stackoverflow.
5. Знает хотя бы в общих чертах о широком круге средств решения задач, связанных со своей специализацией. Имеет представления о типовых решениях, в идеале - опыт их применения.
6. Видит разницу между надежной и хрупкой реализацией, простым и сложным для изменения решением, красивым и ужасным кодом, быстрым и медленным алгоритмом. В идеале сразу выбирает лучшее. Думает об возможных ошибках, которые могут возникнуть в ходе работы программы.
Удивительно, но с чертой 5, которая обычно считается определяющей, проблем чаще всего не возникает, а самые большие трудности вызывает 1 и 2 (самые важные, на мой взгляд). Пункты 4-6 очень, очень приятны, но без них работать, на самом деле, вполне реально, а вот работа без 1-3 превращается в эпическую битву. Вещи достаточно очевидные, но я только сейчас смог их четко для себя сформулировать.
ЗЫ: Между тем, со времен старого
поста ненависти стало как-то лучше. С одной стороны, люди под давлением стали работать несколько лучше (хоть и не без рецидивов), с другой стороны, лучше осознались мои собственные ошибки.
ЗЗЫ: На самом деле работа в ДонНУ при всей ее ущербности с точки зрения технологий и процесса разработки, дала мне очень много для понимания важности всех этих моментов - сказывается полный цикл, от раннего сбора требований до поддержки проекта спустя семь лет после старта. Правда, после этого больно видеть людей, которые этого не понимают.