My name is Piero.
I am a 23 year old software developer from Peru who loves creating libraries and applications with focus on performance and maintainability.
Technical Journey
I first started programming in 2018 at the age of 15, when our new computer teacher decided to make us a curriculum entirely focused around programming for that final year of school.
We were first thaught how to make forms in Visual Basic, handling different kinds of inputs and generating an output to display on the screen, the basic stuff.
At first I wasn't really much interested on it, but I slowly began to realize how class after class we were being thought the fundamentals in such a clear and passionate way by our teacher, who truly really wanted us to learn.
A couple months went by and I had started programming stuff on my own at home, being interested on doing more with Visual Basic, like a small character creator and compound interest calculator (which was the last thing we were taught in math class at the time).
Halfway through the year we also started learning Java, which I liked a lot more than Visual Basic even through it was more verbose I felt it would scale be better for larger projects. We applied most of what we learned from Visual Basic into new similar Java forms/programs using Swing.
At the end of the year I realized I had really grown a love for programming and that I wanted to persue it profesionally.
When 2019 came around I went to university to study Software Engineering. It was nice at first but I noticed my only course for actually learning how to code was way too slow-paced for my liking, and anybody's liking, really.
We had one entire class for the if statement, then another whole class for if-else, then another for if-elseif, then yet another for if-elseif-else. We had more and more classes dedicated to single statements, and very little room or incentive to for us to make stuff on our own other than go over the same simple concept over and over again.
This went on for the nearly 2 years I stayed at that university, luckily I still did enjoy programming, so I kept researching and learning stuff on my own. I learnt about Python, C, Ruby and even switched to Linux, ditching Windows forever.
Eventually I went to another university in 2022 to give it another try, it looked a lot better and had a better curriculum, more focused on programming and less so in filler courses. Sadly my progress in the courses I had in the previous university didn't get transferred to this new one, so having finished courses like Communication III instead of going to IV, I got to II, which was really awful and really set me back a lot, but I accepted it expecting this university to be better for what I wanted to do, which was learning programming, but it was all more of the same.
A lot of teachers only narrated Powerpoint presentations and during online classes they would often feel abstent too laid back for a significant part of the time. But what was the most stressful for me was taught yet again the same fundamentals of programming instead of moving on to more advanced subjects, I wanted to move on and not be limited by universities anymore, so I ended up leaving that one too a couple months later.
Halfway through 2022, I prepared a few projects, which were mostly small tools written in C, like a directory tree lister, a small game engine built on top of SDL2 and a few others smaller projects. Then I started applying to jobs online, and after a bit over a month, getting an interview once a week or so I managed to land one with a company called Athmos for a C Software Developer position. I showed them my projects and my workflow, and a few days later I got the job! I started working for them remotely on fintech projects and I was doing fairly okay even though I didn't have previous work experience.
About month later I was offered to work with them in office, which was located in Dubai. I declined at first because it felt a little sudden and I wasn't sure of my worth as a programmer yet. However a few months later I was offered the chance again and this time I accepted, so I prepared everything and in January 23rd I officially moved to Dubai.
Now I was working under the parent company Creed & Bear went to office in a huge building in the 46th floor, worked with colleages who were very like-minded and loved software as much as I did. My experience living and working in Dubai was great and really helped me develop myself as a programmer. Altogether was an amazing episode of my life, working in fintech solutions and microservices in languages like C and Rust. I was planning to stay there for only 3 months or so but I ended up staying almost 7. In hindsight I should've stayed more but there were some issues at home and I missed my family so I ended leaving Dubai and going back to Peru.
After a month or so because of the timezone gap communication was harder and I felt I could be slowing down the progress of the project I was working on, so I ended up resigning in good terms and I ended up leaving a month later. A thing to clarify here is that I worked the same job and the same projects, as I moved from Athmos to Creed & Bear, so my total time working with the team was about 1 year and 2 months. I still regret leaving that job, but I felt it was necessary for me to take a break and focus on developing myself in other areas of programming and life.
Then I lived off my savings making good use of my time by studying a other programming subjects in which I was rusty or inexperienced.
On April 21st when I started working again, this time for a company here in Peru, to both have a more hands-on experience in web development and to sustain myself too. However this was not a decent working environment, they would pay poorly, delay payments for up to 2 weeks while ignoring messages and deminish my work, so while I could've still worked for them I just didn't feel feeding into this toxic environment was any good for anyone, so I stopped working for them on September 30th.
Now I am again living off my savings while I continue programming and learning on my own, currently fullstack stuff now, using Angular for the frontend and Supabase for the backend.
As a final note I think I have experienced both the good and the bad, and I now have a better view on the academical and work life. I do learn the fastest at work but I also learn a variety of other subjects when I study on my own, in the end I think I've balanced it fairly okay and I believe I can do great work with the experience that I've got.
And as for the future, I want to continue working as software developer, because I've always had an afinity for it and I really enjoy it as well. It's something I can hardly get tired of.
Programming languages
I love finding the right tool for the job, so I've tried and worked with a vast amount of programming languages. So here's a small list:
Java:
The first proper language language I've used, I had the fundamentals taught at school and saw it again in college, I don't really have any work experience with it but I can still do just fine with it.
C:
The next language I started learning alonside Java. I got really into it because of benchmarks I saw comparing the two languages, totally a blast and what made me focus more on low level stuff.
I worked with it at Athmos and Creed & Bear.
Python:
The language I started learning after sort of ditching Java.
After covering my low-level needs with C I needed something that would just help me script simpler programs.
Ruby:
I started learning Ruby after having seeing comparisons between it and Python and finding Ruby to be more elegant and simpler to read, as it looked almost like plain english at times, which was fun.
I made a couple small games with it using Ruby2D as I found it also nicer and better documented than Python's PyGame.
Sadly Ruby struggles now to keep up with modern standards and has stayed behind a lot of useful features like proper async support.
C++:
I started using C++ alongside C in small quantities as to integrate some nice things from C++'s std into my C programs.
I'm up to date with the modern standards and the upcoming C++26, which most likely is not gonna be implemented by most compilers until the year 2030 :D (just look at this feature support table for C++23, then look at the one above that).
Still a fun language to use as long as you use the memory safety features and factories instead of constructors.
Rust:
One of my favorite languages to use, and totally my #1 when it comes to low-latency networking and asynchronous programming.
I love its robustness and strict but necessary rules, although it's not the language I would use for very low-level stuff that need to be compiled into small binaries or needs interop with C.
I used this language when working at Creed & Bear.
Zig:
Also one of my favorite languages, it does everything C does and does it better. Even if that can sound a little harsh to good old C.
Even though it's not even close to a 1.0 release, it is a very featureful language that is also very versatile and feels like a simple better C. Even one of my ex-colleages uses it and seemingly likes it more than C.
My love for this language doesn't mean I am no longer able to use C, in the contrary, I've come to learn quite a few good practices in Zig that can totally apply to C. Besides interopping between both languages is extremely easy and a fun thing to do as well.
TypeScript:
I started learning TypeScript after trying JavaScript for a while and being kinda disgusted with the lack of proper typing and the huge amount of boilerplate needed to have a safe program to run and raise errors before it's too late.
I've used it mostly in the context of Angular for web development, making components for handling user interaction and working with databases.
I personally like how something as simple as adding types to JavaScript really makes it one of my favorite languages to use.
I've used this language in my last job.
Bash:
As a Linux user I've been forced to use Bash every once in a while to make some scripts and wrap applications.
I'm not the biggest fan of Bash but it's been really useful at times when the POSIX standard wasn't good enough and I needed something higher level inside a shell script.
I've also used other similar shells like Zsh and Dash (for full POSIX support, although not really needed).
-
Kind of a more obscure language, but truly one of my favorites and my main shell as of 2023.
It's amazing for working with structured data like huge JSON or CSV files that need to be modified in any way. It's like having the power of Pandas inside your shell. It has many other features but that truly has to be my favorite, I can just ease through modifying data without the need to make a Python script or open a spreadsheet application.
I've it used for making a few scripts when working in Creed & Bear and my last job.
Honorable mentions:
NASM/FASM:
Both amazing assembly compilers, specially FASM, which I love the most because it produces such small binaries.
Awk:
Used it a low before I knew of Nu. Still though a great tool.
Haskell:
My favorite language syntax-wise. I'm not really a math guy but the way Haskell looks so mathy makes me really love it. I also love monads and the fact that they're now used in many more programming languages nowadays.
CoffeeScript:
Used it before learning Typescript after wanting something that could compile to Javascript and would look more high level. I specially liked it because it looked a lot like Ruby, but same as Ruby, it has stayed in the past and never truly made a comeback.
MatLab:
Horrible language to work with, but I still learnt the fundamentals and was able to transpile a lot of code from it to Rust.
Final note
Everything written here is written by me without the use of AI, and so are the small pixelart images (I like drawing).