INSERT INTO blog (curso) VALUES (‘week4’);

Ha pasado otra semana y ahora estamos a 1/3 del camino del curso. Realmente da bastante miedo. Esta semana fue sin duda la más desafiante hasta el momento, había mucha información que transmitir y no había suficientes horas en el día. El tema de esta semana fueron las bases de datos: cómo hacerlas y cómo manipularlas. Si bien esto no parece mucho, fue como abrir una lata de gusanos, y cada gusano vomita más gusanos …

“hagamos una base de datos”
“oh, necesito usar Postgres”
“¿qué es Postgres?”
“oh, es una base de datos relacional”
“¿qué es una base de datos relacional? base de datos? ”
” oh, utiliza un modelo relacional de datos ”
” ¿qué es un modelo relacional de datos? “

etc. etc.

En semanas anteriores, v sentí que los ejercicios iniciales nos han equipado con las habilidades que necesitaremos para completar el proyecto. Los ejercicios restantes nos permiten practicar esas habilidades y, tal vez, agregar pequeños extras de vez en cuando. Esta semana, sin embargo, cada ejercicio fue un campo de batalla completamente nuevo que tuvimos que atravesar. Realmente nunca sentí que estuviera progresando porque nunca sentí que estuviera practicando algo, solo haciendo lo que podía para absorber la mayor cantidad posible de esta nueva información. Ahora que miro hacia atrás, puedo apreciar cuánto progreso realmente logré. Si bien no pude practicarlo tanto como me gustaría, tenía los conceptos básicos en mi mente y pude manipularlos y jugar con ellos durante el desafío del fin de semana sin demasiados problemas.

A pesar de lo anterior, el verdadero desafío de la semana no fueron los materiales del proyecto. El miércoles trajo consigo un infierno que aún no he experimentado, y al que ahora me referiré como el Tren de Carga Error (choo choo). Mi compañero y yo tuvimos un gran comienzo, logramos nuestro primer ejercicio del día. Pero cuando comenzamos el siguiente, encontramos un error con una gema que habíamos instalado. Este error vino con un seguimiento de pila gigante, que tuvimos grandes dificultades para descifrar, ya que hacía referencia a todo tipo de cosas con las que no estábamos familiarizados. Después de muchos artículos confusos de StackOverflow y documentación de gemas, logramos resolverlo, solo para ser recibidos por un error completamente nuevo. Este proceso se repitió TODO EL DÍA. Fue duro.

Ahora he pasado los últimos 7 años trabajando desde casa la mayor parte del tiempo. Cuando me sentí frustrado, simplemente me tomé un descanso. Podría esconderme en mi habitación, poner un poco de televisión, jugar un juego o tal vez, si me sentía particularmente aventurero, incluso salir al mundo real. Realmente no puedo hacer eso aquí. Estoy rodeado de colegas y no tengo ningún espacio privado al que retirarme. También tengo un compañero todos los días y me siento en parte responsable de su aprendizaje. No quiero que mi pareja sienta que los he retenido; quiero que sientan que han tenido un día productivo e instructivo. Así que cuando el miércoles llegó a su fin, me sentía bastante mal, no solo porque mi progreso en el proyecto semanal se había detenido, sino porque el de ellos también. El tren de carga de errores me arruinó el día y dejó una sensación de insatisfacción, frustración y ansiedad. Solo quería estar solo.

En ese momento, sentí que mi aprendizaje se había visto obligado a detenerse: había perdido impulso y estaba perdiendo el tiempo en basura que ni siquiera debería haber sido un problema. Sin embargo, al mirar atrás ahora, me doy cuenta de que esto no es del todo exacto. Sí, mi progreso a través de los materiales de esta semana se detuvo, pero mi aprendizaje no. Una gran parte de ser desarrollador es saber cómo depurar. Eso no significa que lo entienda todo; no ha aprendido todo lo que hay que aprender y convertirse en un maestro que pueda reconocer y diagnosticar inmediatamente cualquier problema. Significa que cuando surgen problemas, tienes las habilidades para descomponerlos y resolverlos hasta que se resquebrajen. Entonces, aunque la mierda estaba bien y realmente golpeando a los fanáticos el miércoles, es posible que se me haya impedido aprender lo que pretendía ese día, pero tuve la oportunidad de desarrollar mis habilidades de depuración. Solo espero que cuando esta situación surja en el futuro (y estoy seguro de que lo hará), pueda mirar hacia atrás en esta experiencia y, en lugar de sentir pánico o frustración, estar contento con el conocimiento de que todavía estoy creciendo como desarrollador.

Entonces … en el meollo del asunto … ¿qué aprendí esta semana?

Siento que debería reformular eso con lo que NO aprendí esta semana. Comenzamos bajo el capó, usando Postgres y jugando con algo de SQL sin procesar. Creamos un par de bases de datos, agregamos / manipulamos / eliminamos datos y luego destruimos la evidencia cuando terminamos. Siempre disfruto haciendo cualquier cosa en la terminal, porque te sientes como un l33t h4XX0r cuando estás jugando allí, así que esta parte en particular del proyecto semanal fue bastante satisfactoria. Una vez que estuvimos contentos de haber entendido lo que hacía SQL, pasamos a Object Relational Mappers (ORM), herramientas que se utilizan para comunicarse con bases de datos, de modo que no es necesario profundizar en todo ese SQL. Básicamente, hacen que la experiencia sea mucho más fácil de usar y le permiten concentrarse en su código en lugar de conocer el SQL correcto. Personalmente, me gustó jugar con el SQL en sí, pero puedo apreciar que esto está lejos de ser práctico en la mayoría de los casos.

A partir de aquí, pasamos a instalar y configurar diferentes entornos de Rack para trabajar (pruebas, desarrollo y producción), limpiar bases de datos (para que la ejecución de pruebas una y otra vez no las llene de datos no deseados) y la implementación una aplicación para Heroku. Todos estos pasos pueden parecer bastante sencillos, pero todos requieren mucha investigación y juego con su código si desea comprenderlos correctamente, por lo que para nosotros cada uno de ellos tomó mucho tiempo. Hubiera sido mucho más fácil seguir los recorridos proporcionados por MA y, de hecho, muchos de nosotros necesitábamos recurrir a ellos para terminar ciertos ejercicios, pero todos comparten la misma actitud aquí: sabemos lo valioso que es comprender el interior funcionamiento de lo que estamos haciendo, por lo que todos nos tomamos el tiempo para hacer el trabajo adicional.

Uno de los problemas más comunes que tuve esta semana fue no saber por dónde empezar al mirar la documentación. Estábamos interactuando con muchas cosas en nuestro código: DataMapper (ORM), Limpiador de base de datos, Heroku, Rake (Make for Ruby), BCrypt (una herramienta para el cifrado de contraseñas); todas estas cosas tienen documentación para ayudarlo a configurar y utilícelos de forma adecuada. Todo eso es genial, muy útil … si sabe qué partes de la documentación necesita consultar. Había tantas opciones de configuración para algunos de estos, y las que usa dependen de su entorno y de las otras herramientas que está usando. Tal vez fueron solo mis ojos de novato, sin experiencia en peinar esos materiales, pero mi cerebro entró en modo derp completo y no pude elegir las cosas que necesitaba. Estos fueron los momentos en los que confié en los recorridos de MA, que habían extraído convenientemente toda la información relevante. Obviamente, lo probé yo mismo primero, y me aseguré de entender por qué el tutorial estaba seleccionando la información que era, pero fue un proceso largo. Con suerte, me volveré más experto en esto con bastante rapidez a medida que MA lance más herramientas nuevas y emocionantes en nuestro camino.

En general, esta semana fue un poco exigente en algunos lugares y, lamentablemente, solo completé 20 de los 27 ejercicios. La cantidad de información que estábamos recogiendo era tan enorme que parecía imposible avanzar a la velocidad que habría necesitado para terminar todo el proyecto. Pero en general, he disfrutado mucho aprendiendo sobre bases de datos. Tenemos que arañar la superficie de algunas herramientas superpoderosas y siento que mi comprensión de la gran red se ha expandido mucho más. Supongo que lo encuentro todo bastante fascinante, mirar más y más profundamente dentro de algo que he estado dando por sentado durante gran parte de mi vida. Y la semana que viene llegaré aún más abajo por la madriguera del conejo …