Tengo un amigo que se convirtió en lo que quería en el campo de TI en cuestión de una semana. ¿Cómo es esto posible?

Decidió ser un científico de datos.

Se benefició del efecto ‘Lo nuevo y lo brillante’. Fue “el mejor forastero disponible”.

Actualmente, la ciencia de datos es caliente, caliente, caliente. Es el futuro percibido, sin el cual no tendremos futuro … es la bala de plata, la pieza final, la respuesta a cada problema …

{/ cinismo desactivo temporalmente]

La ciencia de datos es, con razón, un tema candente ahora.

Muchas cosas buenas suceden cuando se analiza lo que realmente sucedió, en lugar de lo que algunas personas dijeron que sucedería, y la ciencia de los datos se ha convertido de repente en algo común.

Pero esto lo convierte en lo Nuevo y lo Brillante.

En TI, un efecto curioso ocurre en este punto. Los estándares de contratación relajan. Y esto no es algo completamente malo. Déjame explicarte …

Gráfico de Contratación de TI de lo Nuevo y lo Brillante.

Al principio, no contratamos a nadie. Porque la cosa no ha emergido de los laboratorios de investigación donde se crea.

Luego, luego de una exitosa charla de blog / conferencia, la industria en general escucha sobre lo Nuevo y lo Brillante.

¡Alquiler! ¡Debemos hacer entrar a la gente!

En este punto, el panel de contratación sabe muy poco sobre el tema y también está bastante ansioso por darle una oportunidad a la cosa. Por lo tanto, las personas pueden ingresar rápidamente, a pesar de tener calificaciones formales limitadas y poca o ninguna experiencia.

La cosa gana popularidad, y contratamos a más personas. Los mejores son contratados rápidamente, dejando un vacío de habilidades. Esto crea más oportunidades para aquellos con menos experiencia para aplicar.

Pero también, ahora los creadores de cursos en línea, bloggers y universidades se dan cuenta. Se crea la instrucción, suceden habilidades más genuinas, las personas comienzan a crear carteras de resultados reales y la barra de contratación aumenta.

Eventualmente, la industria tiene a todas las personas de ese conjunto de habilidades que necesita. La barra de contratación es aún más alta, a menudo más alta que la requerida para el trabajo. Número de contratistas cae en picado.

Puede aplicar ese gráfico de forma retrospectiva, a OOP, C ++, Java, Node, Web, SQL, y se ajusta bastante bien (aunque tenga en cuenta que la cola de la mano derecha dibujé demasiado abajo).

¡Apostaría un té agradable y caliente que también se aplicará en el futuro también!

Esto funciona bastante bien.

Ahora, mientras esto tiene un matiz de sarcasmo, realmente creo que funciona bastante bien.

Tienes que contratar de esta manera, de lo contrario, todos esperaríamos hasta que algo nuevo ya no fuera una ventaja competitiva. Es mucho, mucho mejor tomar riesgos calculados desde el principio, tanto con la tecnología como con la gente. Sabemos que el talento calificado de doctorado está a pocos años. Así que simplemente empezamos ahora, desarrollamos talento interno y contratamos a “los mejores forasteros disponibles”.

Esto, en pocas palabras, es cómo conseguí mi concierto de programación de juegos de 8 bits en la década de 1980. Yo era el mejor disponible, por ese precio, en mi área, en ese momento. Había programadores mucho mejores que yo (Matthew Smith, Steve Wetherill, Costa Panayi me vienen a la mente), pero lo que había construido y lo que sabía era suficiente para darme una oportunidad.

Tu amigo lo ha hecho bien, asumiendo que puede hacer lo que dice que puede hacer. ¡Todos podríamos aprender un truco!

Como algunos comentaristas han dado a entender, un lenguaje informático es solo una implementación de un enfoque conceptual para resolver problemas.

Ahora hay más de un enfoque, y de ahí obtenemos las diversas clases de lenguajes: de procedimiento (C, Cobol, Fortran, Pascal, PERL, etc.), no de procedimiento (SQL), orientado a objetos (Smalltalk, Java, C ++), etc.

Una vez que haya internalizado un enfoque, un nuevo lenguaje no es un gran problema. He perdido la cuenta de la cantidad de idiomas en los que he programado. Por supuesto, los diferentes idiomas tienen diferentes fortalezas y peculiaridades, y pueden hacerte tropezar, pero generalmente solo tomas el manual y te abres camino. No va a producir el código más óptimo para ese idioma, pero hace el trabajo. (y, a menudo, lo hace muy bien porque su capacidad para resolver problemas suele ser mucho más importante para el resultado que su conocimiento de los detalles sutiles de un idioma en particular)

Como nota aparte, me parece extraña la obsesión de Quora con el código y la codificación . En TI, está resolviendo problemas y proporcionando funcionalidad ; el código es solo una implementación.

Pero volviendo a la respuesta: aprenda a pensar de manera procedimental, a pensar en objetos, a pensar en conjuntos y puede aprender los idiomas que implementan esa forma de pensar con bastante rapidez.

Sin embargo, lo que me sorprende de tu amigo es que tiene un “fondo de programación sólido”, pero solo uno de los ejemplos tiene algo que ver con la programación (la programación de juegos es a menudo un caso especial de programación en tiempo real). El diseño del sistema y la ciencia de los datos son bestias fundamentalmente diferentes.

Hay muchos programadores que conozco que no pueden diseñarse con una bolsa de papel mojada. La programación tiene que ver con los árboles. El diseño del sistema tiene que ver con Forest, sobre cómo resolver las necesidades de un cliente y hacerlo de tal manera que obtenga algo que sea flexible, ampliable y escalable. Es otra manera de ver el mundo. Se puede aprender, pero ser un programador de armas no le brinda suficientes herramientas conceptuales para ser un buen diseñador de sistemas.

La ciencia de datos se elimina aún más, y es un conjunto de habilidades muy diferente a todo lo demás mencionado. La ciencia de datos en su núcleo no es la programación o el diseño del sistema ni nada relacionado. Es el reconocimiento de patrones y la señal de cribado del ruido. (Puede implicar programación, pero no se trata de programación)

Así que estoy sentado aquí pensando que esto es como decir “He aprendido a ser diseñador de autos y jefe de pastelería, y fue fácil porque soy un buen mecánico”.

Tal vez tu amigo sea de hecho un prodigio. Ellos existen. Pero lo más probable es que sea el tipo de persona que conoces todo el tiempo en TI: el joven inteligente (o niña) que simplemente no sabe lo que no sabe. Quien piensa eso porque ha leído algo, lo ha dominado. Que el mapa es el territorio. La versión informática de un teniente segundo.

Me encanta tener al menos a unas pocas personas así en un proyecto, porque agitan las cosas y te hacen pensar. Pero nunca deben ponerse a cargo.

Así que le deseo lo mejor a su amigo y espero que se asocie con personas más experimentadas que puedan aprovechar su impulso y evitar que piense que conoce un tema para dominarlo .

Para ti, no desesperes. Domina los conceptos básicos de lo que estás tratando de aprender y todo lo demás generalmente se cae de allí. La parábola de la tortuga y la liebre tiene valor aquí.

Su pregunta no incluye mucho en el contexto, detalles sobre su amigo o sobre usted mismo.

Suponiendo que no sabes nada sobre programación, hablando metafóricamente:

Un desarrollador competente, es decir, un “programador sólido”, aprender un lenguaje nuevo para ellos es como un conductor experimentado que se mete en un automóvil desconocido. Pueden aprender lo suficiente acerca de dónde deben ser útiles las perillas y demás, y aún pueden aplicar su conocimiento de las reglas de tráfico y navegar por las carreteras cercanas.

Algunos lenguajes y tecnologías de programación son diferentes en formas más fundamentales, por ejemplo, la programación orientada a los procedimientos frente a los objetos a la programación funcional. Dependiendo del lenguaje o tecnología, puede ser:

  • más como una motocicleta en lugar de un automóvil (los mismos conceptos básicos pero diferentes procesos de aplicación), o
  • más como una retroexcavadora en comparación con un automóvil (mover grandes trozos de tierra no es lo mismo que conducir el vehículo), o
  • más como un avión frente a un automóvil (se trata de dimensiones en 3D en lugar de uno, y se usan técnicas profundamente diferentes para cambiar la dirección del movimiento).

Por lo tanto, aprender otro lenguaje de procedimiento, cuando ya sabes 3, no es tan importante. Aprender programación orientada a objetos cuando solo has hecho programación de procedimientos es más difícil.

Un consejo común para los programadores más nuevos es aprender al menos uno de cada uno de los tipos de lenguajes de programación que mencioné anteriormente. Cada tipo de lenguaje tiene diferentes enfoques, ciertos conceptos; Usted podría pensar en ellos como herramientas de pensamiento. Aprender los diferentes enfoques no solo prepara al programador para aprender nuevos idiomas de los diferentes tipos. Construye una mejor base para aprender otros lenguajes de programación en el futuro. Se imparte al programador diferentes formas de pensar sobre la programación.

Hay una cita famosa:

“Me tomó dos horas para hacerlo, pero cuarenta años para aprender a hacerlo en dos horas”
– Vincent Van Gogh

En otras palabras, tener experiencia, práctica y educación en habilidades generales de informática puede darle una gran ventaja. Basándose en esa experiencia, aprender un nuevo idioma o una nueva aplicación es solo unos días de trabajo en lugar de meses.

En los últimos 12 meses, aprendí mucho sobre Vagrant, Ansible, AWS, Go y Python, y me volví lo suficientemente productivo con todas esas habilidades para crear herramientas de software utilizables para mi equipo de desarrolladores.

Pero lo relacioné con el conocimiento que tenía de muchos años de práctica con habilidades relacionadas como UNIX y Linux, scripting en muchos otros idiomas, C, Java, Perl, PHP, bases de datos SQL y virtualización con VMWare y VirtualBox.

Supongo que solicitó un trabajo y lo consiguió.

Si decidió meterse en la programación de juegos, y solicitó un trabajo, lo consiguió y fue capaz de aferrarse a él, entonces supongo que eso es todo.

La programación no es mágica, si tiene un buen fondo, puede dirigir su atención a diferentes campos de manera razonablemente rápida. Eso no quiere decir que seas bueno en eso, o incluso bueno en eso, pero ¿lo suficientemente bueno? Tal vez.

Mi último trabajo, me uní a él con la premisa de que estaría escribiendo Perl y AppleScript. No usé ninguno de los dos idiomas, pero aprendes y haces lo mejor que puedes. Al principio, por supuesto, apestaba, pero mejoré durante semanas y meses.

Desde el exterior, los trabajos de programación pueden parecer impenetrablemente difíciles e intimidantes. La realidad es que es solo un trabajo, y aprendes sobre la marcha.

Si su amigo puede aprender lo suficiente sobre programación de juegos o diseño de sistemas en una semana o dos para conseguir un trabajo, entonces es bueno para él. Si realmente no tiene un trabajo haciéndolo, entonces está lleno de mierda.

He hecho cosas así antes, por ejemplo, en el año 2000 fui a mi primera entrevista en C ++.

Al comienzo de la entrevista, dije: “No tengo una experiencia comercial significativa en C ++, pero he estado asistiendo a los equipos de C ++ y estudiando, y espero que mis habilidades sean lo suficientemente avanzadas como para serle de utilidad”.

Por supuesto, este comentario invita a la entrevista técnica del infierno. Pero yo estaba listo para eso, y pasé volando.

A veces solo tienes que ir por ello.

Si usted es un programador bueno y experimentado y puede absorber información fácilmente, es muy posible que pase un par de semanas leyendo y jugando y obteniendo la esencia de una nueva área lo suficientemente bien como para comenzar en una posición junior en dicha área. Solo necesita asegurarse de que es competente y para obtener las mejores posibilidades de conseguir un trabajo, cree algo que demuestre esa competencia.

Siempre que conozca la arquitectura, nosotros sabremos sus bucles y clases, y cómo usarlos, puede hacer cualquier cosa en TI.

Solo tienes que aplicarte

Aunque se puede hacer

Algunas personas aprenden rápido y otras necesitan más tiempo.

No te desanimes si no lo consigues de inmediato.

El es la excepcion

Probablemente un niño que ha estado estudiando programación toda su vida desde que tenía 7 años.

Una vez conocí a un tipo que tenía tanto conocimiento como el profesor, adivinó cuando comenzó a programar.

7 años de edad

Adivina lo que construyó? Un navegador completamente funcional.

Siempre habrá esas progenies.

Solo tienes que no compararte con ellos.

Tenía expectativas muy bajas. Si algo que te propusiste se logra en una semana, ya era tuyo.

Es como si yo dijera, quiero poder llegar a mi auto en menos de 30 años. Lo que en realidad significa que tengo que caminar un poco más rápido desde la puerta de mi casa.