Каждый программист должен знать: 1. Общие понятия и что они значат. Например, шаблоны проектирования, юзабилити, тестирование, стэк и пр. 2. Иметь понимание ООП. 3. Быть крутым хотя бы в одном языке. Ничего сверхъестественного, просто уметь инициализировать переменные, методы и т.д. С этого момента вы сможете учиться быстро. 4. Как читать чужой код. 5. Все время учиться. Учитесь правильно потреблять информацию. Книги, интернет, что угодно. 6. Системы контроля версий. Не обязательно все, главное знать основы, встречающиеся в каждой. 7. Когда нужно просить о помощи, а когда нет. 8. Какую проблему решать. Очень часто программисты тратят огромное количество времени на пустяки. 9. Иногда забывать о самолюбии и признавать ошибки, не принимая их на личный счет. 10. Как думать, как пользователь, а не просто техно-гик программист. Важно понимать, что вашим софтом пользуются люди, поэтому вы должны хотеть сделать их счастливыми. 11. Как отдыхать. Отдых – залог продуктивной работы. Силы воли и к