Анонімний блогер і розробник «The Secret Developer» поділився на своїй сторінці в Medium думкою про те, чому варто дуже обережно користуватися кодом, взятим в мережі, і чому senior developer взагалі не варто таке робити. Пропонуємо вам переклад блогу. Далі — слово автору.
У нас є senior розробники, і провели ревёю їхньої роботи.
Ми всі можемо робити промахи та помилки, але The Secret Developer були шоковані, коли побачили наступне.
Я хотів розмістити в цій статті реальний код, який я бачив у запиті, але я хвилююся, що мою таємну особистість буде розкрито.
Замість цього я розмістив тут деякий код, який «схожий» на той, який я переглянув.
Повірте, це був справжній pull request, а не чернетка або гілка. Готовий до запуску у виробництво.
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService; //1
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
User user = userService.findById(id); //2
if (user == null) {
return ResponseEntity.notFound().build(); //3
}
return ResponseEntity.ok(user); //4
}
}
Коли розробник настільки лінивий, що копіює код, він викликає мою повагу. Ніхто з нас не повинен докладати більше зусиль, ніж насправді потрібно.
Однак, коли уникнення роботи заходить так далеко, що вони залишають в коментарях посилання на сайт, з якого вони вкрали код, то це вже занадто. Це вже зовсім інша річ. Це некомпетентність. Я можу лише уявити, наскільки добре вони протестували цей код і наскільки добре вони продумали своє рішення.
У світі розробки програмного забезпечення спокуса скопіювати і вставити код з таких ресурсів, як Stack Overflow, завжди присутня. Це обіцяє швидке вирішення проблеми, миттєвий шлях крізь хащі проблем кодування.
«Як я вже пояснював вище, це також оголює некомпетентність відповідального програміста. Це свідчить про розробника, який надає перевагу швидкості, а не ретельності, і чия робота несе ризики для всіх учасників. Давайте розглянемо ці питання по черзі».
Фрагменти коду, доступні в Інтернеті, не завжди перевіряються на безпеку. Вони можуть містити вразливості, починаючи від простих помилок і закінчуючи серйозними недоліками безпеки, такими як SQL-ін’єкції або вразливості крос-сайтового скриптингу. Інтеграція коду, який ви не розумієте, у кодову базу відкриває ваш проект для потенційних зловмисних атак.
Коду з інтернету часто бракує контексту. Це фрагмент, рішення конкретної проблеми, відірваний від ширших міркувань безпеки.
Розробники можуть не помітити, як цей фрагмент взаємодіє з іншими частинами їхньої системи, що потенційно може створити лазівки в тому, що раніше було якісним додатком.
Чи відповідає код стандартам проєкту? Розробнику важко обґрунтувати, що це так, якщо по суті, він сам не писав код. Він може містити застарілі практики або не відповідати протоколам безпеки.
Ще гірше, зовнішній код може мати залежності, які «розробник» не врахував у процесі створення програмного забезпечення методом копіпасту.
Це було зрозуміло вже давно. Код з Stack Overflow недоступний для використання в програмному забезпеченні з закритим вихідним кодом і повинен бути атрибутований. Якщо розробник цього не робить, вам потрібно поставити під сумнів його компетенцію в написанні коду, а також його етику.
Щоб зменшити ці ризики, розробникам, особливо тим, хто займає керівні посади, вкрай важливо:
Часто кажуть, що тільки дурні стрибають у воду. Коли ми копіюємо рішення з Інтернету, ми повинні переконатися, що ми продумали всі наслідки цього.
Кого я обманюю? Я думаю, що якщо ви це робите, то ви настільки некомпетентні, що взагалі не повинні працювати у сфері розробки програмного забезпечення. Senior developer? Я думаю, ти не можеш бути серйозним.
Резиденти Дія.City сплатили до бюджету понад 8 млрд грн податків в І кварталі 2025 року.…
У Китаї закликають офісних працівників не працювати надто багато — держава сподівається, що вільний час…
Експерти звертають увагу на тривожну тенденцію: люди все частіше використовують ChatGPT, щоб визначити місцезнаходження, зображене…
Компанія JetBrains випустила нову версію мультимовного середовища розробки IntelliJ IDEA 2025.1. Оновлена IDE отримала численні…
Платформа обміну миттєвими повідомленнями Discord впроваджує функцію перевірки віку за допомогою сканування обличчя. Зараз вона…
Wikipedia намагається захистити себе від тисяч різноманітних ботів-скрейперів, які сканують дані цієї платформи для навчання…