Post

Recent reads i recommend in tech

We cannot afford to fall into technical monotony and get carried away by the same ways of doing things over and over again and in the way we already know. We need to make an effort to keep learning and stay updated whenever possible according to your context and circumstances.

Continuous learning or lifelong learning. Among so many interesting books, the important thing is to choose well which ones to read and which of them will become our advisors. I would like to share some comments on the books I have read in recent months and that I recommend you read.


2015 - Author: Sam Newman


Over time, and if not enough attention is paid, it is easy to generate a monolithic architecture or arrive at a monolithic architecture converted into a large coupled system or Big ball of mud. The principles can be followed: Single Responsability Principle, Separation of Concerns, Low Coupling & High cohesion using a monolithic architecture although you will be limited to a single joint system with all the coupled functionalities. As far as possible and necessary, we must go a step further and divide the system according to its responsibilities.

The Domain Driven Design approach and its strategic patterns already introduced the division of the domain into the so-called Bounded Context and how they collaborate with each other through the Context Mappings. The proposal of a microservices architecture is based on the greater division of responsibilities and developing a set of small microservices that will support a distributed system. The book advises us on the best strategies to disaggregate the unique database of our monolithic system into several databases that support the various microservices according to the responsibility of each one and how to manage the relationships of the tables in the division. As well as automation strategies and tools for deploy/deployment to deploy them in an isolated, autonomous and transparent way for the whole system, such as Docker.

This granularity in the microservices allows us to choose the ideal programming language depending on its responsibility, scale and track errors more efficiently. API REST as the main protocol for access, collaboration and consumption. Tracing tools that allow the monitoring of all activity between microservices, such as ELK (ElasticSearch, Logstash y Kibana).

I was struck by a comment in which we should prioritize the non-compliance of DRY (duplicating code in microservices) in order to favor Single Responsability Principle, Separation of Concerns, Low Coupling & High cohesion. Given that the inconveniences generated in the coupling that occurs in the reuse of code between independent components can be worse. It recommends some strategies in the UI layer to generate them through requests to several microservices that return HTML content or the information necessary to perform the rendering on the client. Also called Composed UI*You can buy it [here](https:// information here:**


2015 - Author: [Scott Millett](http://www. I solved many of the interpretation doubts I had pending.

In the first part of the book, it focuses on explaining the strategic patterns of DDD to deepen in later chapters on more tactical topics such as CQRS, patterns that will help us in the development such as Command (processor) pattern, Double Dispatch pattern, [Memento pattern](https://es.wikipedia.org/wiki/Memento_(patr%C3event-store/), reconstruction of aggregates.

As well as other design patterns such as the Repository pattern, Unit of Work pattern, Table Module pattern, Data Driven programming, Model Driven, Active Record pattern, Transaction Script pattern or Mediator/Visitor pattern. All of them explained with graphics and examples. It also names some antipatterns such as God Object or Anemic Domain model.

It is a highly recommended book due to the large number of code examples where it reflects much of the theory of the tactical patterns of the DDD approach, as well as some of the most used design patterns. The book solved many doubts regarding CQRS/ES and reconstruction of aggregates through the Event Stream and the management of projections or snapshots that help to reconstruct the aggregate in a more efficient way. RPC, SOA, EDA, eventual consistency and other interesting concepts with code examples. It also dedicates certain chapters to explain the main tools and most useful techniques that will make it easier for us to follow the recommended patterns and practices such as: Fluent API, MassTransit, NServiceBus, RabbitMQ. I am sure that it will be a book that I will consult on many occasions.

You can buy it here.


2008 - Author: Robert Cecil Martin.

It teaches us good practices that will help us improve the readability and maintainability of the code we generate over time. Guidelines and recommended guides to create well-structured quality code. With code examples in each case. In the first part of the book, it explains what clean code is and what benefits we will obtain to then make us understand the best practices through examples of code refactoring. Coding with the intention that anyone can understand the code, whether they know how to program or not.

The importance of the order of declaration of the elements, as well as the descriptive names of the variables, properties, methods, classes, modules, etc. The great benefits of test coverage and the recommendation to always perform TDD whenever possible following the principles of the correct generation of unit tests through F.I.R.S.T.

Finally, it provides us with information to be able to detect code fragments that need to be refactored or code smell. I’m sure the same thing will happen to you as it did to me: as soon as you’ve read it, you’ll regret not having done it before :)

You can buy it here.


2014 - Author: Sandro Mancuso.

Understand and give the necessary importance to the technical quality of the product we deliver. Giving importance to knowledge and constant practice to be better professionals day by day. Paying attention to the entire process in the delivery of product value, getting involved in the solutions from beginning to end. Sandro Mancuso tells about his beginnings and how he evolves in the various stages of his professional career. Highlighting the importance of taking the correct steps, guiding and deciding at all times what is best for our professional future without leaving it to chance or that others can decide for us.

Keep our knowledge and skills updated through continuous learning and training, sharing it with the community. There are meetups groups in various cities where they perform Katas or development practices where to train our skills: Software Craftsmanship Barcelona The book dedicates several chapters to giving advice and explaining good practices to attract talent and passion to the organization. Since traditional personnel selection processes are not refined enough to attract true talent to the company.

Using comparisons of traditional job offers with a new recommended model where an attempt is made to capture the passion for technology, giving an important role to quality in the development of its products. Reflecting a company culture that is committed to continuous internal knowledge and with active collective collaboration for the continuous improvement of its products.

The great benefits of using eXtreme Programming techniques: TDD, BDD, Code review, Pair programming, Mob programming and other techniques that are committed to technical robustness, improving the final result of the product, customer satisfaction and its good evolution over time. Despite focusing on the importance of quality, the book advises us to be pragmatic and not fall into the excessive theory of all the topics that can become an obstacle in decision-making and in the agile development of solutions focused on the delivery of product value. You can buy it here.

This post is licensed under CC BY 4.0 by the author.