How to use the bug tracking system
Oct 28, 2024
error
report
information
public
team
3 min read
No matter what you call them – bugs, defects, or even design side effects – it is impossible to eliminate them completely. For a project to be successful moving forward, it is very important to be able to correctly write an error report, as well as to know what to pay attention to in it.
In a good bug report, three things should be described: • How to reproduce the error – as accurately as possible – and how often the error manifests itself. • What was supposed to happen – how do you see it? • What is actually happening – at least the data you were able to record.
The volume and quality of the provided information equally characterize the report’s author, as well as the error itself.
...
➦ Try not to alter the timetable
Oct 28, 2024
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.
...
➦ Tests are written for people
Oct 24, 2024
tests
code
test
method
check
3 min read
You cover all the finished code or its fragments with automated tests. Congratulations! Do you write tests first and then code? Even better! Just because of this, you can be considered a programmer practicing advanced approaches in software development. But are your tests good? How can you determine that? One way is to ask yourself: “Who am I writing for?” these tests?». If the answer is “I write them for myself to reduce costs for debugging” or “for the compiler to execute them,” then it’s quite possible that you are not writing the best tests. So, for whom Why write tests? For those who will try to understand your code.
Good tests serve as documentation for the code they are testing. They describe how the code works.
...
➦ Professional programmer
Oct 23, 2024
systems
code
professionals
work
responsibility
defect
3 min read
Who can be considered a professional programmer? The most important trait of a professional programmer is personal responsibility. Professional programmers are responsible for their careers, their evaluations, their deadlines, their mistakes, and their expertise. A professional programmer does not shift this responsibility onto others.
A professional is responsible for their own career. Reading and learning are your responsibilities. Staying up-to-date with the latest industry advancements and technologies is your responsibility. Too often, programmers believe that their education is the employer’s job. Sorry, that is completely incorrect. Do you think doctors believe that too? Lawyers? No, they study in their free time and at their own expense. They spend a significant amount of their free time reading journals and court rulings. They maintain their professional level.
...
➦ Convenience is not an attribute of quality
Oct 17, 2024
in •
CLEANYOURROOMDON
api
monotony
method
convenience
vocabulary
calls
action
3 min read
Much has been said about the importance and complexity of designing good APIs (application programming interfaces). It’s hard to get everything right the first time, and even harder to change anything along the way; it’s like raising children. Experienced programmers have already understood that a good API offers the same level of abstraction for all methods, possesses uniformity and symmetry, and forms a vocabulary for an expressive language. Unfortunately, knowing the principles is one thing, but following them in practice is another. You know that eating sweets is harmful.
But let’s move from words to action and analyze a specific “strategy” for API design that I encounter constantly: designing the API to be user-friendly. As a rule, it all starts with one of the following “insights”:
...
➦ One line of working code costs 500 lines of specifications
Oct 17, 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.
...
➦ Carefully choose your tools
Oct 10, 2024
in •
GNU
modern
gnu
tools
code
application
configuration
software
4 min read
Modern applications are extremely rarely created “from scratch.” They are assembled from already existing building blocks – components, libraries, and frameworks, and there are several compelling reasons for this:
The volume, complexity, and sophistication of applications are increasing, while the time allocated for their creation is decreasing. It is more beneficial to spend the time and intellect of developers on business logic code rather than application infrastructure code. - Widely used components and frameworks have fewer chances of encountering errors compared to those developed independently. - High-quality tools are available for free on the Internet, which reduces development costs and simplifies the search for interested developers with the necessary experience. - The creation and maintenance of software require a significant amount of human labor, so it can be cheaper to buy ready-made products than to create them.
...
➦ Comment only on what the code not say
Oct 02, 2024
computing mcgraw-hill
kernighan
plauger
brake
code
comments
comment
programmers
blocks
3 min read
The discrepancy between theory and practice is greater in practice than in theory. This observation definitely applies to comments. In theory, the general idea of commenting code looks commendable: to give colleagues a detailed explanation of what is happening. What could be more useful than providing useful information? But in practice, comments often do more harm than good. Like any form of writing, writing comments requires skill. This skill largely involves understanding when not to write comments.
If the code is written with syntax errors, compilers, interpreters, and other development tools will definitely object. If the code is functionally incorrect, most of the errors will be identified through review, static analysis, testing, and real-world deployment in a commercial enterprise. And what about comments? In the book “The Elements of Programming Style” (Computing McGraw-Hill), Kernighan and Plauger note that “a wrong comment has zero or negative value.
...
➦ Message passing improves the scalability of parallel systems
Sep 22, 2024
in •
C
•
C++
•
ERLANG
•
GROOVY
•
JAVA
•
PYTHON
performance
c++
java
python
groovy
memory
systems
system
processes
data
3 min read
Already in the first lectures on computer science, programmers are taught that concurrent computing – and especially parallel computing as a special subtype of concurrent computing – is a difficult task, and that only the best have a hope of coping with it, and that even the best do not manage to do so. Great attention is invariably paid to threads, semaphores, monitors, and the difficulties of organizing thread safety with simultaneous access to variables.
There are indeed many complex problems here, and solving them can be very difficult. But what is the root of the problems? Shared memory. Almost all the problems of concurrent computing that we constantly hear about are related to shared memory with mutable data: race conditions, deadlocks, livelocks, and so on.
...
➦ Relational Database Management Systems
Sep 19, 2024
in •
JAVA
•
MYSQL
•
RUBY
•
SQL
ram
java
ruby
data
database
application
dbms
sql
3 min read
If your application needs to handle a large, long-lived set of interrelated data elements, you can confidently place it in a relational database. In the past, there were few relational DBMSs; they were complex, expensive to maintain, and clunky beasts. Those times are gone. Today, finding a relational DBMS is not difficult: it is quite possible that a relational DBMS or even two are already installed on your machine. Some very advanced relational DBMSs, such like MySQL and PostgreSQL, are available in source code, so the question of costs it is no longer worth buying them. Moreover, the so-called “embedded database systems” can be integrated into your application as libraries, almost requiring no configuration and administration; two such examples are interesting open-source DBMS, SQLite and HSQLDB.
...
➦