My Journey
Tags: career, python, programming, developer
Published: 2020-07-01 21:36:58

My journey
===

I thought it would be interesting, at least for me, to tell my journey with computers and in particular programming. It's a good exercise in retro- and introspection.

It was early on in life that I got to be able to use a computer, probably I was around 6 years old. My first memories were a computer my father brought every now and then from his office to work at home (early "laptops" were cumbersome to transport and even more expensive than a desktop computer). I don't remember many details of it, but with my brother, we used to do very rudimentary drawings in WordStar or WordPerfect. Here I did learn the basics of how to move around the command line in DOS.

Skipping forward some years, I was in 5th grade when the school I attended offered a programming extracurricular. It was certainly intended for older students as it was imparted in the high school section and somewhat late in the afternoon. Anyhow, I went anyways as I had interest and curiosity. I was most likely the youngest student there. Our teacher was a German man (not too surprising considering I attended a German school) of advanced age (I went to a German school), which also did some astronomy extracurricular and probably was the physics teacher. In that class, we used Pascal or TurboPascal and learned about loops, conditionals, variables, and functions. Lessons mostly consisted of writing on the computer what the instructor wrote in the blackboard while the instructor explained the different elements. I fondly remember how it didn't have a hard drive; thus, we had two floppy disks, one for the OS and IDE/compiler and the other for my programs.

Since then, I have always been interested in programming but never put much time practicing it or doing anything of any worth. During my late teenage years, I read books on C, C++, Java, Perl, and eventually, Python. Only the last two ones I did give them a real practical try. In Perl, I did work during the southern hemisphere summer of 2001/2002 in a small company producing a web interface to assist in ISO certifications. Back then, it was a pretty fancy approach to using web technologies.

Probably on that summer or perhaps a bit later, I got introduced to Python by a friend (the same friend who brought me to work on that summer). Which I then used to write a small application to review the performance of salespeople over time to assess the impact of the investment in training. 

Once in university, I had to take Introduction to Programming, which that semester was given in C#, and had exposure to Maple and Matlab in some mathematics lectures (Calculus and Linear algebra respectively). Some years later, I took a lecture on numerical programming, exemplified with C/C++. However, we didn't get too much practical experience since it was mostly reviewing strategies and algorithms in scientific computing. Still, it was the closest I had to a Computer Science class, and I remember really liking that class; I was very impressed with all the little tricks used to get better performance, accuracy, or stability. Much later, I took but never finished a lecture on simulating processes (my memory of that lecture is rather vague) where the exercises were given in Java.

For years I was curious and explored Python, and I used it for any small little thing during my Physics studies (2004-2010), and in various research activities, I got involved with. This exposed me to the nascent Python scientific stack (numpy, scipy, matplotlib), and I saw it's evolution and how it became more mature over time. At some point, I took a Coursera class on building modern web applications, which was in Ruby using the Ruby on Rails framework. During my last years researching physics (2013-2016), I even attempted to develop an application/library to perform some fitting and modeling of a particular type of experimental data in the field I was involved to provide an open-source alternative to an excellent but fully closed software tool. Until then, that had been my most ambitious project, but it didn't go very far... maybe someday I'll continue.

Somehow I kinda always knew that I was going to end up in technology/programming sooner than later. Eventually, I left the academic world and got my first job as a software developer. My first task was to implement an optimization routine based on [Evolutionary Strategies](https://en.wikipedia.org/wiki/Evolution_strategy) to try and find better parameters in a scoring process. Given my physics background (I had taken a lecture during my masters called something like Physical principles of evolutionary processes), I felt very comfortable doing that. Of course I did this in Python!
On the job, I took on some internal applications written in Go and started being curious about Rust. And although I think Rust would be great for some pieces of the application we develop, I believe that due to internal knowledge, that won't happen.

Now, Rust is another beast. Quite exciting language, and given my lack of formal training, it has been quite an illuminating language to learn. Again, I haven't really done anything with it, but I think just learning and reading about it has made me a better programmer (for some more thoughts on this read [here](https://ivergara.github.io/picking-up-from-other-languages.html)).

Until now, this journey has been rather shallow and exploring in some way or another, a few languages. I'm excited to see how this journey continues into the future, hoping that Rust becomes a more relevant part. Excited to see how Python and its ecosystem keeps evolving. And wishing to be able sooner than later to contribute to open source projects beyond doing translations (Debian), or cleaning/improving/documenting tests (pandas).