Puedes leer este articulo en Español aquí
“I want to program in Python”
I want to make a career change. I want to work with Python and become really good at the language, but I’m finding it difficult to get a job working with Python, so I’m going to create an open-source project for my portfolio. I already had to do the same thing when I moved from PL/SQL to PHP, and I know it won’t be easy, but I have to try.
Here is the whole story:
Falling in love with programming again
About 15 years ago, I decided to make a change in my professional career, and to be honest, it wasn’t easy at all. I had been programming in Oracle PL/SQL for more than five years. It was code running inside a database, and I was getting quite tired of it. After moving between different public administrations without learning anything new, people were starting to use Git, while we didn’t even have a proper version control system. Anything that wasn’t stored in the database was versioned as binary files, creating corrupted files one day after another.
Eventually, I started looking at what I could learn and decided to move into web development. This was around 2010. I spent a lot of time on the Spanish website Menéame, and since it was open-source software, I downloaded its source code and printed it on paper. Every night, I took a couple of pages to bed and, with a pencil, studied the code and took notes. I didn’t even know how to run it yet. The truth is that learning by reading a book hadn’t worked for me. As I read, I kept forgetting what I had read before. I wanted to learn by doing.
Between the code I was reading and the PHP documentation, I started learning how the language worked. This was the kind of PHP people still think we write today, so it was not exactly easy to follow. Then a friend I worked with told me about Symfony.
I read the documentation and loved it. It was the first time I had worked with a framework. I had already been programming for five years, but there were no frameworks for the kind of work I was doing. So the idea of “don’t reinvent the wheel” was something I really liked.
To learn how it worked, I started developing a web application. At that time I was really into photography and spent a lot of time on photo analysis forums, so I created a platform where people could share photos and comment on them. They could even edit the photo directly in their comments to show what they meant or give advice.
I called it Picmnt, a combination of Picture and Comment.
I started using the beta version of Symfony 2. People told me there were a lot of changes between version 1 and 2, and since I was starting from scratch anyway, I thought it was better to use the new version. Not long after that, I went to a conference, the legendary “deSymfony”, where I learned a lot and made many contacts. This eventually led to the Symfony Madrid group, where I became one of the organizers.
It was a great time. We used to move between different tech groups around Madrid: Symfony Madrid, Madrid Agile, Madrid JS and many others. Everything was great, really. But I was still working with PL/SQL for a government ministry, doing the same thing over and over again, eight hours a day, five days a week.
“But you are a Database guy”
At that time there was a startup boom, and there was a lot of demand for web and Symfony developers. I remember going to conferences where companies were looking for developers and interviewing people. Other times, someone would post a job offer in one of the groups and I would send them my CV.
But I always got the same answer:
“Sorry, but you are a database guy.”
It was hard because they wouldn’t even interview me. The people who replied did so just to tell me that, and the rest didn’t reply at all. So, after feeling pretty depressed for a while and spending some time at the bottom of a pit of frustration, I decided to take action.
Going to production
I was tired and close to giving up, so I started learning about systems administration on my own. I had already taken a couple of GNU/Linux administration courses, and AWS was starting to become a thing at that time, so I took the opportunity to catch up. I rented a small VPS and deployed my web application. I started polishing it and making it actually usable.
I didn’t have any users, and honestly, I didn’t want any. All I wanted was to be able to say:
“I’m not a database guy. That doesn’t exist. I’m a programmer who has worked with databases, but I can do other things too. Like this.”
I wanted to be able to show a project with its source code, running in production. It wasn’t the best code in the world. I’m an average programmer, but there it was: running on a server I had set up myself, with an automated deployment system.
One day I had an interview at a startup and they let me show it to them. We looked at it together. It wasn’t anything amazing, but apart from a few bugs — a demo without bugs isn’t a demo — it worked. It was an interview in a coworking space, and I remember them asking me:
“Would you mind looking at some code with me?”
They had a bug, and we solved it together. I already had a job, and I like to think it was thanks to my pet project.
Since then, I’ve spent the last 15 years working mainly with PHP. As people got to know me, I was given other opportunities, including working as a DevOps engineer — I know DevOps is a philosophy, but you know what I mean. People I had worked with on other projects even offered me jobs at other companies to work with JavaScript, Python, AWS, GCP… and even Scala. They knew that a programmer isn’t “a PHP programmer” or “a Python programmer”. A programmer is a programmer.
Back to the beginning
So, why am I telling you this whole story? — I appreciate and feel sorry for you in equal measure if you’ve made it this far —
Because I’m back where I started:
“You are a PHP programmer.”
I love Python. I’ve been doing things with Python for many years. Looking through my GitHub, I can see that I was already publishing some Python code back in 2013, if I remember correctly, during the Python 2 vs Python 3 war.
And I want to work with Python, properly.
I’m tired of CLI automation, scripts, and so on. I want to apply everything I’ve learned during these 20 years as a backend developer to Python. But nobody is giving me the opportunity. Today, for example, I was rejected without even getting an interview. I sent my CV and an hour later I had already been rejected because I didn’t fit the profile.
But well, that’s how it is.
So, what am I going to do?
The same thing I did before.
A new Python project
I’m going to build a project in Python, using both the standard library and modern libraries and frameworks. On top of that, I’ll deploy it on one or more servers, with a CI/CD system and monitoring and alerting. It’s going to take a long time, but I’ll build it little by little, whenever I have some free time.
Actually, I’m also learning about programming with AI agents, and frontend development is something I don’t like — or rather, I’m not very good at it and I’m not particularly interested in it. So I’ll use AI for that part, to show that I also know how to use it, including agents, sub-agents, skills, etc. But only for the frontend. I’ll write the rest myself, by hand, reading the documentation.
I’ve also thought about documenting the whole process here, but we’ll see. Time is what I have the least of. I wish I had as much time as I have motivation.
EVE Online
EVE Online? What’s that?
Well, it’s an amazing game. And to get the most out of it, you basically need to have an Excel spreadsheet open next to you.
Since I couldn’t think of what to build the project about, and I’m currently hooked on EVE Online, that’s what it’s going to be about. EVE has a very well-documented and complete REST API, and I don’t like Excel, so I’m going to build a web application for my personal use to manage my characters and their finances. The application will be open source in case anyone finds it useful, although it will be more of a playground for technologies than a finished product.
Conclusion
So that’s where I am right now. I want to move to Python, the job market is not great, and nobody wants me :(. So I’m going to start a project from scratch without having much time to work on it, and on the first day I finally find some time to start, I use it to write a post on a blog I’ve abandoned.
Thanks for making it this far. I hope I can actually do what I’ve said above and share my progress with you.