Что должен знать профессиональный программист без учета особенностей конкретных языков программирования?
1. Надо уметь думать.
2. Иметь желание и интерес к делу.
Всё! Остальные пункты вытекут сами из этих 2х.
Ответственность 
Управление временем