Tag: software-development
- Continuous Learning Framework vol. 2 (12 Oct 2023)
Exploring unknown unknowns, implementing radical incrementalism, finding a talent and staying a human. - How Codebase Structure Shapes System Predictability (18 Sep 2023)
The structure of the codebase should visually communicate the main functionalities and responsibilities of the system. This at-a-glance understanding helps developers, new team members, and stakeholders quickly grasp what the software does and how it's organized. A well-structured codebase is like a well-organized library. It allows developers to quickly locate specific pieces of code, modules, or functionalities. This ease of navigation reduces the time spent searching and promotes efficient development and debugging - Strategic Domain-Driven Design by Example: Subdomains (03 Jul 2023)
A business domain refers to a specific area or aspect of a business or organization's operations, activities, and expertise. It represents a distinct sphere of knowledge, processes, and rules that govern the organization's functions and activities within a particular industry or market. Understanding what our business domain consists of and what are relationships between these parts are is crucial as it enables effective organization, modularization, and prioritization of development efforts, resulting in improved system design and alignment with business needs. - The Power of Conventions in Software Development (13 Jun 2023)
A convention is a widely accepted and agreed-upon practice, rule, or standard that guides behavior, decision-making, or design within a specific context. It provides a framework for consistency and promotes shared understanding and predictable outcomes. Conventions can play an important role in reducing cognitive load in software development. - Repository Pattern in Golang: Redis and External API as providers (09 Jun 2023)
The Repository Pattern is a software design pattern that provides an abstraction layer between the business logic of an application and the persistence layer (typically a database). It helps to separate the concerns and provides a consistent interface to access and manage data. - Step-by-step guide to safely introducing high-risk changes in your software system (02 May 2023)
When introducing a change to a software system, it's essential to do so in a way that minimizes the risk of unintended consequences or negative impact on users. Even if we have a new solution tested, we can still be afraid of deploying it at scale because of the high cost of possible errors. It's important to plan and coordinate any changes to a software system carefully, and to communicate clearly with users about any potential impacts or downtime. - Kubernetes - first steps (24 Jan 2023)
A few days ago I started my journey with Kubernetes. I would like to share how you can take the first steps with this complex tool and not feel overwhelmed. - 5 traits of a successful team (18 Dec 2022)
Building effective teams are one of the organization's primary concerns. People working in agile methodologies recognize the value of flexibility, continuous collaboration, and development process refinement. However, I would like to demonstrate that agility does not have to embrace change and fluidity in all aspects of software development. In this article, I will discuss several team traits (goal, autonomy, size, longevity, stability) and consider how these things affect team performance. - How to visualize your system architecture using the C4 model? (10 Nov 2022)
As a software developer or system architect you often have a task to visualize your existing or potential application architecture for other people. Your audience can be software developers, but also business stakeholders (Customers, Product Owners, CEO, etc.). The architecture diagram should take on a distinctive look depending on whatever group you choose to present for your work. - Continuous learning framework (12 Aug 2022)
Software development is a field that demands continuous skill improvement. Technology advances rapidly and to be successful you must find a balance between a destructive attempt to be up-to-date at all costs and clinging to your comfort zone by taking the same repetitive tasks all the time. There is a huge difference between 5 years of experience doing the same, and 5 years of experience practicing new things and taking on challenges. Here I have some tips from my experience, on how to build your continuous improvement framework. - Different types of application logic (04 Jul 2022)
In this post I would like to show that business rules can fall into various categories and what implications it could have. - Coupling. Two perspectives (14 Dec 2021)
Coupling is a concept used in software engineering to define how tight is a relationship between system components (classes, modules, subsystems). Coupling is strictly connected to cohesion concept ("togetherness" of a component) and there is a common heuristic for software developers that we should design components that have high cohesion and are loosely coupled.