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