Do not be afraid to break something
Oct 27, 2024
system
code
project
structure
work
2 min read
Everyone who has worked in our industry has surely encountered a project, code which caused concern. The parts of such a system are highly interconnected, and for some reason, changing the code of one function leads to the complete failure of the system. another. When adding a new module, one has to limit changes to a minimum and hold their breath, waiting for the consequences. It’s like playing Jenga with the floors of a skyscraper – it inevitably leads to disaster.
Making changes is so nerve-wracking only because the system is sick. It needs treatment, otherwise its condition will only worsen. You know the flaws in the system, but you are afraid to take decisive action. An experienced surgeon knows that it is necessary to make incisions to perform the surgery, but he also knows that the incisions are temporary and will heal afterward.
...
➦ The drama of hype technologies, customer needs, and pangs of conscience
Oct 22, 2024
in •
COBOL
•
JAVA
•
PYTHON
java
python
cobol
client
project
technology
work
solution
3 min read
We, programmers, sometimes choose to use certain technologies, methodologies, and approaches to problem-solving not because they provide the optimal solution, but simply because deep down, we want to mention them in our resumes. Such a choice very rarely leads to a positive result.
The most powerful catalyst for any career will be grateful clients lining up in long queues to recommend you to others – after all, you worked so hard for them. If this is true, it’s strange that they let you go. Client goodwill It will serve you much better than any trendy object of a trendy language and any trendy paradigm. Although it is very important (and even vital) for a software architect to stay updated on the latest trends and technologies, never try to broaden your horizons at the expense of the client.
...
➦ Stand up!
Oct 21, 2024
eye
communication
standing
effectiveness
attention
architect
2 min read
For many of us, a career as an architect began with some purely technical position where success was primarily determined by the ability to communicate with computers. However, in the role of an architect, we primarily have to communicate with other people. Whether you discuss the advantages of a particular template with developers or explain to management the pros and cons of purchasing middleware, the key to success lies in your communication skills.
Objectively measuring the degree of an architect’s influence on a project is quite difficult, but one thing is clear: if developers constantly ignore the architect’s instructions and management does not pay attention to his recommendations, the “correctness” of the architect’s actions will not affect the development of his career in any way.
...
➦ Code is design
Oct 12, 2024
design
construction
building
cost
work
3 min read
Imagine waking up in the morning and finding out that a groundbreaking breakthrough has occurred in the construction industry. Now, millions of cheap and incredibly fast robots can create various materials literally from thin air, using almost no energy, and they can repair themselves. But that’s not all: if there are clear blueprints, the robots will build a building according to them without any human intervention, and the cost of this work will be negligible.
One can imagine how this will transform the construction industry, but what changes will occur at a higher level? How will architects and designers behave when the cost of construction becomes negligible? Today, expensive construction is necessarily preceded by the creation and thorough testing of physical and computer models.
...
➦ One line of working code costs 500 lines of specifications
Oct 04, 2024
design
project
goal
system
time
2 min read
You can prepare for a jump for a very long time, get used to the treadmill surface, take a run-up, but still never jump.
Design is a beautiful thing. A systematic, detailed representation of the problem space and its solution reveals errors and identifies opportunities for improvement, sometimes in quite radical ways. Specifications play an important role in this, as they define the template for building the system. It is very important to carefully consider the entire architecture—both at the macro level, examining the interaction between components, and at the micro level, delving into the behavior of the components themselves.
Unfortunately, architects often get carried away with the design process, falling under the charm of architectural abstractions. However, by themselves specifications have no value.
...
➦ Code review
Sep 29, 2024
code
conduct
review
reviews
process
knowledge
3 min read
Conducting code reviews is necessary. Why? It improves code quality and reduces the relative share of defects. But you may be misunderstanding why this happens.
Many programmers have an aversion to code reviews, which can be linked to their unfortunate personal experiences. I have encountered organizations where all code underwent formal review before it could enter the system for commercial use. Often, the review is conducted by an architect or lead developer—a practice that can be called “the architect checks everything.” This is documented in the company’s software development process guide, and programmers are required to comply.
Perhaps, in some organizations, such a strict and formal process is indeed necessary, but they are in the minority. In most organizations, such an approach is counterproductive.
...
➦ Before starting the refactoring
Sep 27, 2024
code
tests
system
mistakes
changes
3 min read
Sooner or later, every programmer has to perform refactoring of existing code. But before diving in, consider a few things that can save you and your colleagues a lot of time (and spare you from headaches):
It is best to start refactoring by assessing the state of the existing code in the project and the tests written for it. This way, you can identify the strengths and weaknesses of the code in its current state, to preserve its strong points and avoid the mistakes already made. Everyone thinks their system will be better than the current one… until it turns out that the new code is no better, and maybe even worse, than the previous version, all because we did not learn from the mistakes made in the old system.
...
➦ Know that you will save it in the repository
Sep 21, 2024
code
repository
work
changes
task
3 min read
I patted three programmers on the shoulder and asked what they were working on. “I’m refactoring these methods,” was the first one’s reply. “I’m adding some parameters to this web operation,” said the second. The third one said, “I’m working on this use case.”
It may seem that the first two were absorbed in the details of their work, and only the third saw the bigger picture, and his approach was better. I asked when and what they were going to put in the repository, and then the picture changed dramatically. The first two clearly understood what files they would be, and were going to finish the work in about an hour. The third said, “I suppose I’ll finish in a few days. I’ll probably add some classes and somehow modify the services.
...
➦ The assembly must be clean
Sep 19, 2024
in •
JAVA
java
warnings
code
need
fix
example
3 min read
Have you ever seen a list of compiler warnings the size of an essay on how not to write code and thought: “Of course, something needs to be done about this… but I just don’t have time for it right now”? And conversely, have you ever seen a single warning appear during compilation and immediately fix it?
When I start a new project from scratch, there are no warnings, no mess, no problems. But as the codebase grows, if no measures are taken, it’s likely that the mess, clutter, warnings, and issues will gradually accumulate. In a large stream of “noise,” it becomes significantly harder to find a truly important warning among the hundreds of others that I am not interested in.
To make warnings useful again, I try to adhere to a policy of zero tolerance for warnings during assembly.
...
➦ Durability of temporary solutions
Sep 18, 2024
first
change
solution
solutions
standards
problem
3 min read
Why do we create temporary solutions?
Usually, the culprit is an urgent task. Sometimes, it’s an internal task for developers—to create a missing tool for the development chain. Other times, the task is external, user-oriented, such as a workaround to compensate for missing functionality.
In most systems and teams, you can find a module that somehow stands out in the system. It is considered a draft version, and it will need to be redone later because it does not meet the standards and rules that the rest of the code lives by. You will definitely have to hear developers’ complaints about this. The reasons for the appearance of such code can vary, but the main reason for the emergence of intermediate solutions is their usefulness.
...
➦