Чтобы стать программистом, надо не знать, а быть способным (как минимум - способным думать самостоятельно: это фундаментальный критерий, который определяет потенциал в программировании). Другими словами, программист может решать задачи, и "учить" машину тому что он делает сам. В этом сама суть. Знание - инструмент, а не основа.