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 • CC++ERLANGGROOVYJAVAPYTHON
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 • JAVAMYSQLRUBYSQL
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.
...