Рубріки: ДосвідДумка

Senior Developer копіпастив зі Stack Overflow. Чому так не варто робити

Андрій Губін

Анонімний блогер і розробник «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? Я думаю, ти не можеш бути серйозним.

Останні статті

Офіційно: GitHub Copilot Chat тепер доступний на iOS та Android

Сервіс GitHub, який належить Microsoft, випустив Copilot Chat на iOS та Android. GitHub Copilot Chat…

08.05.2024

OpenAI знищила 100 000 книг, за якими тренували GPT-3. Причетні теж кудись зникли

Компанія OpenAI видалила два величезних набори даних «books1» і «books2», які використовувалися для навчання моделі…

08.05.2024

Реєстр військозообов’язаних «Оберіг» показуватиме статус отримання повістки

В реєстрі військовозообов'язаних «Оберіг» буде відображатися статус отримання повістки. Але цей процес буде відбуватися згідно…

08.05.2024

«Хакнуть» систему — босам «зріжуть» бонуси: Microsoft удосконалює програму кібербезпеки

Корпорація Microsoft в світлі останніх подій вирішила прив'язати зарплати керівників до функціонування систем безпеки: якщо…

08.05.2024

Українські програмісти створили Lağoda QT — гру-головоломку кримськотатарською мовою

Українські програмісти створили безплатну гру-головоломку Lağoda QT.  Кожен рівень — вірш одного з видатних кримськотатарських…

07.05.2024

В Copilot для Microsoft 365 додали українську мову

Корпорація Microsoft оголосила про підтримку української мови у Copilot для Microsoft 365. Українська мова входить…

07.05.2024