¿Qué tan malo eras cuando comenzaste a codificar?

Cuando vi el código de una computadora, simplemente vi llover números y símbolos como lo que ves en las películas de hackers como The Matrix .

Cuando comenzó en julio del año pasado, estaba tan mal que tuve que pasar más de un mes haciendo programación básica en un lenguaje visual de instrucciones y rompecabezas llamado Scratch – I simplemente no podía visualizar lo que harían los números y símbolos lloviendo.

En septiembre comencé a codificar en C y Python y después de unas semanas, los símbolos y números llovieron como inglés, y en ocasiones elegantes ensayos sobre lógica.

Todavía luché con los problemas de descomposición en módulos y micro-submódulos que podrían resolverse con el cálculo. Decidí que tendría que dedicar tiempo a la práctica deliberada de la resolución de micro problemas mediante la práctica de desafíos fáciles en sitios de programación competitivos como Hacker Rank.

Entonces el código es inglés y la descomposición de problemas simples se está volviendo tan fácil como preparar el desayuno.

Este viaje ineficiente fue un problema doble: no sabía cómo aprender una nueva disciplina y la mayoría de los instructores de CS / programación carecen de la empatía y los métodos imparciales para enseñar efectivamente la ciencia / oficio (no importa cuán brillante sea su CS / habilidades de programación) .

Así que diseñé un ‘algoritmo de aprendizaje’ para ayudarme a superar primero mi fricción cognitiva, y luego superar los estilos de enseñanza subóptimos de los instructores.

El primer día, no pude hacer nada y no sabía nada. Ni siquiera por dónde empezar.

El segundo día, abrí la caja Sinclair ZX81 y luego su Manual básico.

Escribí las cosas. Inicialmente IMPRIMA “Hola Al”.

Entonces aprendí sobre las variables.

En los años siguientes, aprendí todos mis malos hábitos: código de spaghetti, enredo de gotos, funciones enormes, solo dividiendo el código si se llamaba más de una vez.

Solía ​​nombrar las variables como “chistes intrascendentes”. Una bandera en un juego que significaba que habías perdido una vida. La llamé “HOVISD” (Hovis es un nombre comercial de Brown Bread, que es la jerga rítmica de Cockney para Dead, lo que significa que has perdido la vida en esta ronda).

Ho flipping ho cuando volví a ese código más tarde.

Yo no solo fui malo.

Estaba catastróficamente malo.

Escribí un intérprete de lenguaje de guiones usando el lenguaje C. Necesitaba usar una pila para expresiones. Así que convertí todas las variables del programa en estática global y usé la pila de llamadas de funciones como la pila de símbolos. No sabía qué era una estructura de datos de pila incluso. Eso es técnico, pero cuando finalmente se une a todos los graduados de CS aquí lo que hice, eso es casi tan malo como se pone.

Un interno comenzó a jurar en alemán cuando tuvo que mantener ese código. Estoy seguro de que estaba hablando de mi madre en un momento …

Todo mi código anterior no tiene pruebas, y no fue posible probarlo, excepto al encender todo y “ver si funcionó”.

Pero dicho eso, aprendí los fundamentos. Yo mejoré E incluso mi código más basura realmente funcionó, con tasas de defectos razonables, dado cómo se hizo. Hice cosas.

No retrocedería a esos horrores, y normalmente los dejo fuera de las entrevistas (¡Oh, solo póngalo en el interweb!)

Los menciono aquí para animarte. Todos comenzamos con nada. A menudo recogemos malos hábitos. Una buena enseñanza / autoaprendizaje evita mucho de eso, pero el punto es comenzar desde donde estás y mejorar. Es todo lo que cualquiera de nosotros puede hacer.

Me alegro de no haber esperado hasta saber lo que sé hoy antes de comenzar …

¿Pero era malo? Tendrás que interpretar a Michael Jackson como mi tema de introducción al TED. Así de mal. Y lo sé, era malo …

Yo era horrible. Mi institución de pregrado (Macalester College) colocó a los estudiantes en un curso de primer año. Obtuve mi cuarta (y última) elección, Introducción a Python . No pude configurar mi entorno de codificación durante la primera semana, así que me quedé atrás de inmediato. La diferencia entre un for-loop y while-loop no tiene sentido intuitivo para mí. No pude entender qué significaba importar una biblioteca. Lo único que sabía hacer era darle instrucciones al Scribbler Bot.

Realmente no volví a estudiar informática hasta mi tercer año. Un curso divertido llamado “Computational Linear Algebra” hizo que todo hiciera clic, dos años más tarde.

La primera vez que me enseñé a programarme, a los ocho años de edad, no fue viendo buenos ejemplos de código, ni leyendo un tutorial sobre cómo codificar, sino leyendo la guía de referencia BASIC que venía con mi (VIC20) computadora. El manual de referencia era una lista de comandos, ordenados alfabéticamente, que explicaban qué hacía cada comando.

No sabía acerca de comentarios, algoritmos, funciones o nombres de variables. Llamé a todas mis variables x, y, yz, (y pasé a a, bc … cuando necesité más) y reutilicé las mismas variables para diferentes cosas en diferentes partes del código. Mi código era una corriente de conciencia, así que si me daba cuenta de que necesitaba algo entre las líneas 20 y 30, agregaría la línea 25, luego, si era necesario, la línea 26, 27, 28 … y luego usaría algo como:

29 GOTO 500

500 IMPRESIÓN “MANTENER IR (S / N)?”

510 ENTRADA Y

520 GOTO 30

para que yo pudiera exprimir un código adicional sin volver a numerar todas mis líneas.

En lugar de funciones o procedimientos, creé extrañas estructuras de espagueti usando instrucciones y banderas GOTO para servir como funciones de facto, o al menos como secciones de código reutilizables.

En resumen, cuando comencé a codificar, mi código era increíblemente espantoso.

Pero me divertí, escribí algunos juegos que de alguna manera funcionaron, e inadvertidamente aprendí la lógica del álgebra.

  • Ni siquiera sabía cómo almacenar cadena en variable.
  • aunque ese Pascal (lenguajes de programación) como el Triángulo de Pascal (LOL)
  • ¿Por qué tengo que hacer todo este tipo de cosas ?, LoL
  • Un error creado, resuelto, crea más errores.
  • Tenía un pensamiento para codificar completamente en Biner (LoL)
  • Pensé que las cosas de Informática / Informática siempre tienen que ver con la Web.
  • Siempre salta al código sin resolver primero los problemas.

Considerando que las computadoras digitales solo tienen 4 instrucciones básicas, la programación no es difícil. Aprendí a programar en 3 semanas y gané una vida agradable (programación por pago) durante 53 años hasta que me retiré. Y apuesto a que has usado mi software.

Todo lo que aprendí más tarde en 9 años de la facultad de ingeniería no me enseñó nada nuevo sobre la programación de computadoras.

Para no ser un mal programador, te aconsejo que ignores todas las tonterías que los informáticos te cuentan sobre programación de computadoras, paradigmas de programación, polimorfismo, abstracción de datos y otros mitos que han inventado.

Y tenga en cuenta que el objeto es simplemente un excelente mecanismo de software que se agregó al lenguaje de programación de alto nivel y los sistemas operativos multitarea, que fueron los otros dos grandes inventos en la programación de computadoras.

Así que buena suerte en tu carrera de programación.

No recuerdo como el primer día, pero al principio no era tan bueno. Mis comienzos fueron bastante modestos. El primer programa que escribí usaba LOGO Logo (lenguaje de programación) – Wikipedia. Es un lenguaje gráfico donde escribes programas para dibujar figuras 2D. Dibujé un cuadrado (ese es mi mundo de hola). Fue divertido.

Mi programación seria comenzó en BlueJ (IDE) usando Java. Empecé a ser malo en eso, pero mi maestra de escuela me ayudó, no enseñando, sino alentándome a leer el código de otros estudiantes y depurarlo. Recuerdo que me regañó por no terminar líneas con punto y coma.

Básicamente mi punto es que mejoré con el tiempo y aún trato de mejorar leyendo el código de otras personas. Cuanto más depure, mejor será la codificación. Lentamente avanzaría a la situación si la mayoría de los errores pudiera detectar al leer su código.

Me enseñé a mí mismo a programar cuando tenía 8 años en el 6502 (Apple II +). No tenía ni idea sobre los conceptos de programación estructurada, así que nunca me molesté ni siquiera con JSR (GOSUB en Apple BASIC) … Tenía JMP (GOTO en BASIC) y eso es todo lo que necesitaba. Huelga decir que el código era tan malo que si me iba a la cama y me levantaba al día siguiente, no podía leerlo. ¡Literalmente no pude leer mi propio código que había escrito el día anterior! Entonces, cuando escribí un programa, tuve que comenzar temprano en la mañana, y tuve que terminarlo antes de acostarme. Cuando llegó el momento de hacer una nueva versión (por ejemplo, mi programa de gráficos Southern Draw tenía 6 o 7 versiones, si mal no recuerdo), tuve que empezar de cero cada vez.

Me gustaría enviar una instantánea de una de mis publicaciones de Facebook.

En mi primer año en la universidad (no estoy en CS o especialización en SW, solo se enseñó solo C básica como consola y se enseñó MATLAB a generar gráficos y, por lo tanto, no hay programación basada en GUI o avanzada que pueda usarse de manera simple aplicación de la vida real, fui programador autodidacta y fue mi hobby) Aprendí programación basada en GUI, hice varios programas simples y juegos simples.

Quería crear un software que pudiera convertir Dígitos en Palabras, no pude hacer eso en ese momento, solo empecé a programar y no lo había aprendido en la universidad o en una forma profesional desde algún lado, así que no pude No lo hagas en MATLAB ese año.

Seguí aprendiendo programación, me olvidé de ese programa, un día mientras practicaba Python, de repente me vino a la mente ese programa que no pude descifrar hace 1,5 años (en ese momento ya trabajaba como programador profesional para mis eventos universitarios en Java). ), Comencé a codificarlo y en 2-3 horas pude producir un programa perfecto que podía convertir cualquier número de dígito en palabras 🙂

(Ignore el diseño, mi objetivo era producir el algoritmo de trabajo por mi cuenta)

Recuerdo mi primera prueba de programación en la escuela media, una semana después de haber comenzado a programar.

En algún momento tuve algo como esto:

printf (“\ n Su nombre es: (???)”, stringVarName);

¿Míralo?
Olvidé cómo mostrar una String var en una función printf.

Estaba un poco nervioso, pero creo que lo manejé para que las cosas salieran bien.
Cambié la línea por:

printf (“\ n Su nombre es: Hugo”);

El programa solo mostraría mi nombre. Cuando la maestra comprobó mi ejecución, escribí rápidamente mi nombre cuando el programa lo solicitó.
No funcionaría con ningún otro nombre.

Todavía recuerdo esta historia a pesar de que sucedió hace 7 años.

La primera vez que comencé a codificar no sabía nada de codificación o incluso de funcionamiento de la computadora y eso fue bastante malo.

No tenía idea de qué es el compilador, el código fuente y qué diablos # incluye, main (), función, variable significa.

He estado haciendo tutoriales de codificación de forma intermitente durante aproximadamente 2 años antes de tener la confianza suficiente para intentar escribir “hola mundo” en mi computadora local.

He visto a niños de 8 años hacer eso en su primer día.

No fui malo en programación, no pude hacerlo en absoluto .

Es como que no soy malo en cirugía cardíaca, no puedo hacer cirugía cardíaca.

Claro, en los primeros años, yo chupaba, pasaban los años y yo chupaba menos, y durante las décadas, chupo solo de vez en cuando.

Bastante mal.

El “problema” que estaba tratando de resolver era, básicamente, tirar un manojo de dados y sumarlos, hacer algunas preguntas de opción múltiple y lanzar algunos dados más.

Algo que esperaba completar en menos de una hora hoy (o de hecho en cualquier momento en los últimos 30 años).

Estoy bastante seguro de que me tomó alrededor de un mes, tal vez 3 meses (creo que sí sufrió un poco de misión).

Entonces, si es divertido (o tu carrera elegida) sigue así. La práctica definitivamente vale la pena en la programación.