Good Programmers Write Bug-Free Code, Don't They?

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Хорошие программисты создают меньше ошибок, в то время как плохие программисты вызывают больше. Звучит логично, не так ли? Однако существует много критики такого способа мышления. Возьмем, к примеру, следующее утверждение: Ошибки неизбежны, и вместо того, чтобы ожидать от нас меньше ошибок, давайте сосредоточимся на правильном проектировании и позволим тестировщикам находить и сообщать об ошибках, а затем мы их исправим. Или вот еще одно утверждение: Бояться сделать ошибку заставляет меня писать медленнее и меньше экспериментировать, что приводит к созданию программного обеспечения низкого качества. Подробнее об этом можно прочитать здесь и здесь. Но позвольте мне посмотреть на это с другой стороны и утверждать, что да, действительно, хорошие программисты создают меньше ошибок.

Я думаю, что все это связано с тем, как мы определяем качество и что такое ошибка.

Если мы рассмотрим традиционное и очень “очевидное” определение ошибки, то это то, что заставляет наше программное обеспечение производить неправильный или неожиданный результат. Однако, если мы подумаем о том, как программное обеспечение фактически используется и кем, то увидим, что существует множество других типов ошибок, включая масштабируемость, надежность и даже поддерживаемость.

Если мы составим список всех этих “-ilities” и расставим приоритеты в соответствии с их серьезностью и важностью для бизнеса, то увидим, что ошибки, связанные с функциональностью, находятся довольно далеко от вершины списка. Я бы на самом деле поставил поддерживаемость на первое место.

Моя точка зрения заключается в том, что ошибки не все одинаковы. Если я пишу отчет в формате PDF, создаваемый фрагментом кода на Java, и в моем отчете отсутствует нижний колонтитул, это один тип ошибки, и ее исправление будет стоить бизнесу X долларов. С другой стороны, если мой код генерации PDF настолько сложен для изменения, что для перехода от формата A4 к US Letter нам придется переписывать его с нуля, это совершенно другой тип ошибки. Следует отметить, что ее исправление будет намного дороже.

Так что да, ошибки неизбежны. Мы не должны их бояться и быть готовыми совершать их. Однако хорошие программисты делают дешевые ошибки, чтобы избежать создания более дорогостоящих.

Хорошие программисты понимают, что в ограниченное время, которое обычно у нас есть для реализации программного обеспечения, мы должны пожертвовать функциональностью, чтобы получить поддерживаемость. В идеале, вы хотите достичь и того, и другого, но на практике это почти невозможно.

Мы все работаем под давлением, и у нас есть ограничения по времени и деньгам. В этих ограничениях хорошие программисты предпочитают делать функциональность с ошибками и неполной, сохраняя при этом чистоту и простоту дизайна. Конечно, есть исключения, когда бизнес ставит функциональность выше всего, но такие ситуации случаются очень редко (если бизнес умный).

Подводя итог, я считаю, что хороший программист создает больше функциональных ошибок, чем плохой программист, хотя ошибки, сделанные плохим программистом, более дороги, чем ошибки, сделанные хорошим программистом.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:03

sixnines availability badge   GitHub stars