Prevent the occurrence of errors
Mar 25, 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.
...
➦ The golden rule of API design
Mar 24, 2025
in •
API
•
C#
•
JAVA
designing
api
java
code
testing
users
method
tests
3 min read
Designing application programming interfaces (APIs) is difficult, especially in the general case. When developing an API that will have hundreds or thousands of users, you need to consider that over time it will most likely need to be changed, and these changes can disrupt the functioning of the client code. Moreover, you need to consider the potential impact on your API from its users. If the API class calls its own method, it should be remembered that the user is capable of creating a subclass of your class and overriding this method, which can lead to disaster. And you won’t be able to change this method because some of your users have given it a different meaning. You become dependent on your users when it comes to choosing the internal implementation.
...
➦ Try not to alter the timetable
Mar 23, 2025
express
start
problems
delivery
project
quality
times
schedule
time
2 min read
There are several reasons why a software project might not succeed. One of the most common reasons projects fail is modifying the work schedule in the middle of the project without adequate planning. These kinds of failures can be avoided, but it will require a large team effort to do so. Changes to a project’s schedule or resource allocation usually don’t result in any problems. Problems occur when you have to work longer hours in the same amount of time or shorten the schedule without reducing the task.
The myth that you may shorten the schedule to save costs or speed product delivery is one that is widely held. More hours are typically put in, or “less important tasks” (such as modular testing) are abandoned in order to produce a product faster or with better functionality that doesn’t delay delivery.
...
➦ Commentary on comments
Mar 22, 2025
in •
BASIC
basic
programming interface
code
comments
program
programming
reading
3 min read
At my first programming class at the university, the instructor handed out two sheets for us to write the program text in BASIC. On the board, he wrote the assignment: “Create a program to input and calculate the average of 10 bowling scores.” Then the teacher left the room. Is this task difficult? I don’t remember my solution, but it seems there was a FOR/NEXT loop and no more than 15 lines of code.
In each form for the program code, we would write the code by hand before entering it into the computer – it was about 70 lines. I had no idea why the teacher gave us two forms each. Since my handwriting has always been terrible, I used the second form to neatly rewrite my code, hoping to earn a couple of points for style.
...
➦ Hard work does not justify itself
Mar 19, 2025
act
work
week
hours
project
software
3 min read
Every programmer needs to be convinced that intense work is often unjustified. You can deceive yourself or your colleagues into thinking that by staying late at the office, you are making a significant contribution to the project. But in reality, by working less, you can achieve more—sometimes significantly more. If you are trying to work “productively” and with focus for more than 30 hours a week, you are likely overworking. It might be worth considering reducing your workload, which will allow you to work more efficiently and accomplish more.
It may seem that my statement contradicts common sense and is generally debatable. However, it is a direct consequence of the fact that programming and software development, in general, require continuous knowledge expansion. As you work on a project, you will come to better understand the subject area and, hopefully, find more efficient ways to achieve your goals.
...
➦ Code is design
Mar 15, 2025
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.
...
➦ Know your IDE
Mar 09, 2025
in •
C
•
JAVA
•
METHOD
•
UNIX
code
debuggers
integrated development environment
ide
modern
java
unix
ides
time
tools
method
4 min read
In the 1980s, the programming environment, as a rule, did not differ much from an advanced text editor – at best. Today, we take syntax highlighting for granted, but back then it was a luxury not available to everyone. Code formatting tools existed as external tools, the use of which corrected spacing. Debuggers also “lived” separately as programs for step-by-step code execution, and working with them required knowing a multitude of mysterious key combinations.
In the 1990s, companies began to realize the profit potential of more convenient and useful development tools. The Integrated Development Environment (IDE) combined previously offered editing features with a compiler, debugger, formatting tools, and other instruments. At that time, menus and mice became popular, which meant that developers no longer needed to memorize complex key combinations to work with their editor.
...
➦ You need to take care of the code
Feb 24, 2025
sherlock holmes
enjoy
code
programmers
work
programmer
programming
3 min read
You don’t need to be Sherlock Holmes to understand that good programmers write good code. Well, the bad ones don’t. They create ugly things that everyone else has to clean up. But you want to write good code, right? Then you need to strive to become a good programmer.
Good code doesn’t just appear out of nowhere. Its emergence is not caused by the favorable alignment of the planets. To make the code good, you need to work on it, and quite a bit. You will create good code only when you truly strive for it. Good programming is not the result of mere technical competence. I have encountered very smart programmers who are capable of creating strong and impressive algorithms, know the standards of their language perfectly, and yet write completely terrible code.
...
➦ One binary file
Feb 06, 2025
in •
GIT
environment
bazaar
git
code
changes
version
production
3 min read
I have encountered projects where part of the code was rewritten during the build process so that a separate binary file was generated for each runtime environment. This approach always complicates things unnecessarily and creates the risk of incompatible versions appearing with each installation. At the very least, several almost identical instances of the program are built, each intended for installation in its corresponding environment. Too many moving parts arise, which means more opportunities for error.
Once, I worked in a team where after every property change, it was necessary to save the code and conduct a full build cycle, so the testers were idle every time a minor bug was found (did I mention that the project also took an incredibly long time to build?
...
➦ Learn foreign languages
Feb 04, 2025
charlemagne
language
programmers
languages
machine
ideas
3 min read
Programmers need to communicate. And communicate a lot.
In a programmer’s life, there are periods when communication mainly occurs with the computer—more precisely, with the programs running on it. This communication is based on expressing ideas in a form understandable to the machine. The ability to turn ideas into reality through programs and with almost no use of physical matter still evokes delight.
A programmer must be fluent in machine language—real or virtual—and the abstractions that can be linked to this language using developer tools. It is important to know many different abstractions; otherwise, some ideas are very difficult to express. A good programmer should be able to go beyond everyday routines and recognize that there are other languages that are more expressive for other tasks.
...
➦