Software Artisan
I am a software artisan with a unique foundation: I combine my Psychology degree with my current studies in Computer Engineering. This dual perspective allows me to approach software development not just as a technical challenge, but as a way to build intuitive, user-centric systems.
My technical experience spans a versatile stack. I have a strong focus on web technologies, an ecosystem that allows delivering custom solutions to clients without the need to download or install software. I primarily use TypeScript, React.js, Node.js, and Astro.js to bring web applications to life. I also have experience using languages like Python, Rust, and C++ for different purposes, when the web (rarely) is not enough.
I also enjoy thinking about system design and development. I love planning and tracing the data flow across the application, considering the implications on the client side and on the server side, as well as the way this data is manipulated. This allows me to create systems with architectures specialized for each case.
Why an Artisan?
Being a developer means creating solutions that solve people's needs. This requires understanding and knowing how to use various technologies, knowing how to think in software. More specifically, it requires knowing how to think in systems.
In modern times, building systems has become a formality to reach the result, but what many don't understand is that it is not simply a matter of coding and iterating quickly, but of understanding the underlying problem and delivering a tool, a solution, or a product crafted down to the detail to solve the problem. Just like an artisan, who guards their tools with zeal, who carefully carves their works, who thinks carefully about every aesthetic and functional detail of their work.
Developers are artisans. And that's what I call myself: A software artisan.
Thinking in systems is a fundamental and difficult skill to learn. This is so because it requires experience implementing systems that don't work, identifying why they didn't, and retrying until the system not only works, but is scalable, maintainable, and easy to change. It requires thinking about the intention you want to convey to the user with your work, and that fascinates me.