Give developers their own space
Sep 02, 2024
api
developers
architect
work
system
design
2 min read
Nearly all architects begin their professional lives as developers. Although the architect has more duties, he also has more say over how the system is designed. It will be hard for you to give up some of your programming habits in your new work as an architect. Even worse, you might think that in order to put your concept into practice, you have to keep an eye on the developers and everything they do. But it’s critical for your success—as well as the success of your team—to provide each of your coworkers with enough autonomy to showcase their abilities and originality.
It is rare for a developer to have time to sit down and consider the overall coherence of the system. The architect should give this their whole attention at the same time.
...
➦ Time changes everything
Sep 01, 2024
in •
DUDE
wise
first
easy
dude
time
assignment
look
solutions
lot
3 min read
Seeing what has survived and what hasn’t has long been one of my favorite vivid forms of amusement. There were a plethora of patterns, infrastructures, paradigm shifts, and algorithms. Wise people debated them fervently, considered long-term views, and attempted to strike a balance between all the known components, but in the end, they came to naught. Why? What is the past attempting to teach us?
Pick a noble assignment For a software architect, this is highly challenging. We receive assignments and issues from the client, so we really don’t have a choice, do we? It’s not really that easy. First of all, we frequently make the error of thinking that we have little power over what the customer desires. But it’s typically possible to just step outside of your comfort zone when it comes to technology.
...
➦ Continuous learning
Aug 31, 2024
development
twitter
google
journeyman
master
delve
neo
matrix
technologies
technology
group
subject
code
online
4 min read
We live in interesting times. Development is distributed all over the world, and it turns out that many people are capable of doing your job. To remain competitive in the labor market, you need to continuously learn. Otherwise, you will turn into a dinosaur stuck in your job until one fine day it turns out that you are no longer needed, or that your job has been given to someone who is willing to do it for less.
How to solve this problem? Some employers are generous and organize training to develop already hired programmers. Others simply cannot afford to allocate time or resources for this. The most reliable solution is to take care of your own education.
Here is a list of ways to continue learning.
...
➦ Architectural compromises
Aug 27, 2024
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.
...
➦ Writing code in the spirit of Ubuntu for the friends
Aug 25, 2024
in •
UBUNTU
zulu
ubuntu
code
moment
quality
person
3 min read
Very often we program in isolation, and our programs reflect both our personal interpretation of the problem and a very personal solution to it. We can work in a team, but even then we are isolated as a team. We easily forget that the code created in such isolation will be executed, used, and extended by other people. It’s easy to overlook the social aspect of programming. Creating software is both a technical and a social endeavor. We should look around more often to understand that we do not work in isolation and that we share a common responsibility for the potential success not only of the group of developers but also of every person around us.
It is possible to write high-quality code in isolation from reality, completely detached.
...
➦ Do not be afraid to break something
Aug 21, 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.
...
➦ Simplicity is achieved through reduction
Aug 18, 2024
stefan
extra
code
line
algorithm
variables
start
2 min read
“Do it again…” my boss said, firmly holding down the Delete key with his finger. With familiar sorrow, I watched the screen where my code was irrevocably disappearing, line by line.
My boss Stefan wasn’t particularly eloquent, but he could spot bad code at first glance. And he knew exactly what to do with it. I took that job as someone learning programming – full of energy and enthusiasm, but with no idea how to write code.
I was under the terrible delusion that any problems could be solved by adding another variable in the appropriate place or by adding another line of code. On bad days, my code would degrade—its logic wouldn’t improve, and moreover, it would become bulkier, more complex, and more unstable.
...
➦ Beauty is the result of simplicity
Aug 12, 2024
plato
development
first
code
beauty
simplicity
system
methods
2 min read
Plato has one saying that, it seems to me, would be especially useful for all software developers to know and take to heart:
The beauty of style, harmony, elegance, and good rhythm are based on simplicity.
This single sentence embodies the values that we, as developers, should admire.
There are a number of things we aim to achieve in our code:
Readability - Ease of maintenance - Development speed - Elusive beauty Plato tells us that all these qualities are possible only thanks to simplicity.
What is beautiful code? This is probably a very subjective question. The perception of beauty is heavily dependent on personal experience, just as our perception of anything else is. Those who have studied art perceive beauty differently (at least approach it differently) than those with a technical education.
...
➦ The myth of the guru
Aug 11, 2024
in •
GURUS
guru
people
myth
context
questions
3 min read
Everyone who has been working in the computer industry for a long time has had to hear questions like: I am getting an XYZ exception. Do you know what the problem is?
Those who ask such questions rarely bother to show the stack trace, application log, or provide any context that would help understand the problem. Apparently, they think you operate on some other plane where solutions are revealed to you without any analysis of the facts. They consider you a guru.
We expect such questions from people who are not familiar with software, from those for whom the system’s operation seems almost magical. What worries me is that we encounter this even within the programming community. Similar questions arise during software design, for example: “I am writing an application for warehouse management.
...
➦ Write code wisely
Jul 31, 2024
below
devil
code
fragments
proof
function
correctness
3 min read
Attempts to prove the correctness of software manually lead to a formal proof that is longer than the code itself and contains errors more frequently than the code. It is preferable to use automated tools, but this is not always possible. Below, a middle ground is described: semi-formal proof of correctness.
The method is based on dividing the code under investigation into short fragments ranging from a single line, which may contain a function call, to blocks no longer than 10 lines, and discussing their correctness. The proof must be convincing enough for your colleague playing the role of the “devil’s advocate.”
Fragments should be chosen in such a way that at the end point of the block, the program state (namely, the instruction address counter and the values of all “live” objects) satisfies a property that is simple to describe, and the functionality of this fragment (state transformation) can be easily described as a single independent task.
...
➦