traducc appendice

This commit is contained in:
Victorhck 2022-07-28 18:57:34 +02:00
parent 2d7cdf350f
commit e9a2be7ec2

View File

@ -1,29 +1,29 @@
\appendix
# My journey
# Mi viaje
My journey as a programmer started when I was in elementary school. I became interested in computers after reading about them in the World Book Encyclopedia and hoped to work with them some day. What I didn't realize was that those encyclopedias were out-of-date and only showed the larger, more expensive mainframe and mini-computers of the 1960s and not the more modern microcomputers that were introduced in the late 1970s. When I realized that an Apple ][ was a microcomputer and that it was designed for the home market I began my quest to get a computer of my own (AKA: I started dropping not-so-subtle hints to my parents that I wanted a computer). I scoured magazines like Popular Computing and Byte Magazine looking for the right computer; from the Commodore VIC-20 and Sinclair ZX-80 to the Radio Shack TRS-80 Model III (Even the Rockwell AIM-65 or Heathkit H89 would have worked. I wasn't picky back then.) My dad took me to computer stores and I marveled at the variety of machines that were there (and likely made a few sales-people nervous as I poked and prodded the new and rather expensive machines). Finally my dad picked up an Atari 400 computer with tape drive, and I began learning BASIC programming in earnest. Around the same time my school opened a "computer lab" with three Commodore PET 4032 machines (complete with floppy disk drives), and I found myself spending every moment I could with those machines. In high school I took two programming courses, one in BASIC and the other in Pascal (which was my first exposure to procedural languages, and the basic concepts of computer science). In college I majored in Computer Science with a Bachelor of Science and did my best to keep up with all of the things that they tried to teach me. Unfortunately, I wasn't a great student (especially in mathematics). I struggled with and later dropped my compilers class, and felt like I was falling behind where other students succeeded. Most of our classes used Pascal, which I was becoming more familiar with, but there were a few classes that used COBOL, Ada, SNOBOL, C, and assembly language. I graduated with modest scores and returned home.
Mi viaje como programador comenzó cuando estaba en la escuela primaria. Me interesé en las computadoras después de leer sobre ellas en la _World Book Encyclopedia_ y esperaba trabajar con ellas algún día. Lo que no me di cuenta fue que esas enciclopedias estaban desactualizadas y solo mostraban las computadoras centrales y las minicomputadoras más grandes y costosas de la década de 1960 y no las microcomputadoras más modernas que se introdujeron a fines de la década de 1970. Cuando me di cuenta de que una Apple era una microcomputadora y que estaba diseñada para el mercado doméstico, comencé mi búsqueda para obtener una computadora propia (es decir: comencé a dar pistas no muy sutiles a mis padres de que quería una computadora). Revisé revistas como _Popular Computing_ y _Byte Magazine_ en busca de la computadora adecuada; desde el Commodore VIC-20 y el Sinclair ZX-80 hasta el Radio Shack TRS-80 Model III (incluso el Rockwell AIM-65 o el Heathkit H89 habrían funcionado. Por aquel entonces no era quisquilloso). Mi papá me llevó a tiendas donde las vendían y me maravillé de la variedad de máquinas que había allí (y probablemente puse nerviosos a algunos vendedores mientras tecleaba y empujaba las máquinas nuevas y bastante caras). Finalmente, mi padre compró una computadora Atari 400 con unidad de cinta y comencé a aprender programación BASIC en serio. Casi al mismo tiempo, mi escuela abrió un "laboratorio de computación" con tres máquinas Commodore PET 4032 (completas con unidades de disquete), y me encontré pasando cada momento que podía con esas máquinas. En la escuela secundaria tomé dos cursos de programación, uno en BASIC y el otro en Pascal (que fue mi primera exposición a los lenguajes de procedimiento y los conceptos básicos de la informática). En la universidad me especialicé en Ciencias de la Computación con una Licenciatura en Ciencias e hice todo lo posible para mantenerme al día con todas las cosas que intentaron enseñarme. Desafortunadamente, no era un gran estudiante (especialmente en matemáticas). Luché y luego abandoné mi clase de compiladores, y sentí que me estaba quedando atrás en comparación con otros estudiantes que tenían éxito. La mayoría de nuestras clases usaban Pascal, con el que me estaba familiarizando, pero había algunas clases que usaban COBOL, Ada, SNOBOL, C y lenguaje ensamblador. Me gradué con notas modestas y regresé a casa.
Throughout my career I've straddled the divide between system administration and programming. Linux was similar to the SunOS machines that I admired in college, so I transitioned to using that as my primary OS around 1995. My first jobs tasked me with maintaining various sorts of computers: desktop PCs, UNIX-based machines, and backing up the occasional VAX machine. It wasn't until one of my positions needed a website that I added more programming to my resume. Programming websites in the 1990s was where I really started to learn and understand Perl, SQL, relational databases, and HTML. The web was so new in the 1990s that all of the folks on our projects were learning at the same time. I leveraged my Perl knowledge into several other jobs and projects doing web-based programming. Perl in the 1990s was a language where the basics were simple to learn but the language could handle really complex ideas and data structures. Perl and CGI made it easy to get something onto a web page that had some interactivity. Where Perl becomes complex is the syntax for things like regular expressions, and the tendency for Perl programmers to value code that does multiple actions on the same line. The Perl community also values code that is clever, which lead me to wonder on several occasions if I was clever enough to be a Perl programmer.
A lo largo de mi carrera, he cruzado la brecha entre la administración de sistemas y la programación. Linux era similar a las máquinas SunOS que admiraba en la universidad, así que pasé a usar eso como mi sistema operativo principal alrededor de 1995. En mis primeros trabajos me encargaron el mantenimiento de varios tipos de computadoras: PC de escritorio, máquinas basadas en UNIX y de manera ocasional de las copias de seguridad de las máquinas VAX. No fue hasta que uno de mis puestos necesitaba un sitio web que agregué más programación a mi currículum. La programación de sitios web en la década de 1990 fue donde realmente comencé a aprender y comprender Perl, SQL, bases de datos relacionales y HTML. La web era tan nueva en la década de 1990 que todas las personas en nuestros proyectos estaban aprendiendo al mismo tiempo. Aproveché mi conocimiento de Perl en algunos otros trabajos y proyectos haciendo programación basada en web. Perl en la década de 1990 era un lenguaje donde los conceptos básicos eran simples de aprender pero el lenguaje podía manejar ideas y estructuras de datos realmente complejas. Perl y CGI facilitaron la incorporación en una página web de algo que tuviera un poco de interactividad. Donde Perl se vuelve complejo es la sintaxis de cosas como las expresiones regulares y la tendencia de los programadores de Perl a valorar el código que realiza múltiples acciones en la misma línea. La comunidad de Perl también valora el código inteligente, lo que me llevó a preguntarme en varias ocasiones si era lo suficientemente inteligente como para ser un programador de Perl.
One of the companies I worked at decided to migrate a Perl system over to a Java-based environment. They looked at the skills of the existing development team and decided they needed to outsource the project to another company. This was a common trend in the early 2000s for reasons that are outside of the scope of this book. This gave me my first taste as a team leader. I know a lot of programmers migrate over into managerial roles but at the time I didn't feel I had fully explored my programming potential. I sat down on several occasions and tried to learn Java but it never clicked for me. Java web development always felt more cumbersome than Perl CGI scripts that I created. It also didn't help that we were shipping `.war` files into a Tomcat system, which seemed like they were comprised of a lot of configuration metadata and very little code. This is what I was referring to when I spoke about being OK with giving up on learning something --- sometimes what we try to learn is more of a chore. Having something that is a chore isn't going to provide a good learning experience.
Una de las empresas en las que trabajé decidió migrar un sistema Perl a un entorno basado en Java. Analizaron las habilidades del equipo de desarrollo existente y decidieron que necesitaban externalizar el proyecto a otra empresa. Esta era una tendencia común a principios de la década de 2000 por razones que están fuera del alcance de este libro. Esto me dio mi primera satisfacción como líder de un equipo. Sé que muchos programadores migran a roles gerenciales, pero en ese momento sentí que no había explorado completamente mi potencial de programación. Me senté en varias ocasiones e intenté aprender Java, pero nunca funcionó para mí. El desarrollo web Java siempre lo sentí más engorroso que los scripts CGI de Perl que creé. Tampoco ayudó que enviáramos archivos `.war` a un sistema Tomcat, que parecía estar compuesto por una gran cantidad de metadatos de configuración y muy poco código. Esto es a lo que me refería cuando hablé de estar bien con renunciar a aprender algo, a veces lo que tratamos de aprender es más una tarea rutinaria. Tener algo que es una tarea rutinaria no va a proporcionar una buena experiencia de aprendizaje.
It was around this time that I began learning Python on my own using Pygame. I took the plunge by entering my first [Pyweek](http://pyweek.org) competition. Pyweek is a week-long competition where folks build an entire game from scratch in one week. It was a challenge, but was also one of the most rewarding experiences I've had in programming. I build a game called "Busy Busy Bugs" that was playable during a time when I really didn't know what I was doing. In many ways I was learning to swim by throwing myself into the proverbial deep end. I wasn't in any danger, but the desire to get something done at the end of a week drove me in ways I didn't think was possible.
Fue en ese momento cuando comencé a aprender Python por mi cuenta usando Pygame. Me lancé al participar en mi primera competición [Pyweek](http://pyweek.org). Pyweek es una competición de una semana en la que la gente crea un juego completo desde cero. Fue un desafío, pero también fue una de las experiencias más gratificantes que he tenido en la programación. Creé un juego llamado "Busy Busy Bugs" que se podía jugar en un momento en que realmente no sabía lo que estaba haciendo. En muchos sentidos, estaba aprendiendo a nadar arrojándome al proverbial fondo profundo. No estaba en peligro, pero el deseo de hacer algo al final de la semana me guió de maneras que no creía que fueran posibles.
As the technical lead position continued I found myself wanting to do something else. I interviewed at several places and was hired at Sourceforge as a member of the Systems Operations Group. Sourceforge was an amazing experience for me. I dreamed of working for an Open Source company, and few Open Source companies were as well-regarded as Sourceforge and Slashdot were in the Open Source community, but my insecurities and "impostor syndrome" kicked in. Would I be able to cut it? Would they hire me only to realize they'd made a mistake and I wasn't as good as I claimed to be? I was friends with and had gone to school with several of the people who worked at Sourceforge / Slashdot, so I wondered about their motivations for hiring me. Was my getting hired an elaborate prank, or was I hired because several folks in the company knew me? All of these thoughts ran through my head while I worked there. It didn't help that my position was primarily system administration at a level that I was inexperienced at. There was also a programming component to the position, but I constantly felt like I was in way over my head. I lived in constant fear that I was going to be found out and that the job that I wanted would no longer be available to me. Granted I learned a lot and had very supportive and kind management at Sourceforge but I lived in dread whenever my manager would check in on me because I feared that the conversation would only highlight that I wasn't really supposed to be there.
A medida que la posición de líder técnico continuaba, me encontré con ganas de hacer otra cosa. Me entrevisté en varios lugares y fui contratado en Sourceforge como miembro del Grupo de Operaciones de Sistemas. Sourceforge fue una experiencia increíble para mí. Soñaba con trabajar para una empresa de código abierto, y pocas empresas de código abierto eran tan bien consideradas como Sourceforge y Slashdot en la comunidad de código abierto, pero mis inseguridades y el "síndrome del impostor" entraron en acción. ¿Sería capaz de cortarlo? ¿Me contratarían solo para darse cuenta de que habían cometido un error y que no era tan bueno como decía ser? Yo era amigo y había ido a la escuela con varias de las personas que trabajaban en Sourceforge/Slashdot, así que me preguntaba sobre sus motivaciones para contratarme. ¿Me contrataron como una broma elaborada o me contrataron porque varias personas en la empresa me conocían? Todos estos pensamientos pasaron por mi cabeza mientras trabajaba allí. No ayudó que mi posición fuera principalmente administración de sistemas a un nivel en el que no tenía experiencia. También había un componente de programación en el puesto, pero constantemente sentía que estaba muy por encima de mi cabeza. Vivía con el temor constante de que me descubrieran y de que el trabajo que quería ya no estuviera disponible para mí. De acuerdo, aprendí mucho y tuve una gerencia muy solidaria y amable en Sourceforge, pero vivía con pavor cada vez que mi gerente me consultaba, porque temía que la conversación solo resaltara que se suponía que yo no debía estar allí.
I'd love to say that it had a happy ending and that my fears were unfounded, but sadly I was let go from that position due to budgetary constraints. I'm grateful for the opportunities I had there, the friends I made, and the experiences I had but I'd be lying if the layoff didn't come with a mixture of sadness and relief. Sadness that I might never have a cool job like that again, and relief that I could put away those impostor syndrome feelings for the time being. In many ways I grew from the experience of working at Sourceforge and learned a lot about myself and my capabilities while working there, but it was also the position where I felt my impostor syndrome at its fullest.
Me encantaría decir que tuvo un final feliz y que mis temores eran infundados, pero lamentablemente me despidieron de ese puesto debido a restricciones presupuestarias. Estoy agradecido por las oportunidades que tuve allí, los amigos que hice y las experiencias que tuve, pero estaría mintiendo si el despido no viniera con una mezcla de tristeza y alivio. Tristeza por no poder volver a tener un trabajo genial como ese y alivio por poder dejar de lado por el momento esos sentimientos del síndrome del impostor. En muchos sentidos, crecí a partir de la experiencia de trabajar en Sourceforge y aprendí mucho sobre mí y mis capacidades mientras trabajaba allí, pero también fue el puesto en el que sentí mi síndrome del impostor en su máxima expresión.
Later on I was hired for a full-time position doing Python programming. This position allowed me to strengthen my craft as a Python developer. I created many interesting projects there and kept learning more about Python. It helped me to recuperate and broaden my skills. The folks at this position were very supportive and kind. There were times where it got stressful (all jobs seem have stress), but overall it was a positive experience.
Más tarde me contrataron para un puesto a tiempo completo haciendo programación Python. Esta posición me permitió fortalecer mi oficio como desarrollador de Python. Allí creé muchos proyectos interesantes y seguí aprendiendo más sobre Python. Me ayudó a recuperarme y ampliar mis habilidades. La gente en este trabajo fue muy comprensiva y amable. Hubo momentos en los que se volvió estresante (todos los trabajos parecen tener estrés), pero en general fue una experiencia positiva.
Sadly I was also laid off from that position (money sucks, y'know?).
Lamentablemente, también me despidieron de ese puesto (el dinero apesta, ¿sabes?).
I started my job search in earnest and went to a bunch of interviews. While everyone in the interviews seemed impressed with my skills and my career I fell into one of two categories: either I wasn't a good fit for the position, or I didn't have enough skills in areas they were looking for. I found myself taking timed-coding-tests that felt like they were testing whether I got stressed easily rather than any coding skills I might have. I sat in coding sessions with shadowy figures that barked out commands and requirements while I tried my best to follow them. I did math puzzles and logic problems (which is horrifying if you're not good at either math or logic problems). Promising leads turned into rejection letters (assuming I heard back at all), and desperation set in as I faced the real prospect that I would have to give up programming if I wanted to make a living. Visions of heading back to the beginnings of my career filled me with dread. It seemed like nobody wanted to take a chance on me anymore, and I couldn't compete with so many new programmers who hadn't made the mistakes that I had in my career.
Empecé mi búsqueda de trabajo en serio y fui a un montón de entrevistas. Si bien todas las personas en las entrevistas parecían impresionadas con mis habilidades y mi carrera, caí en una de dos categorías: no encajaba bien en el puesto o no tenía suficientes habilidades en las áreas que buscaban. Me encontré haciendo pruebas de cronometradas de escribir código que parecían estar probando si me estresaba fácilmente en lugar de las habilidades de de escribir código que pudiera tener. Me senté en sesiones en las que escribía código con figuras sombrías que gritaban comandos y requisitos mientras hacía todo lo posible por seguirlos. Hice acertijos de matemáticas y problemas de lógica (lo cual es horrible si no eres bueno ni en matemáticas ni en problemas de lógica). Las pistas prometedoras se convirtieron en cartas de rechazo (suponiendo que me respondieran), y la desesperación se apoderó de mí cuando me enfrenté a la perspectiva real de que tendría que dejar la programación si quería ganarme la vida. Las visiones de regresar a los comienzos de mi carrera me llenaron de pavor. Parecía que ya nadie quería arriesgarse conmigo y no podía competir con tantos programadores nuevos que no habían cometido los errores que yo había cometido en mi carrera.
I registered themediocreprogrammer.com during this period. If I was going to be a fuck-up then I might as well own it.
Durante ese periodo registré el dominio web themediocreprogrammer.com. Si yo iba a ser un desatre entonces podría aceptarlo.
Fortunately, I've had a community of friends and fellow programmers to help support me. My current position is contracting with one of these friends to help him with programming tasks. That position came about from showing up to PyOhio (a programming conference) every year. Throughout my struggles I've been fortunate to have a community there to help me. This is why I think communities are so great --- they give us a network of folks that we might not otherwise have, and help us through our triumphs and our struggles.
Afortunadamente, he tenido una comunidad de amigos y compañeros programadores que me han ayudado. Mi puesto actual es contratado por uno de estos amigos para ayudarlo con las tareas de programación. Ese puesto surgió al asistir a PyOhio (una conferencia de programación) todos los años. A lo largo de mis luchas, he tenido la suerte de tener allí a una comunidad que me ha ayudado. Es por eso que creo que las comunidades son tan geniales: nos brindan una red de personas que de otra manera no tendríamos, y nos ayudan a superar nuestros triunfos y nuestras luchas.
I'm a collection of all of these experiences. They all make me who I am. Sometimes I wonder if I should have taken a different path or done something different, but that's a futile exercise. The best I can do with these experiences is learn from them and move on. Each day I work to improve and better myself. Each day I make new mistakes, but that's all part of the learning process.
Soy una colección de todas estas experiencias. Todas ellas me hacen quien soy. A veces me pregunto si debería haber tomado un camino diferente o haber hecho algo diferente, pero ese es un ejercicio inútil. Lo mejor que puedo hacer con estas experiencias es aprender de ellas y seguir adelante. Cada día trabajo para mejorar y superarme. Cada día cometo nuevos errores, pero todo eso es parte del proceso de aprendizaje.
My journey continues.
Mi viaje continua.