Data Models and Query Languages 

The Chapter 2 from “Designing Data-Intensive Applications” by Martin Kleppmann is covering concepts like data models and query languages.

Data models are having direct impact on how the software is written, but also define how we think about the problem we are working to solve.

There are multiple data models for data storage and querying and the most common used are relational models, document models and graph based data models.

Continue reading “Data Models and Query Languages “

Reliability, Scalability & Maintainability

When designing systems/services is about combining functional requirements (what the system should do) with non-functional requirements (quality attributes or ilities). The challenge here is to develop software with the right quality levels. And to solve this challenge, here comes the concept of Software Architecture Methodology which helps us to build a bridge between the problem space and the solution space.

My role, as an Engineering Manager, is also about technical leadership and helping my teams making the right technical decisions based on data, best practices and current expectations from our clients. And since I just finished to read “Building a Second Brain”, I include here my notes from the book “Designing Data-Intensive Applications” by Martin Kleppmann, a must-read in the system design field.

Continue reading “Reliability, Scalability & Maintainability”

Software Architecture Methodology

As developers, we are focused on solving problems. And these problems exist in the space we call software development. The main challenge in this domain is to develop software with the right quality levels. So here comes the concept of Software Architecture which helps us to build a bridge between the problem space and the solution space.

Being a technical leader or manager you may think that the architecture is the job of the architect, but to truly understand the big picture, and to guide your team to achieve the mission of the product you all build, this aspect is mandatory to be on your to-do list, not just on your team’s list.

“Software architecture is the fundamental organization of a system embodied in its elements, relationships, and in the principles of its design and evolution.” [IEEE Std. 42010-2011]

“The shared understanding that the expert developers have of the system design. Architecture is about the important stuff. Whatever that is.” [Ralph Johnson, one of the authors of “Design Patterns: Elements of Reusable Object-Oriented Software”, GOF]

Continue reading “Software Architecture Methodology”