I got lucky early. In Brazil in the nineties, having a computer at home was not a given — and I had one, because my father worked with them. That is the whole of it: not talent, not timing. Access.
The second piece of luck looked like a punishment. My father liked Kurumin, a Brazilian Linux distribution built on Knoppix, and he made us use it. No Windows, no arguing. At the time it felt arbitrary. In practice it meant I was reading filesystem paths, mounting drives, and fixing my own boot problems while my friends were double-clicking icons. Being forced onto the harder path gave me an understanding of how machines actually work, years before I would have gone looking for it.
For a while I thought hardware was the thing. I took machines apart, swapped memory, cleaned power supplies, and rebuilt them for anyone who asked. Then in 2005 I signed up for a course that taught Java, and that was it. Software had a quality that hardware never had for me: I could keep changing it. A machine you repair goes back to what it was. A program you write becomes something else. I never left.
The decision that shaped the rest of it came later, at university, when I picked up Python. Switching meant walking away from more than eight years of Java — everything I was fluent in, every problem I already knew how to solve. I did it anyway, and it turned out to be one of the best calls I have made. Not because Python was better. Because it broke the assumption underneath the question. A language is not an identity; it is a tool with a shape, and the shape suits some problems and fights others. Once you have seen that from the inside, you stop defending languages and start choosing them. Java, Python, Clojure, Ruby — each one has been the right answer to something, and the wrong answer to something else.
Twenty-one years in, that is still the part that keeps me here. Not the stack. The fact that there is always another shape to learn, and the job rewards you for going and finding it.