The Valuable Dev - Should We Follow the Open-Closed Principle?
Monday Greetings, Valuable Developer!
I hope you have a great day and everything’s going well on your side!
After spending a week in France without a computer and Internet, I’ve new ideas, and fresh views on old ones. I feel more inspired, rejuvenated, and more motivated.
Usually, I spend most of my time writing stuff, or coding behind a screen. I love it. But it’s difficult for me to assess my level of fatigue, and when I should disconnect.
That’s why I think we should, from time to time, do exactly that: switch off our computers, even our phones, and just trying to connect more deeply with our loved ones, ourselves, and with the world in general. A screenless experience, if you will :D
The question now is: how to do that? If you have any strategy to assess your level of fatigue or to oblige yourself to stop, please let me know by hitting this “reply” button. I’d be glad to read them!
Back to The Valuable Dev: I’ve written this month a piece about the Open-Closed Principle.
Should We Follow The Open-Closed Principle?
The Open-Closed Principle was born at a time when inheritance was considered the solution for too many problems. Robert Martin’s own reinterpretation doesn’t really make sense: we shouldn’t create abstractions each time we want to modify our code, but each time we want a new semantic level in which one can be, as Dijkstra stated, absolutely precise.
Updates
I began to write a new book! This one will be exclusively about Vim and Neovim. I’ve hesitated to begin this project, there are already many resources about the topic out there. Would I be able to say something new? But I’ve also seen the overwhelming positive feedback I had after publishing my series of article to learn Vim from the ground up, so I thought it could be useful to some of you.
So, in short, the book will be heavily based on the series I’ve written. I’ll add new chapters to it, to zoom on specific aspects of Vim; for example, how to navigate into big projects, or how to search effectively.
The first part will be almost exclusively about vanilla Vim (like my series of article), the second one will be both about vanilla Vim and plugins to enhance the experience.
A landing page will be available soon. You’ll be able to subscribe to a newsletter to receive some news about the advancement of the book. I encourage you to participate, too: I’m always glad to get feedback and ideas to make my work more helpful! I’ll only write this newsletter when I’ve new interesting stuff to say, so don’t expect a mail every two days, or even every two weeks. Quality over quantity.
Articles & Videos
-
The article Goodbye Microservices: From 100s of problem children to 1 superstar is a good reminder why microservices are not the solutions to all problems. Distributed monoliths (coupled microservices) are the worst systems I’ve ever worked with.
-
Another article about event sourcing. It’s a trendy design pattern I see everywhere nowadays, and again a source of high complexity.
-
An interesting talk about four languages from forty years ago, and what we can learn from them.
Books
Some of you wanted book advice for developers, so I decided to add this new topic in the newsletter. I’ve read many books directly related to software development, and here are the ones I find consistently good without being confusing or outdated:
- The Pragmatic Programmer - To me, the best book about software development. Pretty easy to read, not too long, and full of good advice.
- Refactoring: Improving the Design of Existing Code - Developers spend most of their time maintaining existing codebases. Refactoring is one of the most important skills to nurture, and this book will give you some keys to get better.
- Working Effectively with Legacy Code - Testing and refactoring goes hand in hand, and this book is a good one about both subjects. I’ve seen too often codebases without tests; it’s simply a nightmare to maintain and debug. Don’t do this at home, and read this book instead!
I’ll share new books every month in this newsletter, not always directly related to software development. First because you can find these lists everywhere, and second because software development is not only about software, but also about communication, learning, system thinking, problem solving, and so on.
Mouseless
- The CLI miller is a powerful tool to manipulate plain text, or structured data like JSON or CSV.
- just is a CLI aimed to automate your workflow. I’m sure you always have to run the same commands depending on the project you’re working on; this tool can automate all of that easily. I’ve discovered it thanks to this interesting blog post.
Next Month’s Article
I’ll publish another article about Vim next month!
Let’s Connect
If you want more information about the content of this newsletter, or if you have any question, you can hit the wonderful “reply” button. I’m always happy to receive emails!
Similarly, if you think this newsletter is boring, if you didn’t like my last article, or if you have any feedback of any sort, don’t hesitate to reach out.
Thanks a lot for your interest in my work, and see you in a month!