Albert Einstein
Programacion

5 Cosas que debe aprender un programador de Albert Einstein

Compártelo

Einstein fue un genio y uno de los mejores científicos que jamás haya existido. En 1905, publicó cuatro artículos científicos que sentaron las bases de la física moderna, cambiando los puntos de vista sobre el espacio, el tiempo, la masa y la energía. Después de hacerse famoso con estos cuatro artículos, ganó un Premio Nobel en 1921 por su explicación del fenómeno conocido como efecto fotoeléctrico.

Todos podemos aprender de la vida de Einstein, especialmente sus formas de trabajar y aprender. Aunque no todos seamos genios del calibre de Einstein, todavía hay algunos patrones que pueden ser emulados en múltiples campos de estudio, especialmente en el desarrollo de software.

El éxito deja pistas y revela cómo podemos aprender de cualquier persona. Personas como Michael Jordan o Arnold Schwarzenegger no son desarrolladores de software, pero su práctica y actitudes deliberadas representan algunos patrones replicables que pueden ser implementados tanto por desarrolladores de software como por personas de otras profesiones.

Las personas que son lo mejor de lo mejor en lo que hacen generalmente se diferencian por sus hábitos inusuales, como centrarse en las cosas correctas y practicar obsesivamente su oficio cuando nadie más está mirando.

No solo superan a sus compañeros y otras personas fuera de su grupo de compañeros, también trabajan de manera más eficiente y consideran el aprendizaje como una forma de vida. Como el entrenador de rendimiento más famoso del mundo, Tony Robbins, dice: “Creo que si tienes hambre de aprender, estás hambriento de crecer, tienes hambre de dominar las cosas. Si no te conformas con menos de lo que puedes ser o hacer, entonces puedes superar a los demás “.

Aprendiendo a aprender

Se dice que Einstein dijo que “la locura hace lo mismo una y otra vez y espera resultados diferentes”. Si desea lograr resultados diferentes, debe hacer cosas diferentes de las que otras personas están haciendo. Cuando aprendes como otros, obtendrás los mismos resultados que ellos. Debes estar dispuesto a profundizar en un tema y aprender las cosas de manera diferente para ser como Einstein.

Hace unas décadas, un estudiante de física logró un puntaje por lo demás perfecto en un examen, pero el profesor le calificó mal en una pregunta que le preguntó cómo medir la altura de un edificio con un barómetro.

El estudiante escribió, “Ve a la parte superior del edificio. Suelta el barómetro y cuenta los segundos hasta que se estrelle en la acera de abajo. Luego usa la fórmula de aceleración por gravedad para determinar la altura del edificio “.

La respuesta esperada era usar presión de aire como una herramienta para medir la altura, haciendo referencia a un barómetro. Cuando el estudiante argumentó que había encontrado una solución correcta de una manera poco convencional, el profesor hizo un trato con el estudiante: si el estudiante podía responder correctamente la misma pregunta utilizando otro enfoque, el profesor le otorgaría una calificación completa de la pregunta.

El estudiante inmediatamente se le ocurrió otra respuesta. Dijo que usaría el barómetro para golpear la puerta del propietario del edificio. Cuando el propietario abrió la puerta, le preguntó: “¿Qué tan alto es este edificio?”

El profesor desafió al estudiante a encontrar otra forma de responder la pregunta, por lo que el estudiante recomendó atar una cuerda larga al barómetro y medir la longitud del hilo desde la parte superior del edificio. O balanceando la cuerda como un péndulo e infiriendo la altura por el movimiento que crea.

El profesor reconoció que todas estas respuestas desde diferentes ángulos eran correctas y le otorgó al alumno las calificaciones completas.

Según el libro Learn More, Study Less, este joven estudiante fue Niels Bohr, que ganó un Premio Nobel de Física en 1922 por descubrir la naturaleza de los electrones dentro de los átomos. Pero no aprendió todos estos enfoques simplemente asistiendo a sus clases de física.

Tienes que ser realmente apasionado por algo para llegar a ese nivel profundo de aprendizaje, entender el tema y proponer tantas respuestas para la misma pregunta. Además, también debes aprender de forma diferente a la mayoría de las demás personas.

La mayoría de los estudiantes estudian para un examen porque quieren obtener una buena calificación. No aprenden más de lo que cubrirá el examen final, y mucho menos pasan más tiempo estudiando algo relacionado con el tema después de la final.

Del mismo modo, muchos desarrolladores de software tienden a usar Google para resolver un problema, de modo que puedan corregir un error lo más rápido posible. Su principal preocupación parece ser productiva frente a sus gerentes. No dedican tiempo a entender la solución a un nivel más profundo ni a encontrar la forma más eficiente de resolver un problema. Están lo suficientemente satisfechos de que la tarea se cerró en Jira.

Por supuesto, puede haber casos en que estés bajo presión y tengas que arreglar un error crítico rápidamente, ya que la fecha límite se acerca rápidamente. Sin embargo, no debe permitir que esos pocos casos lo desvíen del aprendizaje continuo.

Ahora que sabemos cómo el aprendizaje es fundamental para el éxito, veamos cómo podemos convertirnos en mejores desarrolladores de software aprendiendo mejor.

1. Aprende los fundamentos de la informática

Según la biografía de Albert Einstein escrita por Walter Isaacson, antes de que Einstein tuviera 15 años, había dominado el cálculo diferencial e integral porque consideraba las matemáticas como una forma de entender la naturaleza. Estos conceptos fundamentales más adelante resultaron útiles en su trabajo en el campo de la física.

La mayoría de las personas tienden a evitar aprender los fundamentos, ya que pueden no ver los frutos de su trabajo en el corto plazo. Es más satisfactorio decirle a los demás que tiene su aplicación lista para descargar en Play Store en lugar de informarles que todavía se está enfocando en lo básico.

Se diferente de esas personas. Aprenda los fundamentos de la ciencia de la computación, más específicamente, las estructuras de datos y los algoritmos, y apréndalos muy bien. Tiene que ser capaz de implementar algunos de los algoritmos y estructuras de datos más comúnmente utilizados sin usar un libro de texto.

Cuando finalmente los comprenda en un nivel profundo, habrá adquirido la capacidad de resolver problemas del mundo real en el desarrollo de software de una manera intuitiva, lo que puede ser un enfoque mucho más rápido y más eficiente.

Como menciona Isaacson, Einstein creía que “la intuición no es más que el resultado de una experiencia intelectual anterior”. En el desarrollo de software, esa experiencia intelectual previa requiere una sólida base en lo básico.

Como lo describe el desarrollador del Kernel Linux, Linus Torvalds, “De hecho, afirmaré que la diferencia entre un programador malo y uno bueno es si considera que su código o sus estructuras de datos son más importantes. Los malos programadores se preocupan por el código. Los buenos programadores se preocupan por las estructuras de datos y sus relaciones “.

Las grandes empresas tecnológicas como Microsoft, Google o Amazon reclutan nuevos desarrolladores de software desafiándolos con duras entrevistas técnicas que giran principalmente en torno a conceptos fundamentales.

En otras palabras, no importa qué tipo de lenguaje de programación use, su código es solo la forma de expresar los algoritmos y las estructuras de datos debajo de la superficie.

2. Aprenda resolviendo problemas, no solo mirando pasivamente los tutoriales

Einstein a menudo se saltó clases en la universidad. Isaacson lo cita diciendo: “Jugué mucho y estudié a los maestros de física teórica con un celo santo en casa”. No estaba interesado ni obligado a asistir a sus clases. Encontró algo más atractivo y gratificante: usó su tiempo para concentrarse en resolver problemas difíciles y jugar obsesivamente con ideas y ecuaciones por su cuenta.

Hay muchos libros y tutoriales que pueden enseñarle programación. Pero a menudo solo te dan una introducción superficial a los nuevos conceptos, mientras que la comprensión y el aprendizaje más profundos se realizan mientras se resuelven problemas del mundo real usando esos conceptos.

No caiga en la falsa impresión de que ha aprendido algo observando pasivamente a alguien desarrollando rápidamente una aplicación web. No pretendas que entiendes algo cuando aún no lo has aprendido realmente. Como escribió Einstein, “cualquier hombre que lea demasiado y utilice su propio cerebro demasiado poco, caerá en hábitos perezosos de pensamiento”.

En cambio, debe participar activamente en la resolución de problemas para aprender nuevos conceptos. Puede encontrar problemas técnicos que puedan poner a prueba su comprensión de los fundamentos de los jueces en línea, tales como LeetCode, Codility, HackerRank, CodeChef, CodeForces, etc.

También puede contribuir con proyectos de código abierto en GitHub solucionando errores u optimizando las funcionalidades existentes con implementaciones más eficientes. Trabajar en proyectos de otras personas puede ayudarlo a aprender de sus implementaciones y enfoques y desafiarlo a encontrar nuevas soluciones.

Este tipo de trabajo involucra activamente a su cerebro a medida que encuentra nuevos enfoques para las soluciones existentes, que como resultado lo ayudan a aprender y retener la información a largo plazo.

Si ya tiene un puesto de tiempo completo, o incluso si es un contratista independiente, debe buscar constantemente tareas desafiantes para su nivel actual de experiencia. No tenga miedo de pedirle a su gerente de proyecto que se los asigne. En lugar de rehuir estas oportunidades, sea entusiasta y sienta el privilegio de que le paguen por aprender a hacer algo que no sabía antes. Como dijo Einstein, “el crecimiento intelectual debería comenzar al nacer y cesar solo cuando muera”.

Además, no dude en comenzar un proyecto paralelo. No tiene que esperar cinco años para aprobar antes de crear su propia aplicación. Puede comenzar a desarrollar una pequeña aplicación y planificar ampliarla más a medida que aprende más.

Publique su código fuente en GitHub e intente solicitar comentarios de otros programadores contactándolos por correo electrónico o en comunidades de programación.

3. Mejora tu comprensión escribiendo pruebas

El tío de Einstein, Jakob, desafió a su sobrino a probar el Teorema de Pitágoras a una edad temprana. “Después de mucho esfuerzo, logré ‘probar’ este teorema sobre la base de la similitud de triángulos”, recordó Einstein.

Einstein hizo un gran esfuerzo para construir su comprensión a través de pruebas. Como resultado, no solo fue capaz de aprender cosas de manera integral, sino que también tuvo la suficiente confianza para probar otras cosas por sí mismo.

Probar teoremas es análogo a escribir pruebas en programación: necesita probar que una característica de un sitio web realmente funciona al crear casos de prueba, y luego esperar que se realice una funcionalidad particular o que el código fuente produzca un resultado. Las pruebas son un enfoque alternativo para aprender algo nuevo, ya que requieren más tiempo y esfuerzo que mirar pasivamente un tutorial.

Algunos desarrolladores nuevos temen ingresar al campo de las pruebas, pero representa una de las maneras más efectivas de comprender el flujo de ejecución y las funcionalidades de un software. Puede ser especialmente útil para las personas que son nuevas en un proyecto y desean aprender la estructura y el funcionamiento del mismo.

Si desea aprender cómo funciona un marco de código abierto particular, puede mejorar su comprensión al escribir pruebas. De esta manera, no solo comprenderá mucho mejor ese marco, sino que sus pruebas también pueden contribuir al proyecto.

En los casos en que está trabajando en un proyecto grande y algo no está claro para usted, puede dividir el flujo de ejecución en varios componentes y escribir pruebas para cada uno de ellos.

Las pruebas de escritura no solo ayudarán a su comprensión, sino que también le permitirán detectar posibles errores y, como resultado, contribuir al proyecto en general.

4. Concéntrate profundamente

Vivimos en una era de demasiadas distracciones. Desde el momento en que nos levantamos por la mañana, alcanzamos nuestro teléfono. Ver textos. Leer correos electrónicos En promedio, una persona participa en 76 sesiones telefónicas separadas por día.

Obviamente, Einstein no tenía un teléfono celular, pero tenía sus propios tipos de distracciones y tenía formas de tratar con ellos de las que podemos aprender. Su hijo informó que “ni siquiera el llanto más fuerte del bebé perturbó a mi padre”, y agregó: “Él podría continuar con su trabajo completamente impermeable al ruido”.

Su habilidad para concentrarse profundamente y trabajar durante largos períodos de tiempo sin interrupción lo ayudó a lograr avances históricos. “Pude hacer un día completo de trabajo en solo dos o tres horas. El resto del día, resolví mis propias ideas “, dice Einstein de administrar su tiempo en su trabajo no estimulante intelectualmente en la oficina de patentes de Berna, que le dio tiempo para enfocarse en compromisos más desafiantes.

Los desarrolladores de software pueden aprender de Einstein y practicar el bloqueo de las distracciones. ¡No pretenda que puede enfocarse con el mismo nivel de intensidad luego de innumerables sesiones ‘simplemente revisando’ los mensajes de Facebook!

Tim Ferriss, autor del libro best-seller, Tool of Titans, escribe cómo “La tarea individual es una superpotencia”. Y agrega: “En una economía digital, donde la distracción es una moneda, si puedes concentrarte en una sola cosa para tres a cinco horas a la vez y bloquear todas las distracciones, tiene una gran ventaja, puede hacer un trabajo profundo y conectar puntos que no están conectados “.

Intente hacer un compromiso con su gerente acerca de reservar ciertas partes del día para la comunicación, e invierta las otras partes en tareas valiosas y cognitivamente exigentes, como aprender nuevos conceptos o tecnologías y escribir códigos.

Cuando somos capaces de distanciarnos de esas interrupciones y aplicar buenas habilidades de gestión del tiempo, aumentamos las posibilidades de profundizar en nuestro aprendizaje, y como resultado, nos volvemos mucho más productivos.

5. Sé curioso y ama aprender

El desarrollo de software es una de las profesiones más demandadas de nuestro tiempo. Constantemente hay nuevas ofertas de trabajo, que atraen tanto a jóvenes como a personas que ya están empleadas de una amplia gama de profesiones. Saben que puede obtener un salario realmente bueno trabajando como desarrollador de software y, en consecuencia, comienzan sus carreras con grandes ambiciones.

Incluso si obtiene un trabajo en el desarrollo de software, sin embargo, solo puede ser excelente si ama el aprendizaje y la programación. Es una de las pocas profesiones en las que constantemente debe aprender algo nuevo.

No son solo los conceptos existentes que necesita saber. Debe adaptarse a la constante invención de nuevas tecnologías y lenguajes de programación. Debes adaptarte a los cambios en el mercado y aprender qué cosas nuevas se consideran valiosas actualmente.

Tendrás que aprender mucho constantemente. Para mantener su cerebro constantemente involucrado en el aprendizaje, tendrá que ser curioso y mantenerse humilde.

A menudo, los programadores se emplean sobre la base de sus conocimientos existentes y comienzan a pensar que ya no necesitan aprender cosas nuevas. Sin embargo, solo podrá sobresalir como desarrollador de software si tiene curiosidad y le encanta aprender, ya que la necesidad de aprender nunca cesa.

En noviembre de 1915, después de escribir solo dos páginas de lo que él llamaba “una de las obras más bellas de mi vida”, Einstein envió una carta a su hijo Hans Albert, de 11 años. Elogió a su hijo por sus esfuerzos de aprendizaje y dijo: “esa es la forma de aprender más … cuando haces algo con tanto placer que no te das cuenta de que pasa el tiempo”.

“La curiosidad tiene su propio motivo para existir”, explica Einstein. “Uno no puede evitar maravillarse cuando uno contempla los misterios de la eternidad, de la vida, de la maravillosa estructura de la realidad”.

Sea curioso sobre cómo funciona y está estructurado un marco. Cuando aprendes algo completamente, obtienes una imagen clara de sus mecanismos y funcionalidades. No acepte simplemente que Rails es un gran marco para el desarrollo rápido de aplicaciones web: aprenda cómo funciona Rails, detrás de las cortinas. Además, considere la posibilidad de contribuir y mejorarlo, ya que es de código abierto.

Tenga cuidado, también, para no obsesionarse con el dinero. Por supuesto, todos necesitamos dinero para pagar nuestras cuentas y comprar alimentos para nosotros y / o nuestra familia, pero si desea sobresalir en el desarrollo de software, debe cultivar una pasión por aprender y desarrollar por el bien de eso. Debe amar la programación y sentirse agradecido de que tenga la oportunidad de impactar positivamente en la vida de millones de personas con las líneas de código que usted escribe.

Einstein creía que “el amor es un mejor maestro que un sentido del deber”. Lo que podemos aprender de esto como desarrolladores de software es la importancia de no solo trabajar por un buen salario, sino porque amamos el aprendizaje y nuestro trabajo en general. , y tienen una curiosidad e impulso intrínsecos que nos mantienen ocupados después del trabajo o durante los fines de semana, cuando nuestro jefe no está mirando.
Recuerde siempre: la programación es una vida de aprendizaje

Además de sus metodologías de aprendizaje, Einstein es una de las figuras más influyentes en física. Su trabajo ha ayudado a diversas disciplinas, desde la producción de energía nuclear, a la sincronización de satélites GPS a computadoras, a muchos productos de consumo cotidianos.

Su genio y sus logros pueden estar fuera del alcance de la mayoría de nosotros, pero vale la pena emular su ética de trabajo, humildad, curiosidad y tenacidad.

Si quieres tener éxito, puedes ahorrarte tiempo replicando los comportamientos de otras personas exitosas. Aunque Einstein no fue un programador, él en vivo revela algunos patrones inspiradores que todos podemos aprender y aplicar en el campo del desarrollo de software.

Einstein puede servir como estímulo para enfocarse en aprender los fundamentos, aprender al resolver problemas y escribir pruebas para diferentes proyectos, concentrarse profundamente y, lo más importante, amar el aprendizaje. Si queremos tener éxito en nuestras carreras, debemos apasionarnos por aprender y reconocerlo como una parte crucial de nuestras vidas.

Compártelo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *