5 tips para programadores principiantes: cómo elegir una especialización

1 octubre
5 tips para programadores principiantes: cómo elegir una especialización
Yury Yurchenko, nuestro líder de Global People Development, trabajó en IT durante más de 30 años. Su experiencia laboral incluye la selección, desarrollo y gestión de equipos, así como la docencia en informática y seguridad de la información. Ahora, ayuda a los colegas de DataArt con su desarrollo profesional, estableciendo procesos que puedan impulsarlos a construir un plan de carrera, mejorar sus habilidades o cambiar de tecnología por una más prometedora.

Le pedimos a Yury que compartiera sus recomendaciones acerca de a qué se debe prestar atención a la hora de elegir una primera especialización como programador. En este artículo, nos cuenta si se debe -o no- seguir los instintos, si es posible adivinar qué tecnologías se volverán populares en el futuro y por qué es necesario aprender inglés, todo con ejemplos de su propia experiencia personal.

Tip #1: Considerar la teoría y probar conocimientos en la práctica

Si seguiste el camino clásico, es decir, comenzaste tu carrera en TI estudiando en una universidad, podrías evaluar considerar la informática como una disciplina académica. Creo que un gran porcentaje de las personas que podrían desarrollar aún más la ciencia informática, nunca pensaron en hacerlo, y algunos de los jóvenes que estudiaron conmigo están haciendo cosas realmente interesantes. Pero tener una carrera de este tipo no es para todos: por ejemplo, a mí siempre me ha resultado difícil comprender qué aplicaciones prácticas podemos hacer a partir de la información puramente teórica. Pero si para vos la conexión entre cálculos abstractos y el desarrollo real es obvia, entonces podrías tener un gran éxito en la cibernética teórica.

Para aquellos que (como yo) no están interesados ​​en averiguar cómo se implementan en la práctica las construcciones pensadas por los teóricos, entonces lo mejor es involucrarse en proyectos reales lo antes posible. Por ejemplo, en mi primer año, todavía no entendía muy bien lo que estaba aprendiendo y en qué me convertiría en el futuro, pero como mis compañeros de clase y yo éramos en su mayoría adultos, necesitábamos un trabajo. Mientras éramos estudiantes, algunos de mis amigos consiguieron empleos paralelos como conductores de trenes o choferes. Yo tuve la suerte de entrar en el centro informático de la Academia de Defensa Aérea. Las tecnologías militares eran increíblemente geniales en ese momento, y rápidamente descubrí lo que hacen los programadores en la práctica. Mis colegas de la Academia se dedicaban a la virtualización, modelaban ataques aéreos y diseñaban estaciones de radar. Todo esto me resultaba tan interesante que prácticamente vivía en el trabajo.

Probablemente la mejor manera de comprender cuánto te gusta una cosa en particular, es metiendo manos en el asunto. Independientemente de cuál de los dos escenarios elijas, ya sea volcándote al autoaprendizaje haciendo algunos cursos, o recibiendo una educación clásica en la universidad, no necesitás esperar a graduarte para empezar a trabajar en tu campo. Hoy existen otras posibilidades y podés buscar pasantías o intentar escribir algo propio con tus amigos. Lo principal es asegurarte de que lo que hagas te apasione.

Tip #2: Confiá en vos mismo y en tus sentimientos

Existen ciertas profesiones cuyos representantes, sin importar en qué país del mundo se encuentren, están un poco en su propia ola. Estos profesionales tienen un estilo de comunicación especial, un lenguaje específico y chistes peculiares. Yo, por ejemplo, pondría a los trabajadores de la salud en la parte superior de esta lista y a los programadores inmediatamente después, seguidos por los militares, los bomberos y los agentes del orden. Estoy seguro de que la especificidad profesional que se nota en su comportamiento está relacionada con la forma de pensar que requiere su especialización.

Un lenguaje de programación es principalmente un lenguaje de comunicación, no solo con la máquina, sino también entre personas. Por un lado, esta es la primera razón para preguntarte si la profesión que elegiste realmente te gusta y, por el otro (y esta es una muy buena noticia), si aceptás estos principios de pensamiento, entonces estás en el camino correcto. Una vez que hayas experimentado los conceptos básicos de la programación, es mucho más fácil dominar cualquiera de las tecnologías utilizadas. Esto significa que cualquier idioma puede convertirse en tu entrada a la profesión. Si Python, por ejemplo, suele ser el lenguaje de moda en estos días, ¿por qué no intentarlo?

En uno de mis primeros trabajos, me dijeron que los programadores no necesitan que se les pague en absoluto porque ellos "ya aman lo que hacen". Es muy importante tener un buen sentimiento y el sentido de cuánto te inspira lo que hacés, al escribir un programa. Además, podés encontrar una especialización que te guste. Por ejemplo, un interés específico en el diseño de sistemas puede ser una gran base para desarrollar una carrera en seguridad informática o testing.

Así es como una de mis amigas, una programadora principiante, describe el proceso de su trabajo: "Primero viene la idea: estás emocionado y escribís el código, pero no funciona. Así que lo revisás y luego lo volvés a revisar… y ahí está, ¡encontraste el error! No, solo parecía que habías encontrado el error, pero no… Estás listo para morir cuando de ponto ¡Bang! ¡Epifanía! Es una sensación increíble". ¡Creo que ella lo describió perfectamente!

He oído que muchas personas -con poca experiencia en proyectos reales- piensan que quienes van a trabajar en QA simplemente no pueden escribir programas por sí mismos. Sería algo como “si querés ir a TI, pero no aprendiste a desarrollar a tiempo, sé un tester”. Pero, de hecho, los mejores tester son aquellos a los que realmente les gusta perfeccionar sus aplicaciones.

Todavía tengo esta divertida escena en mi mente: unos tipos acababan de pasar dos meses perfeccionando la nueva interfaz de un sistema de pago. Invitaron a todos a que lo vieran, lo pusieran en la pantalla grande y comenzaron la sesión elogiándose a sí mismos. Pero luego, a alguien se le ocurrió la idea de mostrar el programa a un tester que estaba de paso, que simplemente preguntó: "¿Qué tal si hacemos esto?" Y allí mismo tuvo que terminar la demostración: stack overflow y todos se fueron ...

Tip #3: No le tengas miedo a los errores y a los cambios

Si aprendiste a codear y lo hacés bien y con placer, todo lo que tenés que hacer es mantener la mente abierta para aprender nuevas tecnologías o cambiar de lenguaje de programación, por ejemplo. Nadie garantiza que un día no vas a pensar que te equivocaste al elegir su profesión; en ese momento, lo principal es evaluar con firmeza qué es exactamente lo que no te gusta. Lo más probable es que la causa de tu malestar sea un proyecto poco interesante, un jefe desagradable o el hecho de que tus compañeros de trabajo no sean tan geniales como parecía al principio. Pero si disfrutás el proceso de crear un programa, probarlo u organizar los procesos de desarrollo, entonces es relativamente fácil cambiar el entorno. El mercado de TI es dinámico y se recupera rápidamente de cualquier crisis. Las empresas siempre compiten por especialistas, especialmente por aquellos apasionados por su trabajo. Si estás abierto a cosas nuevas, seguramente una oferta adecuada te encontrará.

En el mundo de la tecnología, con el acceso actual a la información y la educación, lo principal es no ser vago y no tener miedo a las nuevas experiencias. Hoy en día, hay publicadas muchas listas de las tecnologías más populares, mejor pagadas o las favoritas de los programadores. Creo que vale la pena mirarlas y que cualquier información puede resultar útil. Lo que no se puede es esperar a tener suerte una vez que se elige una plataforma para trabajar y dominar. No hace mucho, se decía que todo el mundo estaría programando en Golang en un año, pero por alguna razón, esto no sucedió. No recomendaría a nadie que comience con una tecnología obsoleta solo porque puede ganar un poco más de dinero al hacerlo. En el futuro, esto significará perder tu trabajo (aunque ya hemos acordado que podés cambiar tu campo profesional si es necesario). Pero tenés que tener en cuenta que los especialistas en TI son personas sensibles y, por lo tanto, no recomiendo que te condenes a interactuar con una tecnología odiada solo por un par de dólares extra. Recordá el Tip #2 y tené en cuenta que hacer lo que más te gusta es lo que te va a terminar pagando mejor en el largo plazo, ya que será más fácil lograr el dominio.

Tip #4: Mirá lo que pasa a tu alrededor y ¡aprendé inglés!

La programación no es igual a las disciplinas clásicas de la ingeniería. En mi opinión, tiene mucho más en común con la lingüística. Daré un ejemplo sencillo para ilustrar lo que quiero decir: si le das un problema de matemáticas a cualquier grupo de personas y le pedís que lo resuelva de todas las formas posibles, dependiendo del nivel de preparación, habrá dos, tres o cinco formas diferentes, pero probablemente no más que eso. En general, pueden haber "varias formas". Ahora, si le das a un grupo de programadores la tarea de crear una aplicación para un proyecto específico, obtendrás exactamente tantos programas diferentes como la cantidad de personas que los escriban. El proceso de creación de un programa se parece más a escribir un ensayo que a resolver un cálculo. Si en la escuela se le asigna a toda una clase la tarea de escribir un ensayo sobre un perro, cada uno va a ser diferente a los demás, y los perros también serán diferentes entre sí. Este espacio ofrece amplias oportunidades para buscar en el futuro.

Cualquiera que haya comenzado sus estudios en un grupo de 120 personas, con solo dos copias del libro de texto para compartir entre todos -que fueron impresos desde un disquete en dos pasadas en una impresora matricial, que luego fueron prestados a cada estudiante bajo su palabra de honor y con una entrada en el registro sobre cuándo debía ser devuelto- solo puede envidiar a los estudiantes de hoy. Actualmente, para buscar información, existen muchas comunidades de TI y Google, sin las cuales la vida en general es difícil de imaginar. Sin embargo, debemos estar preparados para aceptar nuevos conocimientos, incluso sobre terminología. Por ejemplo, recientemente me familiaricé con dos temas completamente nuevos para mí en una sesión de lluvia de ideas sobre inteligencia artificial. Nunca había oído hablar de ninguno de ellos, después de más de tres décadas en TI. No puedo decir que sea un experto en ellos ahora, pero podré mantener una conversación sobre estos temas con el cliente en el futuro. Por supuesto, tuve que ordenar todos los nuevos conocimientos y también buscar en Google.

Esto nos lleva a otra cuestión muy importante: el idioma inglés. Yo diría que hoy en día para un programador saber inglés es incluso más importante que saber matemáticas. Y no solo porque el conocimiento del idioma te permite comunicarte con clientes extranjeros y facilita la búsqueda de trabajo y la construcción de una carrera. La clave real es que, comprender el inglés, amplía enormemente las posibilidades de educación superior en cualquier campo. No olvidemos que muchas publicaciones (estimaría que casi el 80%) no están traducidas a los distintos idiomas nacionales.

Tip #5: Poné a prueba tus fortalezas y tomá riesgos

Comencemos con el hecho de que, en mi opinión, se sobrestima la importancia de tener una sólida formación académica para un programador. Personalmente, aprendí sobre informática en 1985 gracias a un tutor que me estaba preparando para los exámenes de ingreso a la universidad: me trajo un libro para leer, que, por cierto, era sobre matemáticas discretas. No entendía nada, pero decidí inscribirme en esta especialización en particular de todos modos, simplemente porque solo tendría que tomar matemáticas en los exámenes de ingreso, aunque dos veces: oralmente y por escrito.

En la URSS, las escuelas estaban claramente divididas: estaban aquellas especializadas, en donde los niños talentosos eran seleccionados con la suficiente anticipación para entrenarlos para trabajar en áreas estratégicamente importantes, y estaban todas las demás escuelas, en donde casi no se enseñaba a pensar, al menos dentro del programa estándar. Por supuesto, la mayoría de mis compañeros de la universidad eran de la primera categoría. A diferencia de ellos, inicialmente logré completar aproximadamente el 1% de las tareas que recibí, e incluso después solo la mitad de lo que necesitaba. Pero esto, que puede parecer negativo en un principio, fue lo que me impidió relajarme como estudiante e incluso le dio cierta emoción al proceso de aprendizaje. Como resultado, a pesar de mi falta de formación escolar especial, me puse al día con la mayoría de mis colegas en las materias que se relacionaban directamente con la programación y que más me interesaban.

En un momento, programé (o al menos intenté programar) en todos los lenguajes escritos con código y que la computadora entendía. Estos fueron Assembler, PL, FORTRAN, REXX, LISP, FoxBase, FoxPro, C, C ++ y .NET. Todos estos fueron muy interesantes y, al mismo tiempo, ampliaron mis horizontes y me permitieron comprender cuáles funcionaban muy bien para mí y cuáles no tanto. Por ejemplo, después de probar suerte en la programación en Lisp, rápidamente me di cuenta de que no podría desempeñarme bien en este nivel desde el principio, y que requeriría una inmersión muy larga y profunda para mí. Es genial, por supuesto, escribir un programa que pueda modificarse a sí mismo en tiempo de ejecución dependiendo de las condiciones externas. Pero decidí detenerme en el nivel de familiaridad con la teoría y mantener mi profunda admiración por Lisp.

Pero tal vez a vos no te resulte tan difícil. En cualquier caso, no lo vas a saber hasta que lo intentes.

Finalmente, si tu entusiasmo por sumergirte en una nueva tecnología deja de ser tan fuerte en algún momento, siempre existe la oportunidad de concentrarse en el trabajo en equipo. De hecho, no todo el mundo quiere ser manager y un buen especialista técnico no debería empujarse artificialmente en esta dirección. Sin embargo, si sentís el potencial de ser un líder, sería una pena perder esta oportunidad.

Dicho esto, no es necesario ser el mejor programador del mundo para convertirse en un buen manager. Por otro lado, si ya sos un profesional en el desarrollo de software, los colegas que llegues a liderar te aceptarán mucho más fácilmente. En cualquier caso, la capacidad de hablar el mismo idioma con el equipo es muy importante.

En conclusión, elegir tu especialización es algo que no debes demorar. Probá un campo interesante en la práctica, disfrutá de tu profesión y cambiá la especialización si se vuelve aburrido. ¡Estoy seguro de que lo lograrás!