"No tienes que ser un cerebrito para programar". No lo digo yo: lo dice un desarrollador que lo tiene muy claro. Es en realidad una idea que transmiten la mayoría de nuestros protagonistas: la de que aprender a programar está al alcance de cualquiera.
Quizás esta sea una buena oportunidad: el confinamiento por coronavirus ha hecho que por diversas circunstancias tengamos quizás más tiempo disponible para afrontar algún reto pendiente. Eso es precisamente lo que os proponemos con este tema en el que 17 desarrolladores y desarrolladoras nos cuenta con qué lenguaje de programación empezarían ese camino. No solo eso: nos confiesan qué les hubiera gustado a ellos saber antes de empezar.
Desarrolladores por doquier
Para este tema queríamos recabar la opinión de un nutrido grupo de desarrolladores y desarrolladoras, y lo cierto es que la respuesta de todos ellos ha sido fantástica, así que desde aquí queríamos agradecerles su colaboración en este tema.
La propuesta era simple: contestar a unas pequeñas preguntas de forma breve para que todos esos testimonios sirvan a quienes tienen dudas a la hora de afrontar ese reto. ¿Realmente seré capaz de aprender? ¿Con qué lenguaje de programación debo empezar? ¿Cuál es el lenguaje más interesante? ¿Qué consejos daría la gente que ya lleva años en este campo?
Con esa idea en mente fuimos contactando con una serie de desarrolladores que además nos proponían a otros expertos en diversas disciplinas para enriquecer estos consejos y este cuestionario, así que los perfiles son, como veréis, numerosos y variados. He aquí a nuestros protagonistas:
- Pedro Gómez (@pedrogs): ingeniero software en Karumi (@goKarumi), un estudio de desarrollo en Madrid.
- Ricardo Galli (@gallir): socio-fundador de Menéame, actualmente director de datos e innovación en WebBeds.com y profesor asociado en la Universitat de les Illes Balears.
- JJ Merelo (@jjmerelo): profesor en la Universidad de Granada, "enredado con LibreLabGRX y desarrollador en (algunos) ratos libres".
- Sergio López (@slpnix): ingeniero software en Red Hat en el equipo de Ingeniería de Virtualización.
- Carlos Azaustre (@carlosazaustre): desarrollador web y Senior Frontend Engineer en Eventbrite. Podemos encontrarle tanto en Twitter como en su blog.
- Fernando Cejas (@fernando_cejas): tras trabajar en SoundCloud, Tuenti e IBM ahora es Director of Mobile en Wire.
- Txema Rodríguez (@durbon): compañero y editor en Genbeta Dev, es además Android Team Lead en JobAndTalent
- Brais Moure (@MoureDev): hace 5 años que fundó MoureDev, su estudio de desarrollo para desarrollo de apps en iOS y Android, y cuenta además con un popular canal para desarrolladores en YouTube.
- Juan Gómez Mosquera (@longor): se declara "fundamentalista del software libre y amante de la programación", y ejerce como desarrollador de software sénior en IBM Research, donde trabaja en el ámbito de la "esotérica", como afirma él, computación cuántica.
- José Francisco Verdú (@Kikobeats): este desarrollador de 27 años trabaja en IBM Research en proyectos "para enseñar las tecnologías que se podrán utilizar en el futuro".
- meri (@meri_minimeri): trabaja sobre todo en el ámbito de UX en Atani, una startup de inversión en criptodivisas, y en el pasado trabajó en PyroStudios y Zinkia.
- Quique Fdez Guerra (@CKGrafico): es desarrollador en Plain Concepts y Google Developer Expert en Web Technologies.
- Diana Aceves (@dianaaceves): es frontend developer en DEISER y, como confiesa, "muuy activa en Twitter.
- Jorge Ferreriro (@JGFerreiro): tras trabajar en Amazon, ahora es ingeniero software en Eventbrite y es posible encontrarle también en su canal de YouTube.
- Paqui Calabria (@Zurribulle): es frontend developer autodidacta en Adevinta.
- Jorge del Casar (@JorgeCasar): es Technical Lead en Sngular y Google Developer Expert en Web Technologies y Google Assistant.
- Paola García (@gGarciaPaola): directora de Chefly Tech & Diversity.
¿Con qué lenguaje de programación empezar?
Quienes siempre han tenido esa espinita quizás puedan comenzar ahora a quitársela de encima: el confinamiento nos ha obligado a quedarnos en casa, y en algunos casos eso ha llevado a tener mucho tiempo que ocupar.
Hay multitud de propuestas para hacerlo —quizás demasiadas— pero podemos ver también esta situación como una oportunidad para comenzar a programar desde cero. Es algo que nuestros protagonistas aseguran que se puede hacer, y por eso les hemos preguntado con qué lenguaje de programación darían esos primeros pasos.
Pedro Gómez destacaba que todo depende del campo al que uno quiera dirigirse y explicaba que "si quieres hacer videojuegos te recomendaría C#, pero si quieres entrar en el fabuloso mundo del desarrollo web, iría por JavaScript".
Ricardo Galli apostaba por lenguajes simples, modernos y con curva de aprendizaje suave. Para él "los dos candidatos claros son Python y/o Go". JJ Merelo nos daba primero una respuesta corta, "todos los lenguajes" y luego se explicaba con una respuesta más elaborada.
Programar, nos decía, "es como las matemáticas o la literatura: una forma de pensar para hacer algo". De hecho no apuntaba a ningún lenguaje concreto, sino tratar de aprender varios para "que te olvides un poco de la sintaxis (la sintaxis no importa), aprendas a buscar la herramienta más adecuada, y seas flexible".
Sergio López apostaba por Kotlin, "un lenguaje moderno, con una sintaxis elegante, y que "crece" con el programador" que tiene la ventaja de estar muy extendido en Android.
Por su lado, Carlos Azaustre explicaba que "sinceramente creo que JavaScript es el mejor lenguaje para iniciarse. Solo necesitas el navegador y la consola para empezar". Fernando Cejas también apostaba por Kotlin, pero él sobre todo "iría por Python ya que hay muchísima comunidad y ejemplos de los cuales se puede aprender".
Txema Rodríguez coincidía con Cejas y Galli: "aprovecharía para aprender uno de los lenguajes más versátiles actuales, Python. Es un fenomenal primer lenguaje y también un fenomenal enésimo lenguaje", apuntaba. También Brais Moure elegiría Python por "su simplicidad de aprendizaje y la gran cantidad de ofertas de empleo que existen", aunque avisa de que no está orientado a aplicaciones móviles. También Paola García recomendaba este lenguaje "por su aplicación en inteligencia artificial".
Juan Gómez no recomendaba aprender uno, sino al menos dos lenguajes de programación: "uno con el que sea muy productivo y pueda prototipar rápidamente y otro con el que pueda sacar el máximo rendimiento posible". Para el primero apuntaba también a Python, pero era el segundo el que tenía "clarísimo": Rust, que como nos recuerda es el más amado entre los programadores según StackOverflow.
Kiko apostaba por Javascript, "el lenguaje de la web", mientras que para él otra opción clara era Python, "el lenguaje de los datos". Ambos, explicaba, "son livianos, no necesitan muchos recursos y se pueden escribir desde cualquier editor de texto", algo que facilita que "enseguida puedas ver resultados de lo que hace tu código". También Paqui Calabria apostaba por JavaScript, que es "muy polifacético" y "permite hacer cosas usables desde el principio".
Jorge del Casar coincide: JavaScript, nos dice, es "un lenguaje sencillo con muchas oportunidades, mucha documentación y que permite obtener resultados rápidamente, algo que motiva mucho cuando estás empezando". También Diana Aceves se mostraba a favor del lenguaje JavaScript para empezar: "su curva de aprendizaje no es demasiado elevada para empezar y está entre los lenguajes más demandados en el sector."
Para meri (con m minúscula, insiste, por favor), en su caso "una mezcla de HML, JavaScript y CSS (sí, CSS es un lenguaje de programación)", sería una buena forma de empezar porque con esa opción es posible desarrollar "cualquier cosa".
La apuesta de Quique Fdez. Guerra es distinta y singular: él apuesta por Blockly, usado en 'The Hour of Code', que permite "abstrarse de los lenguajes tradicionales para centrarte en la algoritmia". También original era la propuesta de Jorge Ferreiro, que explicaba que él "utilizaría Scratch como primer lenguaje de programación porque permite acceder a un entorno de programación didáctico, divertido y, sobre todo, muy visual"
¿Y si el objetivo es encontrar empleo?
Puede que la motivación de aprender a programar no esté basada (solo) en que quizás los interesados dispongan de más tiempo en este confinamiento por las razones que sea.
Puede que lo que ocurra es que quieren plantearse dar un giro a su carrera profesional y aprovechar la fuerte demanda que existe en el ámbito del desarrollo software. ¿Cambiaría entonces la preferencia del lenguaje de programación a aprender? Eso es justo lo que les preguntábamos a nuestros protagonistas.
Ricardo Galli explicaba que aprendería Swift si el objetivo fuera desarrollo para móviles. Sin embargo explicaba que "los dos lenguajes que más me atraen y que creo tendrán una demanda creciente son Go y Rust", aunque este último "puede ser frustrante para un novato".
JJ Merelo no se desviaba de su discurso en cuanto a la flexibilidad y cualquier propuesta era válida "incluyendo lenguajes como COBOL, que todavía siguen dando mucho dinero aunque sean del pasado". Paola García "aprendería C como base para otros lenguajes y JavaScript si quisiera uno para encontrar trabajo en el futuro".
Sergio López seguía apostando por Kotlin, muy válido para especializarse en desarrollos Android, aunque explicaba que es interesante "salir frecuentemente de tu zona de confort" y aprender "un lenguaje funcional moderno" como Elixir, o alternativas como Rust, "sobre todo si tienes una base de C y/o C++", porque "su uso se está extendiendo rápidamente entre las grandes empresas del sector".
Para Carlos Azaustre la apuesta seguía siendo clara por JavaScript: "puede no ser el mejor lenguaje del mundo pero si uno de los más versátiles y usados. Los perfiles de Frontend y FullStack son los más demandados y JavaScript es clave en ellos", destacaba.
Coincidía Diana Aceves, que comentaba cómo además de ser relativamente sencillo, es el lenguaje con más aplicaciones en la actualidad, "bien como JavaScript puro (aka Vanilla JavaScript) o a través de todos los frameworks y librerías basados en él: React, Vue, Angular, Ionic... La demanda es altísima".
Para Fernando Cejas no había una elección definitiva y "lo mejor sería aprender las buenas practicas y los patrones de diseño de ingeniería de software, ya que son universales y al final se aplican a cualquier problema que tengamos que resolver".
Nuestro compañero Txema Rodríguez mantenía su propuesta: Python es un candidato claro que "se ha hecho famoso por todo el tema de Data Science", aunque también apuntaba a Kotlin o Swift, sobre todo "porque tienen muy buenas salidas en el sector móvil".
En entornos laborales Brais Moure explicaba que Java "es uno de los más versátiles y con mayores oportunidades laborales" aunque ahora sea algo menos popular. En su ámbito de desarrollo móvil dejaba clara las apuestas ya citadas: Kotlin para Android y Swift para iOS son su "apuesta de futuro a corto/medio plazo", mientras que Juan Gómez explicaba que además de Rust, algo menos popular en el ámbito profesional, "si tu objetivo es ponerte a trabar ya" él daría dos opciones, "una fácil y otra no tanto: Python y C++".
Jorge del Casar seguía apostando por Javascript incluso si el objetivo es la futura búsqueda de empleo: "es una navaja suiza que permite hacer tanto desarrollo frontend (HTML+CSS) como backend (Node.js).
La apuesta sigue siendo de ese combo de HTML, JavaScript y CSS para meri, que además destaca que no tienen una curva de aprendizaje elevada y que en el ámbito laboral permite acceder a montones de ofertas como "UX Engineers, Frontend-dev o maquetación".
Precisamente esa misma recomendación era compartida por Quique Fernández "si quieres enfocarte en encontrar algo que puedas usar rápido, porque es aplicable a muchos ámbitos". Eso sí, para él esto era "una carrera de fondo" y convendría empezar por C —que para él da una buena base— para luego pasar a C#/Java, luego a Python/JavaScript y por último ir a Scala, R o incluso F#.
Jorge Ferreiro planteaba dos opciones distintas de cara a desarrollar una carrera profesional: apostaba por Python "por su uso en temas de Data Science y Machine Learning", pero también ofrecía como alternativa "JavaScript si vas a hacer más desarrollo web".
Como el resto de sus colegas, recalcaba que este último le gustaba "porque tiene una barrera de entrada muy baja y ofrece posibilidades tanto para el frontend como para el backend con solo dominar un único lenguaje de programación". Aún así, destacaba que "es importante a entender los fundamentos de esos lenguajes, pros y contras".
Esto es lo que los expertos querrían haber sabido al empezar
La última de nuestras preguntas era aún más personal: se trataba de explicar a toro pasado qué echaron ellos en falta cuando empezaron a preguntar. ¿Qué les hubiera gustado saber, y, por tanto, qué consejo les gustaría que les hubieran dado a ellos cuando empezaban?
Para Pedro Gómez lo más importante es "que tengan paciencia y busquen una persona que los guíe por el camino". Ricardo Galli apuntaba que "programar no es complicado, pero hacerlo bien sí que lo es: eso llega con esfuerzo, práctica y sobre todo leyendo mucho código de terceros".
De hecho iba a las bases y recordaba que "un buen programador debería ser capaz de implementar algunos algoritmos fundamentales (Quick Sort, búsquedas del camino corto en un grafo) sin recurrir a Google o StackOverflow", porque entre otras cosas eso "te enseña la 'belleza oculta' en algoritmos relativamente breves".
Justo en esa dirección iba la recomendación de Quique Fernández Guerra, que explicaba que era mejor no intentar "aprenderlo todo de golpe" y recomendaba "centrarse en las bases de la programación y las buenas prácticas" para poder luego reutilizar todo ello en muchos lenguajes y ámbitos.
JJ Merelo se nos pone nostálgico al hablar de que él empezó en los 80 con el Spectrum y le hubiera gustado que alguien le dijera "no pierdas el tiempo en el ensamblador del Z80". Más allá de eso, explica, lo importante es que quien quiera aprender "busque un problema que le apasione y que realmente vaya a solucionarle algo", porque eso hará el aprendizaje mucho más fácil y rápido.
Precisamente esa era la recomendación de meri, que explicaba que al ponerse "una pequeña meta de un proyecto personal" acabas haciéndolo "con más ganas, es algo tuyo". Además recordaba otro consejo fundamental "preguntar cuando no se entiende algo".
A Sergio López le pareció importante recordarnos a todos que la programación "requiere práctica" tanto a la hora de escribir como "sobre todo, de leer mucho código. A veces es frustrante, pero no decaigas.Tómate un respiro, cambia de contexto, y luego vuelve. Al final siempre sale".
Él incluso apuntaba a ayudar con algo pequeño a algún proyecto Open Source en GitHub, y advertía de un peligro y un error de principiante "que todos hemos cometido: caer en la sobreingeniería. Una buena solución tiene que ser tan sencilla como permita la complejidad del problema que resuelve. Al escribir código, la sencillez es un valor tan importante como lo son la corrección y la eficiencia".
Carlos Azaustre destacaba lo importante que era "no agobiarse" y recomendaba mucho "leer libros técnicos, seguir a gente del sector y preguntar siempre cualquier duda", algo desde luego importante y que ha favorecido el auge de comunidades ya de referencia como Stack Overflow, por ejemplo.
Es justo lo que apuntaba Fernando Cejas al incidir en "no frustrarse" y recordaba que para mucha gente "programar puede ser considerado un arte". Él recomendaba además "compartir sin miedo, ya que se aprende mucho del feedback que obtenemos. Y por supuesto siempre preguntar, preguntar y preguntar".
Paola García también hacía ese inciso: "no hay una única manera de programar bien. Huye de los gurús que te hacen sentir pequeños. Hay gente buena ahí fuera que comparte lo que sabe y que conoce que empezar es difícil porque tambien ellos lo pasaron en su día. Preguntales, preguntales sin miedo".
Txema Rodríguez recomendaba conocer "los patrones de diseño que se aplican a casi todos los lenguajes" y reforzar por tanto ese apartado base de los fundamentos de la programación. Eso es justo lo que también nos decía Jorge del Casar: "el consejo que daría a alguien que empieza sería que asiente las bases y no quiera correr mucho usando frameworks y cosas mágicas".
Brais Moure advertía como otros de sus colegas que para esto "se necesita dedicación y paciencia" y recordaba que él sigue aprendiendo todos los días y llevaba 15 años programando. Para él era también importante no frustrarse y solo es necesaria "la constancia suficiente para que la frustración se acabe transformando en diversión para dejar un mensaje final optimista: "te lo prometo, programar es fantástico".
Juan Gómez iba también en esa línea: "Lo primero, ¡bienvenido! Necesitamos a más gente valiente como tú", para luego destacar lo importante de es importante que programar te guste porque cuesta esfuerzo y hay que tener paciencia, pero el premio para él es evidente: "es una profesión maravillosa llenísima de satisfacción personal y logros".
También Jorge Ferreiro lo comentaba: "cuanto más programas, más te gusta, así que persevera y acepta que tendrás bloqueos y frustraciones. Eso forma parte del aprendizaje". Otra idea fundamental, añadía, "es que no tengas miedo a compartir tu código. Todos hemos escrito código patata en algún momento de nuestra vida, cuanto más enseñes y compartas más aprenderás".
Kikobeats coincidía con él y explicaba que "Al principio todo es muy nuevo y no entiendes nada, pero poco a poco te vas a hacer con ello". Él era el que nos recordaba que programar no tiene necesariamente que ver con las matemáticas ni con la física: No tienes que ser un cerebrito/a para poder programar", sobre todo, recordaba, con la cantidad de recursos online y gratis que existen.
Precisamente no rendirse y perseverar era otro de los consejos comunes entre nuestros protagonistas, y Paqui Calabria dejaba claro que con el aprendizaje siempre habrá retos que superar: " no eres idiota por haber estado media hora intentando encontrar ese fallo que ha resultado ser una letra mal puesta: nos pasa a todos, todo el rato".
Diana Aveces también incidía en esa importante reflexión. "No hay que abordarlo con miedo: mucha gente piensa que para programar hay que ser un genio y no es así. Hay que ser paciente, curioso y formarse. No son necesarias ni aptitudes especiales, ni una edad determinada, ni siquiera experiencia previa en tecnología. Hay muchísimas personas que se han "reciclado" y vienen de sectores que nada tienen que ver con programación. Yo fui una de ellas".
Imagen | Unsplash