Blog

En programación lo que importa es mantener las destrezas al día

Nota: este artículo es una traducción de un post de regulargeek.com

Obviamente el desarrollo de software es algo más bien «complicado» ya que de lo contrario cualquiera podría hacerlo y el hecho de programar aplicaciones sólidas no sería tan difícil. Sin embargo, las expectativas no siempre se corresponden con la realidad. Las partes más básicas de la programación en realidad no son difíciles. Si repasas mi post sobre consejos para aprender un lenguaje de programación, aprender los fundamentos como la sintaxis, los bucles y las colecciones es bastante sencillo.  Incluso el I/O no es difícil sea el lenguaje que sea. Entonces, ¿por qué se complica tanto esto de aprender a programar?

Paul Homer tiene una artículo excepcional sobre  las contradicciones en la programación. El extracto más importante del post es:

¿Es fácil o difícil aprender a programar? Cuando las personas a tu alrededor admiten que es difícil, aunque te pueda tomar un rato, no tiene porque convertirse en algo arduo o lioso. Pero si la gente a tu alrededor piensa que es fácil, se vuelven impacientes y se toman atajos realmente malos para evitar el trabajo indispensable, así que al final es complicadísimo conseguir programar algo entre tanto caos. Así pues, todo al final depende de que las personas a tu alrededor puedan entender que para que pueda resultar fácil, hay que enfocarlo como si fuese algo realmente complicado. O en otras palabras: es fácil hasta que caes en la trampa de pensar que no lo es…

Exacto, la programación es fácil hasta el momento en que piensas que no lo es. El motivo por el cual esto sucede es en verdad por un sentimiento de falsa seguridad. Al principio, aprendes sobre la estructura de datos y la sintaxis de un lenguaje. Al final, acabas aprendiendo más cosas como los algoritmos más comunes, búsquedas dicotómicas (o binarias) y ordenamiento por mezcla son buenos ejemplos. Lentamente, aprendes cosas más complicadas del tipo crear y editar un árbol de búsquedas dictómicas. Sin embargo, tras aprender estas cosas, al final consigues un puesto de trabajo desarrollando aplicaciones y te das cuenta de que todo lo que has aprendido lo gestionan los frameworks. Y así, empiezas a ignorar los fundamentos básicos de la programación mientras vas aprendiendo más a analizar los requisitos empresariales de las aplicaciones y  demás especificaciones técnicas que hay que trasladar al código.

De repente, empiezas a tener que tratar con problemas rarísimos como restricciones de memoria o fugas de memoria, problemas de búsqueda a gran escala,y agregación de datos. De lo que no te das cuenta es que a medida que has ido creciendo profesionalmente, tus tareas se vuelven más difíciles pero no parecen serlo porque lentamente te has acostumbrado a ese nivel de dificultad. Sin embargo, aquí es donde surgen las contradicciones. Estás tratando una clase de problemas que requieren que te cuestiones premisas fundamentales.

En muchos de estos tipos de casos, necesitas revisar y repasar tus conocimientos básicos. Para temas de memoria, tienes que ver cuántos objetos están siendo retenidos en memoria. Puede que algunos de tus datos puedan serializarse a disco. Para las búsquedas, quizás tengas que cambiar tu algoritmo de búsqueda o quizás tengas que incluir índices de búsqueda. la agregación de datos, que es muy importante con todos los datos sociales disponibles hoy en día, te exigen ver cómo estás almacenando datos y cómo la estás filtrando.

Retener las habilidades básicas como programador es algo que nuestra industria tiende a olvidar por la incorporación de frameworks de manera extendida y generalizada. ¿Son las webs del tipo Programming Praxis, que te ayudan a practicar la programación, realmente útiles?  En algunos casos lo son de forma clara. Olvidarse de cómo crear un árbol de búsqueda dicotómica no es una catástrofe, pero acordarse que estas estructuras básicas de datos y algoritmos sí es algo crítico en la carrera de un programador. La única vez que puedes realmente ignorar algunos de estos fundamentos es cuando tu carrera se enfoca a la creación de aplicaciones administrativas, como formularios de alta de datos, con un número limitado de usuarios concurrentes. Hay un amplio segmento de la población programadora que no hace este tipo de trabajo, pero si hay muchos que crean todo tipo de aplicaciones novedosas e interesantes.

Algunos piensan que es importante trabajar en proyectos de desarrollo paralelos al de tu puesto habitual de trabajo, para ser un buen candidato a un puesto de programador. Yo no soy muy fan de esta opinión, pero si que valoro la idea de hacer desarrollos en paralelo. Normalmente los proyectos que las personas desarrollan de forma paralela guardan poca relación con lo que hacen en  el trabajo. Indudablemente el beneficio está en que se amplían conocimientos ya que se enfrentan a problemas de naturaleza distinta al del software que desarrollan en el puesto de trabajo. Por ello lo proyectos en paralelo son mejores que hacer ejercicios de programación, sobretodo por la motivación de la persona que lo está programando. ¿Preferirías escribir otra búsqueda dictotómica o desarrollar una aplicación que tu piensas que puede ser útil? Obviamente, los proyectos en paralelo son más divertidos. también resultan útiles para aprender nuevas tecnologías y lenguajes si no puedes aprenderlas en el trabajo.

¿Tú qué haces para mantener tus destrezas como desarrollador al día? Recuerda: En programación lo que importa es mantener las destrezas al día.

Dejar un comentario