How IT goes ?
Blog about software development, work-life balance, productivity and remote working.
Most recent articles
December 3, 2022 • 3 min read
DRY (Don't Repeat Yourself) principle
The DRY (Don`t Repeat Yourself) principle is a software design principle that states that every piece of knowledge in a system should have a single, unambiguous representation. The DRY principle is based on the idea that duplication of code, data, or knowledge results in increased complexity and decreased maintainability of the system.
Read more
November 5, 2022 • 3 min read
Dependency Inversion principle
The Dependency Inversion Principle (DIP) is a software design principle that states that high-level modules should not depend on low-level modules, but rather both should depend on abstractions. This means that the design of a software system should aim to minimize the coupling between different parts of the system, and to maximize the use of abstractions.
Read more
October 1, 2022 • 3 min read
Single Responsibility principle
The Single Responsibility Principle (SRP) is a fundamental principle of software design that states that a class or module should have only one reason to change. This means that each class or module should have a single, well-defined responsibility, and that responsibility should be encapsulated by the class or module.
Read more
September 3, 2022 • 3 min read
High cohesion principle
The principle of high cohesion refers to the idea of designing components or modules in a system such that each component or module performs a single, well-defined task and is tightly focused on that task. High cohesion means that all the elements inside a component or module are highly related to each other and work together to achieve a common goal.
Read more
August 6, 2022 • 3 min read
Loose coupling principle
The principle of loose coupling refers to the idea of designing components or modules in a system such that they have minimal dependencies on each other. The goal of loose coupling is to make the system more flexible, scalable, and maintainable by reducing the impact of changes made in one part of the system on the rest of the system.
Read more
July 2, 2022 • 3 min read
Encapsulation principle
Encapsulation is a fundamental principle of object-oriented programming and software design. It refers to the idea of wrapping data and behavior within a single unit, called an object, in order to hide implementation details and protect the internal state of the object from external modification.
Read more
June 4, 2022 • 5 min read
Abstraction design principle
Abstraction is a design principle that emphasizes the creation of abstract representations of complex systems or objects, by hiding their underlying details and exposing only the relevant aspects. The goal of abstraction is to simplify complex systems, making them easier to understand and use.
Read more
May 7, 2022 • 4 min read
Modularity design principle
Modularity is a design principle that emphasizes the separation of a software system into independent, self-contained components, known as modules. The goal of modular design is to make the system easier to understand, maintain, and evolve over time.
Read more
April 2, 2022 • 3 min read
Separation of Concerns principle
The Separation of Concerns (SoC) principle is a software design principle that states that a software system should be decomposed into distinct and independent components, each of which is responsible for a specific and well-defined aspect of the overall system`s behavior.
Read more
March 5, 2022 • 5 min read
Design architecture principles
Software architecture refers to the high-level structure of a software system, the discipline of creating such structures, and the documentation of these structures. It`s the blueprint for the software system, providing a solid foundation on which software can be built. It needs to be designed well in order to sustain the system`s growth and make sure that future changes can be accommodated without massive rework.
Read more
February 5, 2022 • 3 min read
CAP theorem
CAP theorem is a concept in distributed computing that states that it is impossible for a distributed system to simultaneously provide all three of the following guarantees: consistency, availability and partition tolerance.
Read more
January 2, 2022 • 3 min read
Distributed system
A distributed system is a network of computers that work together to achieve a common goal, as if they were a single system. The term "distributed" refers to the fact that resources, such as processing power, memory, and storage, are spread across multiple devices, rather than being located in a single, central location. In a distributed system, each device has its own local resources and runs its own instance of the operating system, and they communicate with each other over a network to coordinate their actions and share information.
Read more

We use cookies to improve your experience. By using our site, you agree to our use of cookies. Read our Privacy Policy for more information.