Every time I transform sacrifice into satisfaction, I get new skills.

The struggle of creative work is what brings me closest to fulfillment, and these are the areas I've been developing myself in.

Programming

Like almost every newbie programmer, I fell in love with a bunch of programming books: Clean Code, Clean Architecture, The Pragmatic Programmer, Extreme Programming, TDD by Example, Composing Software, and the list goes on. For years, my main goal was to write the best code possible. Code written "the right way."

But over time, I started to realize that the best possible code depends on factors that go beyond the code itself. I learned that code isn't the end, but just the means, much like a hammer, and people don't want hammers; what they really want are well-fixed nails at the lowest cost. When programming, I no longer aim for the best hammer, but for the most cost-efficient one.

Programming very quickly something that works very well is the sentence that best describes the way I code, whether I am in the office of the company I work for, or at home, building my personal projects.

Writing

In a world of instant messaging, good writing has been downgraded to second-class citizen. Unfortunately, writing well is an underrated skill. We often hear that a five-minute chat can save numerous emails, but rarely do we hear that well-written text can save dozens of meetings.

By reading essays written by Jason Fried, Ricardo Semler, and Derek Sivers, and novels by Orwell, Salinger, and Saramago, I discovered that writing well is one of the most sophisticated skills one can have. Communication that relies solely on written words demands extremely well-organized thinking, a broad vocabulary, plentiful references, and the ability to see things from the reader's perspective. Good writing is actually the consequence of many other skills.

Far below the giants I mentioned, I have been trying to improve my writing by publishing a new post on my personal blog every month. Some of these posts have been featured in newsletters such as ECMAScript News, JavaScript Weekly, This Week in React, React Digest, and Full Stack Bulletin.

Design

Before I became a programmer, I worked as a designer for over seven years. Design is a field that I deeply admire. Few things inspire me more than a skillfully-designed product.

But designers have come up with dozens of ways to make the work of design much more complex than it actually is. There are interface designers (User Interface Design), but there are also experience designers (User Experience Design), as if an interface designer could keep their work apart from the user experience. When a designer defines a color palette with insufficient contrast, they harm the user experience. The same happens when they make a button too small. Graphical interfaces and experience aren't separable, just as experience and information architecture aren't. Design is always about experience.

Design is nothing more than what it has always been: the concern for how enjoyable and easy it is to use a product. Whether I'm creating an open-source library, animating a progress bar, or designing graphical interfaces, that's the only concern I have on my mind.

Product

I love making products. Still in the beginning of my career, I tried to develop some products with a couple of workmates. Three times, we tried to create something sellable: Hookfy, Octocash, and Abxtracted. They all failed.

In 2021, I tried for the first time to create and sell a product on my own: Typenik. I managed to sell three licenses, making a total revenue of twenty-seven dollars. A business flop, but a big win for someone who, for the first time, found out he could build and sell a product independently.

My experience with these four projects, combined with some books I read, taught me all I know about product development: almost nothing. I learned that reality is a constant surprise, and the chances of it proving my assumptions wrong are always huge. When developing a product, three reminders are always on my mind: it's better to fail cheap; only the real world (not friends, relatives or usability tests) knows what truly works; and a few pearls are worth more than many mussels.