Aprende a codificar: sabiduría y herramientas para el viaje
Publicado: 2022-03-11La programación es una gran habilidad para tener. Es enormemente gratificante tanto a nivel personal como profesional, brindándote la capacidad de construir, modificar e inventar. Puede abrir puertas a todo tipo de trayectorias profesionales con grandes beneficios, ya sea un sueldo respetable, libertad para trabajar cuando y donde quieras, o todo lo anterior.
No sorprende que cada vez más personas, de todo tipo de antecedentes, decidan aprender a programar. Pero, cada persona que aborda la tarea pronto se enfrenta a una realidad desagradable: aprender a programar es difícil.
Complicado y confuso, al principio, gran parte de la codificación no tiene ningún sentido. Contrariamente a las expectativas, el sentimiento de “No lo entiendo” puede persistir sin cesar durante mucho tiempo en el viaje, haciendo que los principiantes que alguna vez fueron brillantes se sientan desesperanzados, perdidos y listos para darse por vencidos.
La moraleja de la historia es esta: Esté preparado. El camino hacia el paraíso de los programadores es largo, y sin la mentalidad correcta al principio, puede perder rápidamente su atractivo.
En este artículo, intentaré brindarle alguna orientación sobre qué esperar en su viaje, cuál es la mejor manera de hacerlo y qué herramientas y recursos pueden resultarle útiles en el camino.
Que esperar
Tal vez sea obvio, pero lo primero que debe asegurarse de comprender es que la programación, en esencia, es una disciplina técnica. Las primeras habilidades que aprenda requerirán mucha "exactitud" y "corrección", y tratar de tomar atajos no lo llevará a ninguna parte. Tendrás que aprender al menos un poco de matemáticas, así como muchas cosas que pueden parecer matemáticas, como la lógica de procedimientos.
El punto es que aprender los fundamentos de la programación requiere mucho enfoque y práctica. Sin embargo, innumerables personas, tanto tecnológicas como no tecnológicas, han hecho este viaje antes que usted, así que no se desanime. Como veremos, hay una gran cantidad de recursos para personas como usted para ayudar a que el proceso sea lo más fácil posible.
La curva de aprendizaje para la programación es más empinada al principio. Hay una gran cantidad de "fundamentos" para absorber, incluidas las diversas partes de un lenguaje de programación (expresiones, variables, tipos de datos, operadores, bucles, declaraciones condicionales, funciones, clases) y las técnicas para comprender cuánto de su computadora. tiempo y espacio de memoria que usará su código (complejidad). Escribirá una gran cantidad de código que no funciona la primera vez, por lo que tendrá que aceptar la ruina de la existencia de cada programador: la depuración.
Una vez que haya aprendido a escribir código, podrá aprender a escribir código robusto . Hacer que el código sea eficiente, fácil de leer y comprender, y fácil de expandir, es un arte que está en constante evolución. Podrá comenzar a explorar diferentes filosofías de software y pasar de ser simplemente un "codificador" a ser un "arquitecto de software". Este también es un proceso que requiere mucho tiempo y práctica, pero cuanto mejor lo hagas, más oportunidades encontrarás para ti.
Cómo aprender a codificar
El viaje de cada persona al paraíso de la programación es diferente, pero hay algunos buenos principios de los que todos los viajeros pueden beneficiarse. Este es el proceso básico que recomiendo si recién está comenzando:
1. Elija su destino: elija un idioma, cualquier idioma
Si te tomas en serio aprender a codificar, el idioma que elijas realmente no importa mucho. La mayoría de los lenguajes de programación populares comparten los mismos conceptos fundamentales, y para cuando realmente haya dominado la programación en su primer lenguaje, elegir uno nuevo será más fácil que la primera vez. Si estás aprendiendo a través de un programa de grado universitario, o similar, tu idioma probablemente será elegido por ti.
En cualquier caso, a menos que sepa exactamente lo que quiere hacer a largo plazo, solo recomiendo considerar cinco idiomas, que logran un equilibrio entre la facilidad de aprendizaje, la versatilidad del conocimiento adquirido y una gran cantidad de trabajo a largo plazo. prospectos: Ruby , JavaScript , Python , C y Java .
Aquí hay algunas notas generales sobre cada uno, para ayudarlo a decidir:
Idiomas interpretados
Los idiomas interpretados son más fáciles de usar . Esto se debe a que su código fuente se puede ejecutar tan pronto como se escribe. Por el contrario, los lenguajes compilados requieren un paso adicional entre escribir y ejecutar el código.
Como resultado, los lenguajes interpretados permiten una codificación más rápida , pero no usan los recursos de la computadora de manera tan eficiente y es más fácil que los errores pasen desapercibidos . Son los más adecuados para aplicaciones donde el rendimiento no es una prioridad. Estos lenguajes son muy populares para el desarrollo web. De hecho, uno de ellos, JavaScript, es el único lenguaje que se puede ejecutar directamente en un navegador web, lo que contribuye a su rápido ascenso como uno de los lenguajes más lucrativos para conocer.
Idioma | ventajas | Contras | Comúnmente utilizado para |
Rubí |
|
|
|
JavaScript |
|
|
|
Pitón |
|
|
|
Idiomas compilados
Cuando se compila el código, se convierte de código legible por humanos a código de máquina optimizado antes de ejecutarse. El resultado se ejecuta mucho más rápido y de manera más eficiente que los lenguajes interpretados. El compilador que hace esto debe, como parte de su trabajo, asegurarse de que todo lo que se ha codificado “tenga sentido” y, como resultado, puede identificar y prevenir muchos tipos de errores a los que son susceptibles los lenguajes interpretados.
Por esta razón, es más difícil salirse con la suya con errores o mal código con estos lenguajes. Lo obligarán a obtener una comprensión más profunda de lo que realmente sucede "bajo el capó" y aprenderá mucho más sobre cómo funciona realmente una computadora . El precio es que estos idiomas requieren más mano de obra y, por lo general, son más difíciles de aprender para los principiantes.
Los lenguajes compilados se utilizan en aplicaciones que requieren rendimiento y confiabilidad, incluidas las aplicaciones integradas, que pueden ejecutarse en hardware con limitaciones de recursos estrictas, y aplicaciones grandes y complejas, donde incluso un pequeño error puede causar estragos.
Idioma | ventajas | Contras | Comúnmente utilizado para |
C |
|
|
|
Java |
|
|
|
HTML y CSS: no lenguajes de programación
Cabe señalar que HTML y CSS, que se utilizan en casi todas las páginas web que han existido, no son lenguajes de programación . Son lenguajes de presentación, utilizados para definir cómo debe verse algo y qué debe contener, pero no cómo debe comportarse. Sin embargo, pueden ser un buen lugar para comenzar, porque son mucho más fáciles de aprender y te enseñarán cómo escribir las cosas correctamente. Además, si planeas hacer algún desarrollo web, tendrás que aprenderlos en algún momento de todos modos.
2. Comience poco a poco
El aprendizaje lleva tiempo y hay mucho que absorber. Si intenta crear una aplicación completa el primer día, no funcionará. Para ahorrarse la frustración, comience resolviendo problemas pequeños y simples, y siga avanzando.
Por ejemplo, el primer programa que tradicionalmente se escribe cuando se aprende un nuevo idioma es el programa “Hello World”, que simplemente imprime las palabras “Hello World” en la pantalla. En la mayoría de los lenguajes, es casi imposible escribir un programa más simple, y claramente este programa tiene poco uso real. Sin embargo, todavía incorpora muchas de las partes fundamentales del idioma, por lo que es perfecto para introducirse en cómo se escribe el idioma.
Desde aquí, puede escribir algo que sume o reste algunos números, luego algo que tome la entrada del usuario. A continuación, puede obtener información sobre los condicionales, que son una forma de tomar decisiones, y los bucles, que realizan tareas repetitivas. Muy pronto, estará listo para crear su primer objeto y, en ese momento, podrá comenzar a experimentar con la creación de aplicaciones completas.
3. Sea paciente
Los conceptos básicos de la programación pueden ser bastante desafiantes. Muchos de ellos no son nada intuitivos si no sabes ya cómo funciona la computadora a un nivel más profundo.
Por ejemplo, cuando estaba empezando, descubrí que la depuración era un proceso exasperante; no se sentía como la programación. En lugar de escribir un nuevo código que hiciera cosas nuevas y geniales, pasaba un día entero revisando algo que había escrito, tratando de averiguar: "¿Cómo lo arruiné esta vez?" rascándome la cabeza y listo para rendirme. Eventualmente, descubría que había dejado un solo punto y coma en alguna parte, o que había usado una tabulación en lugar de un espacio, y para cuando mi código volviera a funcionar, sería el final del día. Me sentiría como un completo idiota; se sentiría como una pérdida de tiempo.

Este tipo de cosas te van a pasar y te volverán completamente loco. Por lo tanto, una de las claves del éxito es esta: sea paciente y sea fácil consigo mismo . Algunos de los mejores consejos sobre el tema recomiendan centrarse en el proceso, no en las metas. Si te enfocas en tu objetivo final ("Quiero construir un sitio web para fines de junio"), te desanimarás y te sentirás como un fracaso. Si se permite tomar el tiempo que sea necesario para progresar, tendrá más éxito.
4. Practica Practica Practica
Como cualquier habilidad, ser bueno en ella realmente se reduce a la práctica. ¡No hay nada como hacer algo, aprender a hacerlo! Incluso si solo puede dedicar unas pocas horas a la semana, si continúa practicando regularmente, algún día se dará cuenta de que sabe cómo programar. Eventualmente, desarrollará una intuición para las cosas, y algo que al principio tomó un día entero (como rastrear un error), ahora puede tomar solo unos segundos.
Cuando sienta que ha dominado más o menos los conceptos básicos de la programación, una excelente manera de practicar es comenzar su primer proyecto. Piense en una aplicación sencilla que le gustaría crear, como una lista de tareas pendientes o una calculadora (nuevamente, empiece poco a poco) y pruébela. Esto le enseñará cómo resolver problemas de arquitectura y diseño, y cómo construir diferentes piezas para que encajen en un todo funcional. Estas son las habilidades esenciales que te permitirán llamarte verdaderamente un programador.
Recursos
Dependiendo de sus objetivos, estilo de aprendizaje y medios, es posible que desee utilizar diferentes recursos a lo largo de su viaje. Para ayudarlo a determinar qué métodos son adecuados para usted, aquí hay un breve resumen de algunas de las herramientas que puede usar, ordenadas, aproximadamente, desde un aprendizaje más estructurado hasta un aprendizaje menos estructurado.
Aprendizaje estructurado
Esta es la categoría de opciones que brindan instructores, tareas, exámenes, calificaciones, plazos y consecuencias reales si no haces de tus estudios tu máxima prioridad. Estas son las opciones en las que tendrás que ir a clase o suspender el programa.
Título Universitario Formal
La opción más costosa pero, para muchos, la más valiosa, un título universitario formal le brindará la mejor base para una carrera próspera en programación y tecnología informática. Recibirá reconocimiento por sus logros en la forma de su título (una ventaja importante al ingresar al mercado profesional). Pero lo que es más importante, surgirá con una comprensión profunda y completa de todo lo relacionado con la informática, y sus habilidades para escribir software efectivo y de primera categoría lo reflejarán.
Estas son algunas de las cosas que puede esperar aprender en profundidad de cualquier programa universitario decente, y que pueden ser más difíciles de encontrar en otros lugares.
- Circuitos eléctricos : la física básica que subyace prácticamente en todo el hardware de la computadora.
- Circuitos lógicos digitales : cómo representar la verdad y las construcciones lógicas con circuitos.
- Microprocesadores y sistemas informáticos : cómo se combinan los circuitos lógicos para crear una máquina informática programable. ¿Qué está pasando en todos esos pequeños pines de metal y cables impresos?
- Sistemas operativos : cómo programar una computadora para que se administre, organice y proteja a sí misma, y permita la operación segura de múltiples aplicaciones.
- Bases de datos: cómo almacenar y copiar grandes cantidades de datos sin perderlos, corromperlos o hacer que sea imposible buscarlos.
- Redes : cómo los sistemas informáticos diferentes y no relacionados pueden comunicarse entre sí.
- Matemáticas Superiores - Incluyendo Cálculo y Álgebra Lineal. Esencial para cualquier carrera en campos avanzados o de vanguardia.
- Procesamiento de señales : cómo cruzar la frontera entre el mundo analógico y el digital, y viceversa.
- Métodos numéricos : para cuando los problemas del mundo real no encajan perfectamente en una computadora.
La escuela de informática e ingeniería te pateará el trasero, y tendrás que sacrificarte y dedicarte a completarla. Pero las recompensas valdrán la pena. Luché para obtener mi propio título, pero el día que lo recibí sigue siendo uno de los días de mayor orgullo de mi vida.
Campamentos de entrenamiento
Los llamados programas “bootcamp” han surgido para satisfacer las necesidades de aquellos que no tienen el tiempo o los recursos para obtener un título formal, pero están dispuestos a trabajar duro y al menos aprender lo mínimo necesario para comenzar una carrera de desarrollo de software. Tanto en costo como en compromiso requerido, se encuentran entre un título formal y las opciones autodirigidas que se analizan a continuación.
Los bootcamps suelen implicar de 8 a 12 semanas de estudio intenso y cuestan alrededor de 10 000 dólares estadounidenses. Cubren una gran cantidad de material en un corto período de tiempo, durante el cual tendrás que sacrificar la mayoría de las otras actividades. Pero prometen prepararlo para el desarrollo de software del mundo real y ponerlo en la vía rápida hacia una carrera en programación. Muchos bootcamps culminan en días de carrera o intentan colocarlo en un trabajo remunerado poco después de la graduación.
Los bootcamps son un fenómeno relativamente reciente y explosivo. Como tal, todavía es difícil medir su tasa de éxito, y muchos aún tienen que desarrollar un historial comprobado de colocación de graduados en puestos de trabajo. Dicho esto, solo se puede esperar que los programas disponibles mejoren a medida que esta nueva industria floreciente continúa creciendo. Mientras haga su investigación cuidadosamente, puede encontrar que esta es la opción perfecta para usted.
La mayoría de los bootcamps son programas locales, así que tendrás que ver qué hay disponible en tu ciudad. Si vives en una gran metrópolis, quizás puedas encontrar lo que buscas en esta lista, o en esta.
Aprendizaje semiestructurado
Cada día hay más y más recursos disponibles para aquellos que trabajan mejor con un elemento de estructura y orientación, pero que no tienen el tiempo o los recursos para comprometerse con un título formal o un programa intensivo. Estas opciones generalmente se ofrecen completamente en línea, ¡y muchas son completamente gratuitas! A medida que se ha hecho evidente la gran demanda de tales servicios, estas herramientas han crecido rápidamente en sofisticación y valor entregado. Los cursos de desarrollo de software naturalmente han impulsado gran parte de esta evolución, ya que aprender y enseñar software a través del software tiene beneficios obvios.
Cursos online masivos y abiertos (MOOC)
Los MOOC son un recurso increíble y están logrando grandes avances en la nivelación del campo de juego para una educación asequible y de calidad. Ofrecen gran parte de la estructura y orientación de las mejores clases universitarias formales del mundo, pero están disponibles en línea para cualquier persona, en cualquier lugar, que tenga una conexión a Internet. Muchos MOOC populares también son completamente gratuitos , aunque por un precio adicional (y el compromiso de estudiar), también se pueden obtener créditos formales para muchas clases, equivalentes a créditos universitarios.
Hay muchas plataformas MOOC de primer nivel disponibles en línea con cursos impartidos por profesores de las universidades más prestigiosas del mundo y plataformas comunitarias para que tú y tus compañeros de clase de todo el mundo puedan ayudarse mutuamente a aprender. Estos son algunos de los proveedores más conocidos:
- Coursera
- EdX
- audacia
Tenga en cuenta que, como se anuncia, estos cursos ofrecen cursos de nivel universitario, ¡así que es mejor que esté preparado para trabajar duro para superarlos!
Sitios web con tutoriales guiados
Si le gusta la estructura y la orientación, pero no le gustan los plazos, existen muchas plataformas en línea excelentes que brindan capacitación automatizada paso a paso a través de una amplia gama de métodos de entrega. Algunos están impulsados por tutoriales en video, otros por texto. Muchos incluyen editores de código interactivos para que practiques en tu navegador. Estos le brindan una gran flexibilidad para aprender a su propio ritmo, ya sea media hora de práctica al final de cada día o un maratón de 10 horas el fin de semana.
Si bien muchas de estas plataformas requieren una suscripción paga para acceder a todo el contenido, la mayoría ofrece pruebas gratuitas para que pueda comenzar de inmediato y decidir por sí mismo si funciona para usted.
- Academia Kahn
- Udemy
- codecademia
- código vengadores
- Escuela de código
- Casa del árbol
- lynda
- Pluralsight
Esta es solo una lista corta, ¡así que busque y vea qué más hay por ahí!
Aprendizaje no estructurado
Para aquellos que quieren encontrar su propio camino o mejorar sus conocimientos en su tiempo libre, sin la presión de lecciones estructuradas, las siguientes herramientas brindan un enfoque autodirigido. Incluso si va a adoptar uno de los enfoques anteriores, puede encontrar muchos de estos recursos útiles para complementar su aprendizaje o proporcionar una plataforma para practicar.
Sitios web de perforación
Si su objetivo es solo practicar la resolución de problemas de programación, Internet, una vez más, lo tiene cubierto. Los siguientes sitios ofrecen conjuntos cada vez mayores de desafíos de codificación, junto con interfaces de codificación interactivas, para resolver problemas, calificar sus soluciones sobre la marcha y comparar cómo se comparan con las soluciones de otros usuarios.
- Ejercicio.io
- CheckiO
- CodeChef
- CódigoEval
- guerras de código
- Codilidad
- HackerRank
Vídeos
Aprender a programar de forma pasiva tiene una practicidad limitada, pero si desea absorber algunos de los conceptos más profundos, entre reuniones o con una copa de vino por la noche, estas series de conferencias son algunas de las mejores que existen. Si te gusta este tipo de cosas, mira qué más hay disponible en YouTube y en la web.
- OpenCourseWare del MIT
- Serie de conferencias de la Universidad de Stanford
Libros
Incluso con todas las maravillas de la tecnología disponible, para muchas personas todavía no hay nada como un buen libro para sumergirse y obtener una comprensión profunda de un tema. Si le gusta aprender de esta manera, consulte la Lista de los mejores libros de programación gratuitos de Toptal.
Para concluir
Aprender a codificar es un viaje muy personal. Todos comienzan con diferentes recursos y diferentes objetivos y se encuentran con diferentes desafíos y oportunidades en el camino. No te preocupes por lo que otros están haciendo o cómo llegaron allí. Incluso para los programadores experimentados, el viaje en sí nunca termina, ya que constantemente hay cosas nuevas que aprender.
Entonces, mi consejo para ti es, ¡tómatelo con calma y disfruta del viaje! Hay mucho por explorar y te espera un mundo de maravillas. Un viaje de mil millas comienza con un solo paso. Aquí hay algunos buenos zapatos. ¡Buena suerte!