Switching to Python: Notes from a Ruby Developer

Switching to Python: Notes from a Ruby Developer
Photo by David Clode / Unsplash

During the time I was away from blogging, I have been moved from Indeed Flex to Indeed and have started working with Python more which is quite a significant change to be honest.

I believe it came about as a result of my survey answer to the question that goes something like "How proficient are you at Python?". If I remembered correctly, I foolishly thought to myself, I have read (read="skimmed through") several Python beginner books and have done one or two projects; what's the worst that could happen if I choose "Intermediate" as my proficiency level.

Of course, when it dawned upon me that my work with Ruby will be reduced significantly and Python would be my daily driver, it took me nearly a month to recover from the shock. This transition marked a big shift in my career, given the fact that I've always identified myself as a Rubyist with ambitions of developing my skills further to be able to contribute as well as start my own open-source projects.

Having spent nearly 10 years working with Ruby, I was accustomed to the "Rails way" of development. Switching to Python initially felt like learning a new language both literally and figuratively.


Ruby and Rails had been my go-to language and framework for a long time. Its elegance, focus on developer happiness, and the conventions of Rails made development feel intuitive and enjoyable.

Python, on the other hand, brought a different flavor to programming. Its simplicity and readability stood out, but I quickly learned that simplicity doesn’t mean there aren’t new knives to avoid cutting myself.

Managing imports and organizing modules/files are something that I have never needed to do with Ruby/Rails. With Rails, every file represents a class that will be automatically imported once it's called into action.

With Django that holy commandment has been broken to pieces and one-class-belong-to-one-file rule is no longer applicable. That freedom and a curse threw me around a loop, leaving me struggling to regain my composure.


As I settled into Python, I was struck by the vast ecosystem of libraries and tools it offers, especially in fields like data analysis, data science, machine learning, and generative AI.

Pandas, NumPy, Scikit-learn, TesorFlow opens up new world of possibilities and opportunities that I have never thought of before.

Of course, every blog post these days have to mention Generative AI. Initially, I was reluctant about the trend, feeling it was overhyped. While that sentiment may still hold some truth, I decided it was worth exploring so I wouldn't miss out.

I used OpenAI's Playground to get a feel for how APIs generate text, played with LM Studio to try out other models, and experimented with tools like GPT4ALL and etc.

For example, while writing this post, I’m using ChatGPT’s canvas feature for the first time, and wrestling with it so that it writes like a person who doesn't have a stick up above their butt.


As I continue my journey with Python, I’m quite excited about the opportunities it brings. My current focus is on deepening my knowledge of Python’s libraries for machine learning and AI, but I’m also looking forward to building projects that leverage these tools.

I’m also eager to see how this transition shapes my career. Moving into Python has broadened my skill set, but it’s also changed how I think about problem-solving and software development.


If you’re considering a similar transition or learning a new language, my advice is simple: embrace the challenge. Stepping out of your comfort zone is never easy, but it’s often where the most growth happens. Python may not be Ruby, but I’ve found it to be an incredible language in its own right. I’m excited to see where this journey takes me next.