Keep everything in version control
Jul 10, 2025
store
subversion
git
mercurial
cvs
life
version
project
code
repository
system
3 min read
Store everything related to any of your projects in a version control system. The necessary resources are already available: free tools like Subversion, Git, Mercurial, and CVS, ample disk space, cheap and powerful servers, ubiquitous Internet access, and even project hosting services. Once you have installed the version control system, saving your work in the repository is very simple: just execute the corresponding command in the clean directory with the code. And you only need to master two new basic operations: committing (commit) changes you made in the code to the repository, and updating (update) your working version of the project to the one in the repository.
Once the project is placed in the version control system, you can easily view its history, find out who wrote each piece of code, and refer to a specific version of a file or project using a unique identifier.
...
➦ To do something hastily and run away is a crime
Jul 09, 2025
john
run
time
tests
code
work
3 min read
It’s getting close to evening. The team is diligently working on the new functionality planned for the current iteration; it seems even the air in the room is pulsing with the rhythm of work. However, John is a bit in a hurry: he has a date waiting for him. However, he manages to finish writing his part of the code, compiles it, registers it in the version control system – and hastily leaves. A few minutes later, the “red light” comes on: the application build is broken. John didn’t have time for automated tests, so he went with the “hack and run” principle, which caused the entire team’s work to come to a halt.
The situation has changed – the work rhythm has been disrupted.
...
➦ Prevent the occurrence of errors
Jul 08, 2025
july
dd
recording
date
errors
user
users
instructions
3 min read
Error messages are the most critical form of interaction between the user and the system. They arise when the user’s communication with the system is on the verge of breaking down.
It is easiest to assume that errors occur due to user fault from entering incorrect data. However, the mistakes people make are predictable and happen systematically. Therefore, you can “debug” the interaction between the user and the system just as you debug the interaction between other components of the system.
Let’s say the user needs to enter a date within a specific range. Instead of allowing them to enter any date, wouldn’t it be better to provide a tool like a list or calendar that shows only the permissible dates? This would eliminate any possibility of entering a date outside the allowed range.
...
➦ Do not repeat your code
Jul 04, 2025
in •
DRY
•
METHOD
code
repetition
abstract
strategy
dry
open
closed principle
srp
principle
software
logic
duplication
3 min read
“Don’t Repeat Yourself (DRY)” is probably one of the most important principles of programming, and it underlies many other well-known correct approaches and design patterns in software development. A developer who has learned to recognize duplication and can eliminate it using appropriate techniques and suitable abstraction is capable of writing much clearer code than one who constantly clutters the application with unnecessary repetitions.
Code duplication is ballast Every line of application code requires maintenance, and it serves as a source of potential errors in the future. Duplication leads to unnecessary increased code volume, which raises the likelihood of errors and makes the system overly complex. Increased system volume due to duplication, firstly, it prevents developers from fully understanding the system, and secondly, it does not guarantee that changes made in one place do not It will be necessary to repeat it in other places where this logic is duplicated.
...
➦ You are negotiating
Jun 29, 2025
servers
system
manager
need
server
3 min read
Have you encountered projects where reasonable technological solutions are “buried” for the sake of saving costs?
The conversation goes something like this: “Do we really need X?” asks the project manager. You can substitute X with almost anything essential for system operations: software product licenses, redundant servers, external backups or power sources. The question is always asked in a fatherly tone, as if you were spending all your pocket money on comics and chewing gum, while serious adults need to think about buying new buckets in which they will carry their future profits.
The correct answer to this question is: “Yes. Absolutely necessary.” But for some reason, almost no one responds.
After all, we have a technical education, and any technical discipline is an art of compromise.
...
➦ Warning - Common code ownership
Jun 25, 2025
study
code
context
dependencies
parts
number
2 min read
My first project in the company. I just defended my thesis, and I’m eager to prove myself, so I stay late at work and thoroughly study the existing code. Working on my first task, I apply everything I’ve been taught: comments, event logs, extracting common code into libraries (where possible), all that stuff. I feel completely ready for code review, but my colleagues seem to pour cold water on me: I get criticized for code reuse!
How so? During my university studies, code reuse was hailed as one of the best practices in software development. All the articles and textbooks I read, guided by experienced professional programmers—were they all wrong?
It turns out, I overlooked something very important. Context.
The fact that two directly unrelated parts of the system use the same logic means less than I thought.
...
➦ Architectural compromises
Jun 22, 2025
in •
ATAM
•
CBAM
•
COST
•
COST BENEFIT
•
COST BENEFIT ANALYSIS METHOD
•
INSTITUTE
•
ITALIAN
•
ITALY
•
METHOD
•
POLAND
•
SWEDEN
•
SWEDISH
•
VAZA
vaza
sweden
poland
king
time
soa
atam
architecture tradeoff
benefit analysis metod
sei
software engineering institute
architecture
software
ship
ships
swedish king
italy
benefit analysis method
cbam
2 min read
An architecture cannot accomplish high security, high availability, high abstraction, and high performance all at once. All that software architects need to do is know, understand, and relate one real narrative to their peers and clients. I am speaking of Vaza’s history.
In 1620, there was a war between Sweden and Poland. An attempt was made to bring this expensive war to an early end by the Swedish King by ordering the construction of a galleon known as the vase. The ship was not like the others. It was unlike any other ship of the time in its features. It had to be longer than sixty meters in order to safely convey 300 men at a time to Poland while also carrying 64 weapons on two battery decks.
...
➦ First say yes
Jun 21, 2025
in •
EDAMAME
edamame
product
request
round
windows
work
3 min read
Recently, I was at the grocery store and searched for edamame, green soybeans (I only vaguely guessed they were some kind of vegetable). I didn’t I knew where to look for this product: in the vegetable section, in the frozen section. products or on the shelves with canned goods? Finally, I gave up and asked a store employee for help. She didn’t know either!
The store employee could have reacted to my request in different ways. She could have made it clear that only a fool doesn’t know where to look for it, or just brushed it off. vague hints, or even just say that they don’t have such a product. But she deemed it possible to find a solution and help the customer.
...
➦ Two mistakes can cancel each other out, making them difficult to correct
Jun 16, 2025
code
allan klumpp
apollo
everything
timetolive
problems
fix
defect
users
3 min read
Code never lies, but it can be internally contradictory. Sometimes contradictions cause confusion: how can this even work?
In his interview, Allan Klumpp, the lead software developer for the Apollo lunar module, revealed that the engine control software contained a defect that caused the lunar module to behave erratically. However, there was another bug in the program that compensated for the first one, and during the Apollo 11 and 12 moon landings, this software was successfully used before the bugs were discovered and fixed.
Let’s consider a function that returns an exit code. Let’s say it returns false when it should return true. Now imagine that the calling function does not implement the check for the return value. Everything works perfectly until one day someone discovers the lack of a check and adds it.
...
➦ Only the code will tell the truth
Jun 09, 2025
code
comments
program
source
description
3 min read
In the end, the semantics of a program are defined by the working code. If you only have it in the form of a binary file, it will be difficult to read! However, the source code is usually available if it is your own program, a typical commercial development, an open-source project, or a program in a dynamically interpreted language. When reading the source code, the meaning of the program should be obvious. You can confidently know what the program does just by looking at the source code. Even the most precise description of technical requirements will not tell the whole truth: it contains not a detailed description of what the program actually does, but general wishes of the requirements compiler. An architecture document may contain a description of the planned architecture, but it will not describe the necessary implementation details.
...
➦