Анонімний блогер і розробник «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? Я думаю, ти не можеш бути серйозним.
React, який вважається одним з найпопулярніших JavaScript-фреймворків, вже не перемагає за рахунок своїх технічних переваг.…
Ethereum Ukraine вперше приїжджає до Львова – обговорити Ethereum, поспілкуватися й знайти однодумців для нових ідей.…
Microsoft додає автоматичний вибір LLM-моделі до свого редактора коду Visual Studio Code. Незважаючи на тісну…
Наступного місяця Microsoft почне автоматично інсталювати віртуальний помічник Copilot у програми Microsoft 365 Office для…
Нова технологія кодування, відома як agentic swarm coding (рій агентів), набуває все більшої популярності. За…
OpenAI оголосила про випуск нової версії моделі GPT-5, яка оптимізована для агентного кодування на базі…