Last year around this time, I changed jobs, not because I didn't like it, but because I wanted to embark on a different path. Before starting the job search, I wondered what kind of developer I wanted to be and what kind of code I wanted to write. I've always thought that writing code is like writing a book, and of course, there are many ways to do it. It's something accessible to everyone; just grab paper and pen or a text application and a keyboard, and start unleashing creativity. But like in all things, there's a method, an organization, a structure to follow to achieve something functional, reusable, and sustainable. So, I began writing a list of things I wanted to achieve with my code. Here's the list:
- Clean
- Understandable, clear, simple
- Reusable
- Maintainable
- Structured
Obviously, it's not easy to achieve all these things; it takes dedication, hard work, and a lot of experience. Experience is one of those things that comes with time and is the result of many trials, errors, and finally finding the right path. It's a challenging and subjective theme; there are many articles and books on this topic. How to write good code, how to make beautiful pull requests, how to write fantastic commit messages, how to work in Agile, what not to do, and what to do instead. In short, a lot of fantastic words, but then how do we apply all this to ourselves? What do we really need to do? And what advice should we follow? It all depends on us, on why we want to study these aspects and if we work with other people.
Many times, I found myself reading articles on these topics and starting to apply them to my current experience. I was working on a solo project, so any path I chose was fine for me. Then I started working with other people, doing a shared project, and the first doubts arose. Is my working method still valid? Can I still apply the guidelines I set for myself? No, choices must be made, a common ground must be found with others, and what is functional for everyone must be reestablished. So, I started a new path, revisiting the same articles to see what had changed.
Things changed again; now we work in a team with people who have different roles and develop in different ways, so other guidelines must be found that can work for everyone and especially for the work we are doing. There are plenty of resources on the web that can help us understand this subject, but in the end, the most valuable school is the one in the field—experiment, choose, and acquire.
I'm reading this book, "A Philosophy of Software Design", very interesting, with many ideas to start from and reflect upon. Many questions arise when we start developing a product, a method, a function, when we refactor them, when we write comments. The journey to find one's own writing method is very long, but I am fascinated by how creative the path can be to arrive at one's style.
I am very happy to have started studying these aspects; it was also one of the goals for the year. Obviously, this is just the tip of the iceberg. Programming is an immense world that we probably will never fully navigate. I also think that's okay, and everyone should find their own course. It will be a long search, sometimes full of frustrations, but often also satisfying. The most exciting part is that there are always new things to discover and learn.
As the wise Steve Jobs said, "Stay Hungry, Stay Foolish."
That's all from this post. I hope you enjoyed it, see ya!😎