Programador: los 10 defectos que debe mejorar
A menudo veo preguntas en Reddit o Quora en la línea de “¿cómo sé si tendré éxito como programador?”. Cuando alguien está considerando un cambio de carrera, o está interesado en el desarrollo de software y tiene curiosidad sobre lo que se necesita, inevitablemente surge la cuestión de la programación.
De hecho, creo que esta es una barrera importante para la entrada en la mente de las personas cuando no tienen ninguna capacitación formal en informática. Es natural pensar que si no es bueno programando, entonces su deseo no servirá para nada. Es como si quisieras ser actor y se preguntara si es bueno actuando.
Como educador que enseña desarrollo web completo, Jonathan Bluks ha enseñado a muchos “programadores por primera vez” y según cuenta, rara vez he encontrado un estudiante que no pueda aprender a programar. Él lo ve como una habilidad humana básica, al igual que la lectura, la escritura y la aritmética. También cree que cualquiera puede hacerlo y que forma parte de nuestras capacidades humanas, pero es algo que requere ser aprendido.
Durante los últimos dos años de enseñanza, Bulks dice haber sido testigo de la lucha de varios estudiantes en el proceso y algunos temas comunes que surgen en sus luchas. Si mira la lista continuación y las ve en usted mismo, puede tener la certeza de que la programación no es lo suyo y probablemente debería encontrar algo más que hacer con su tiempo. Pero, si todavía está comprometido con su objetivo de convertirse en desarrollador, puede enfrentar fácilmente estos problemas y cambios.
La programación es una habilidad humana básica, al igual que la lectura, la escritura y la aritmética. Cualquiera puede aprender a programar con tiempo y esfuerzo.
La siguiente lista lo ayudará a saber si la programación no para usted y qué puede hacer al respecto si desea cambiar.
1 | Falta de curiosidad
Si carece de curiosidad sobre las computadoras y cómo funciona la tecnología, nunca tendrá éxito como programador.
Un requisito fundamental para el aprendizaje es un interés activo en lo que está aprendiendo. Si no posee una mente que tenga curiosidad sobre la tecnología, no tendrá la energía necesaria para persistir en el aprendizaje del conocimiento amplio y profundo requerido para ser un programador exitoso.
En contraste, el mundo de la tecnología es como un enorme océano de dominios interesantes, ideas interconectadas y posibilidades que pueden excitar la imaginación. Se necesita una motivación interna inherente para querer sumergirse y descubrir todo lo que pueda.
- Encuentra tu curiosidad: pregúntese si la programación realmente le interesa. Si su respuesta honesta es que no, busque algo que le interese. Ahorre tiempo y energía. Pero si su respuesta es “sí”, entonces busque algo nuevo que no haya notado antes, reconozca el vasto océano y sumérjase un poco más.
2 | Falta de autonomía e ingenio
Si no desarrolla la capacidad de resolver problemas por sí mismo, nunca tendrá éxito como programador.
Sin duda, para ser un desarrollador exitoso, debe confiar en su propia capacidad de aprender. Esta es en realidad una habilidad vital fundamental: si tiene más de 18 años, nadie está obligado a enseñarle nada. Esa es la realidad. Depende de usted encontrar la información y la ayuda que necesita para aprender lo que es importante para usted.
En el mundo del desarrollo, toda la información que necesita se encuentra en ese lugar mágico anteriormente conocido como la Supercarretera de la Información. Esta biblioteca masiva tiene una gran puerta: Google. Aprender que simplemente puede escribir lo que quiera en Google y obtener la información que necesita es el primer obstáculo que debe cruzar cuando desea aprender las habilidades necesarias para estar en tecnología.
Además de ser un buen buscador de Google, todos los lenguajes de programación tienen documentación y especificaciones que son muy explícitas sobre cómo funciona el lenguaje. Es como usar un diccionario: cuando ves una palabra que no reconoces, la buscas. La forma más rápida y confiable de desarrollar su habilidad como programador es simplemente leer la documentación. Está literalmente todo ahí.
- Use los recursos: reconozca que todas las respuestas que necesita realmente están disponibles. Cuando tenga una pregunta, fuerce a buscarla en Google antes de pedirle la respuesta a otra persona y verifique la documentación. Ahorre el tiempo de los demás para cuando haya intentado y realmente no haya podido encontrar la respuesta que necesita.
3 | Falta de persistencia ante un problema
Si se rinde fácilmente ante los problemas, nunca será exitoso como programador.
La esencia de la programación es resolver problemas. ¡Esa es la razón por la que se inventaron las computadoras! Cada vez que comience a trabajar en un programa, se encontrará con toda una “pila” de problemas. Y una vez que resuelve un problema, casi siempre hay otro problema justo detrás de él. Estás progresando, pero siempre hay nuevos problemas que enfrentar.
Enfrentar esa pila de problemas puede ser desalentador y desalentador. Si siente que las cosas deberían “simplemente funcionar”, entonces no tendrá la energía para persistir a medida que los problemas continúen y poco a poco disminuyan su resolución emocional. Es literalmente su trabajo descubrir por qué las cosas no funcionan.
Según la experiencia de Bulks en clase, generalmente hay uno o dos estudiantes por clase que parecen tener la habilidad de encontrar más problemas que otros estudiantes, a menudo problemas bastante aleatorios y oscuros. Él le recuerda a sus alumnos que cuanto más problemas enfrentan por adelantado, aumenta la posibilidad de aprender de manera más profunda. Si pueden comprender estos problemas, rápidamente descubrirán que tienen más confianza porque han enfrentado y resuelto más problemas que el estudiante promedio.
- Aceptación del paciente: debe reconocer que los problemas vienen con el territorio y no son problemas, sino desafíos. Cada desafío que enfrenta y supera le brinda una comprensión más profunda y una mejor capacidad para enfrentar nuevos desafíos y resolver rápidamente los viejos.
4 | Sin sensación de éxito al superar un problema.
Si no siente una sensación de emoción y logro después de resolver un problema, nunca tendrá éxito como programador.
Relacionado con el problema anterior de darse por vencido con demasiada facilidad es la falta de “buenos sentimientos” una vez que haya resuelto con éxito un problema. Cuando la reparación de errores y problemas se convierte en una cinta de correr que parece que nunca termina, pierde contacto con la emoción que surge al superar un problema.
En realidad, hay un golpe de dopamina que necesitas cuando superas un problema. Esto es similar a la experiencia de completar un nivel en un videojuego o resolver un desafío como un crucigrama o sudoku. Todos sabemos que existe una buena sensación de persistir en un desafío y finalmente ganar al final. Pero si ha perdido la capacidad de sentir esos sentimientos, o si nunca se preocupó realmente en primer lugar, no podrá experimentar la alegría que proviene de la programación. Si ve la programación como una rutina en la que solo desea obtener un resultado lo más fácil posible, nunca será realmente un programador exitoso.
- Celebre sus victorias: cada vez que resuelva un problema con el que luchó, no importa cuán pequeño sea, siempre se enorgullece de su logro, tome un descanso y felicítese por el trabajo bien hecho. Deje que la sensación de éxito se hunda y lo energice para el próximo problema que enfrenta.
5 | Impaciente por aprender y comprender
Si está impaciente por aprender y espera dominar todo de manera rápida y sin esfuerzo, nunca tendrá éxito en la programación.
Como humanos somos criaturas limitadas. A pesar de que nuestro mundo se mueve cada vez más rápido, y las computadoras son una gran causa de eso, solo podemos movernos tan rápido como podamos. Nuestros cerebros trabajan a cierta velocidad, y dependiendo de nuestro pasado, nuestras creencias, nuestros estados emocionales, nuestra salud … todos aprenderemos e integraremos información a diferentes velocidades.
El mundo de la tecnología es como un vasto océano. Nunca llegarás al final, nunca llegarás a un punto en el que seas un maestro sin nada más que aprender. Si se deja abrumar, siempre sentirá la presión de “ponerse al día” y sentir que nunca sabe lo suficiente. Si no puede aceptar lo que sabe y luego aprender un poco más, sentirá que no está llegando a ninguna parte y se dará por vencido.
En cambio, debe disfrutar el viaje de aprendizaje por sí mismo. Cada poquito de conocimiento que adquieras, o nuevas habilidades que adquieras, debe emocionarte. Al igual que resolver problemas, debe permitirse sentir el orgullo de reconocer que ha dado un paso adelante, incluso si es pequeño.
- Reconozca su progreso: hay mucho que aprender y el viaje de la programación nunca termina. Pero el conocimiento es acumulativo, así que siéntete orgulloso de lo que sabes y confía en que cada esfuerzo que realices en tu aprendizaje creará una base sólida de conocimiento para donde sea que te lleve tu carrera.
6 | Aburrirse / cansarse de pensar
Si es vago en su pensamiento y ve el pensamiento concentrado y enfocado como una tarea, nunca será realmente exitoso en la programación.
La programación es una actividad de pensamiento. Como humanos, somos muy buenos para pensar, pero la realidad es que, aunque naturalmente pasamos todo el día haciéndolo, somos flojos en nuestro pensamiento. La capacidad de mantener un esfuerzo concentrado y enfocado en un solo problema durante un período de tiempo es difícil si no está acostumbrado.
Los síntomas de esto incluyen mirar fijamente la pantalla en blanco, sentir que una nube desciende sobre tus pensamientos, postergar un problema, pasar de una pestaña a otra del navegador y escanear desesperadamente StackOverflow en busca de “una respuesta”. Estas son señales de que ha alcanzado una limitación mental y necesita encontrar un camino.
Durante la programación, se cansará y al pensar literalmente quemará energía física al igual que ejercitar nuestros cuerpos. Cuando no estás acostumbrado a ejercer la energía mental necesaria, puede ser difícil mantenerse concentrado. Pero es como ir al gimnasio, cuanto más lo hagas, más fuerte se volverá.
- Su mente es un músculo: confía en que su cerebro es como un músculo; a medida que lo usas, se vuelve mejor y más eficiente en su pensamiento. Al juntar piezas y desarrollar conceptos mentales, se vuelve mucho más fácil descubrir soluciones.
7 | Incapacidad para pensar por ti mismo
Si espera que otros piensen por usted y no está dispuesto a mirar los detalles de su propia situación, nunca será un programador verdaderamente exitoso.
Cuando está aprendiendo algo nuevo, es fácil sentir que le falta el conocimiento y la experiencia para tener sus propias opiniones. Tomar la iniciativa o hacer / decir algo incorrecto parece arriesgado.
Hay un miedo inherente que todos tenemos al estar equivocados. Cuando ese miedo a equivocarse inhibe su exploración y curiosidad, reprime la capacidad de desarrollar conocimiento verdadero, conocimiento que se obtiene de la experiencia y el “fracaso”. Cuando necesita confiar en la opinión del “gurú”, un blogger popular, una mejor práctica o la respuesta del “libro de texto”, entonces no ha integrado realmente un conocimiento práctico de programación.
Debe desarrollar sus propias opiniones sobre lo que funciona y lo que no. Debe comprender por qué cree que su solución funciona y cuáles son los beneficios. Necesita desarrollar una perspectiva matizada que vaya más allá de lo obvio. Necesita poder “discutir” su lado, y luego, si cambia, puede ser dueño de la nueva perspectiva que ha adquirido.
- Piense por sí mismo: a través de tu experiencia y habilidades de pensamiento crítico, desarrolla tus propias perspectivas. Haga conjeturas razonables, tome una posición y esté dispuesto a cambiar a medida que salga a la luz nueva información.
8 | Pensamiento rígido, estrecho y / o desorganizado.
Si su pensamiento es rígido y tiene dificultades para mantener su código organizado, y por extensión sus pensamientos organizados y enfocados, nunca tendrá éxito en la programación.
Hay dos extremos que a veces veo en los estudiantes. El primero es un enfoque rígido y estrecho del pensamiento. Esta actitud rechaza la ayuda y, a pesar de los comentarios, no cambia. Las cosas se ven solo desde una perspectiva, y las sugerencias se ignoran.
Un segundo extremo que veo es el pensamiento desorganizado. Los estudiantes parecen hacer las cosas más complicadas de lo necesario, su código es desordenado y difícil de seguir. Piensan demasiado en los problemas y escriben 100 líneas de código, cuando 10 habrían sido suficientes.
Cuando se combinan estas dos mentalidades, el resultado es un enfoque tenso a la programación, como un enfoque de fuerza bruta que conduce a capas y capas de soluciones y “hacks”. Lo que se requiere es la capacidad de volver sobre la solución, reevaluar, renunciar al enfoque inicial y reorganizarse.
No poder ver otras posibilidades o recibir comentarios inhibe la capacidad de crecer y mejorar. Estar desorganizado te ralentiza y evita que veas patrones que de otra manera serían obvios. Y la calidad general de su trabajo disminuye.
- Autorreflexión: debe dar un paso atrás y ver la imagen más amplia de cómo está abordando las cosas. ¿Cómo puede hacer esto mejor? ¿Hay algo que pueda hacer para facilitarle la vida? ¿Qué le falta que pueda ayudarle?
9 | Necesitar la respuesta “correcta” en lugar de reconocer un espectro de respuestas “buenas” y “malas”
Si considera que el objetivo final de la programación es encontrar la solución correcta, en lugar de un espectro de soluciones, nunca tendrá éxito como programador.
Al comenzar a aprender las habilidades o la programación, los estudiantes a menudo quieren saber si lo que han hecho es “correcto”. La respuesta siempre es “depende”.
Computer Science es una ciencia de evaluación de compensaciones. Dados diferentes conjuntos de circunstancias, ¿cuál sería el mejor camino? Todo depende de las circunstancias y objetivos. Cuando ve la programación como una prueba con una respuesta correcta o incorrecta, está perdiendo de vista el panorama general y abandonando su creatividad. Cualquier respuesta puede ser “correcta” si puede justificarla dadas las circunstancias.
La realidad es que la programación es más como escribir poemas o cuentos (o potencialmente novelas si los programas son grandes). Hay una estética y belleza que se puede ver en su código, y a veces solo usted y otros programadores pueden reconocerlo. Las razones por las que decidió su solución y la forma en que concibió su respuesta es más importante que la “forma correcta” o la “forma incorrecta”. Tener la mente de un artista te permite jugar con opciones y posibilidades, en lugar de pensar que solo hay una forma. Esa es la belleza de la programación, hay muchas maneras de resolver un problema, y la consideración de diferentes posibilidades lleva a sentir cuál es la mejor manera para la situación.
- Sea creativo: reconozca que existen numerosas formas de resolver un problema y, a través de la experiencia y la exposición, desarrollará una comprensión matizada de horas extras sobre qué soluciones se sienten mejor que otras. Observar el panorama general, imaginar diferentes posibilidades y confiar en su instinto nos conducirá a mejores soluciones que sean más satisfactorias.
10 | No prestar mucha atención a los detalles.
Si pasa por alto los detalles y pasa por alto las pequeñas cosas, nunca será un programador verdaderamente exitoso.
Las computadoras son máquinas precisas. Cuando se trata de programar una computadora, debe proporcionar los comandos necesarios exactamente de la manera que espera una computadora. Si no lo hace, nada funcionará. No hay un punto medio en el que las cosas funcionen en su mayoría: funciona o no funciona.
Eso significa que cuando estás programando tienes que estar atento a los detalles. Cada espacio, corchete o punto y coma cuenta. Cuando está fuera de lugar, nada funcionará. Cuando la computadora escupe un mensaje de error, debe poder mirar ese mensaje y comprender exactamente lo que le está diciendo. Y la realidad es que si pierde detalles como ese, podría pasar horas rastreando un problema que fue literalmente el resultado de un error tipográfico.
Como dicen, “el diablo está en los detalles”. Y eso es definitivamente cierto para la programación.
- Preste atención a los detalles: los detalles son importantes y debes aceptarlos. Una vez que lo haga, puede comenzar a escanear siempre su código en busca de cualquier cosa que esté fuera de lugar. Puede organizar su código y utilizar herramientas que lo ayuden a identificar problemas rápidamente.
Bonus | Ser de mentalidad empresarial
En una observación paralela, Jonathan Bluks ha notado que: los estudiantes que tienen una mentalidad empresarial particular, a menudo se centran en el resultado más que en el proceso. Quieren obtener una “aplicación que funcione” que los haga avanzar en su idea de negocio, quieren “llegar al mercado primero” y ven la curva de aprendizaje como una barrera para su objetivo de poner en marcha su negocio.
Al reflexionar sobre los estudiantes que eran realmente difíciles de ayudar a crecer como programadores, encontró una impaciencia con el proceso que inhibía el aprendizaje necesario para comprender verdaderamente la tecnología. Tienden a ver la tecnología como un medio para un fin, en lugar de un dominio legítimo de conocimiento para ser explorado y disfrutado.
Como una extensión natural de esto, Bluks ha encontrado que ciertos estudiantes que estaban más interesados en los negocios y que luchaban con su aprendizaje, ¡a menudo rápidamente tenían clientes independientes inscritos para trabajar que en realidad no tenían las habilidades para ellos mismos! Se apresuran a buscar recursos / plantillas para hacer que un proyecto funcione para un cliente, o subcontratar el trabajo a otra persona. ¡Realmente NO LES FUE BIEN en la programación, pero fueron increíbles en hacer que la gente les pagara para programar!
Entonces, lo que agregaría es que los estudiantes que desean iniciar negocios, son excelentes en ventas, redes y desarrollo de negocios, pueden tener más dificultades que otros para aprender la habilidad de programar. Su deseo natural de crear oportunidades financieras y conectar a las personas con soluciones los hace impacientes con los tediosos detalles involucrados en la programación.
Conclusión
Si bien la programación puede ser una habilidad difícil de aprender, sin duda es una que la mayoría de la gente puede aprender. La lista anterior contiene actitudes y mentalidades que se interponen en el camino, pero la mayoría de las personas pueden superarlas y desarrollar una competencia en el área de la programación, si no el dominio.
Si está interesado en aprender a programar, le animo a comenzar el viaje. Tenga en cuenta la lista anterior y comience a explorar los numerosos recursos disponibles en línea que pueden ayudarlo a avanzar rápidamente.
¡No se arrepentirá!