“Dominio” es una palabra muy fuerte. He estado programando durante aproximadamente el 80% de mi vida y he estado usando Python para cosas de ciencia de datos durante aproximadamente 10 años. Dudo si he logrado el “dominio”.
A menudo, estas preguntas sobre “¿cuánto tiempo se tarda en aprender X?” en realidad se trata de “¿cuánto tiempo tendré que estudiar X antes de poder conseguir un trabajo con X?” o “antes de que pueda hacer cosas útiles con X?”
En mi caso, comencé a usar Python para hacer cosas útiles de ciencia de datos dentro de un día o dos después de intentar primero escribir código en él. En ese momento, ya había estado usando Perl y MATLAB / Octave para tareas similares durante varios años, por lo que fue una transición relativamente fácil. (Me alejé de Python por un tiempo, pero “¿Por qué Python?” De Eric Raymond finalmente me convenció).
- ¿Se utiliza XGBoost en productos?
- ¿De qué manera es una 'Máquina de Turing Neural Lie Access' superior a las NTM normales?
- ¿Por qué el bandido multi-armado es un MDP de un estado?
- ¿Cuándo debo usar la similitud de coseno? ¿Se puede usar para agrupar?
- ¿Está muriendo la investigación en aprendizaje profundo?
Cuando comencé a usar Git como mi sistema principal de control de versiones, lo estaba usando para hacer cosas útiles en pocos minutos . Sus ventajas obvias sobre VCS centralizados anteriores, como Subversion, eran prácticamente una volcada y estaba en marcha, aunque sus comandos con nombres extraños y sus abstracciones ultrapotentes pero desconocidas (“el índice”) hicieron que la curva de aprendizaje fuera empinada. Años atrás, he escrito un sistema de misión crítica que introspecta las bases de datos y organiza automáticamente sus contenidos y rastrea los cambios en un repositorio Git usando libgit2
.
Por lo tanto, la cantidad de tiempo que le lleva aprender un nuevo idioma o herramienta depende claramente de cuánto conocimiento de fondo tenga con herramientas similares.
Al igual que con cualquier habilidad, lograr un nivel de capacidad de programación superior a la mera “adecuación” también depende crucialmente de su afán de participar en una práctica deliberada y de expandir y refinar el conjunto de técnicas que utiliza, para ampliar continuamente los límites de sus propias habilidades.
Por último, también estoy de acuerdo con la respuesta de Dima Korolev de que también es importante algún tipo de aptitud innata: conozco a personas que han estado codificando durante tanto tiempo como yo pero que no son tan buenos en eso. Por el contrario, creo que soy un buen programador y bueno pensando en cómo resolver problemas con las computadoras, pero sé que hay otros que son mucho mejores que yo.