🎯 Definicja

Zasada “Getting Eyes on It” opiera siÄ™ na przekonaniu, że błędy sÄ… Å‚atwiejsze do wykrycia i naprawienia, gdy kod lub proces jest poddawany inspekcji przez wiele osób. Zgodnie z Prawem Linusa: “Przy odpowiedniej liczbie oczu wszystkie błędy sÄ… nieistotne” (Given enough eyeballs, all bugs are shallow).

🔑 Kluczowe punkty

  • Katedra vs. Bazar: Model zamkniÄ™ty (elitarne grono) vs. model otwarty (każdy może patrzeć i poprawiać).
  • Pull Request (PR) Review: Krytyczny mechanizm weryfikacji zmian przez innych deweloperów przed ich wdrożeniem.
  • Artefakty pierwszej klasy: Procesy (np. wersjonowanie, buildy), których zespół nie porzuci nawet pod presjÄ… terminów.
  • Analiza statyczna: Automatyczne skanowanie kodu (np. SonarQube) w poszukiwaniu błędów logicznych i luk bezpieczeÅ„stwa.
  • Shift Left: Wykrywanie problemów jak najwczeÅ›niej w cyklu produkcyjnym.

📚 Szczegółowe wyjaśnienie

Problemy w systemach nie biorą się znikąd – są tam umieszczane przez ludzi. Aby zminimalizować ich liczbę, musimy celowo wprowadzać mechanizmy inspekcji. Bazar (model Open Source) jest skuteczny, ponieważ duża liczba recenzentów sprawia, że deweloperzy bardziej dbają o jakość swoich wkładów.

W Å›rodowisku korporacyjnym “oczy na kod” zapewniamy poprzez:

  1. Automatyczne buildy PR: SprawdzajÄ…, czy kod siÄ™ kompiluje i czy przechodzi testy jednostkowe.
  2. Human Review: Senior deweloperzy patrzÄ… na logikÄ™ i wymagania biznesowe.
  3. Analiza statyczna: Narzędzia programistycznie sprawdzają standardy (np. czy nie ma hardkodowanych haseł).

Otwarcie kodu (Open Sourcing) to najbardziej ekstremalna forma tej zasady, która pozwala użytkownikom na samodzielne znajdowanie i naprawianie błędów, o ile nie zagraża to własności intelektualnej firmy.

💡 Przykład zastosowania

  • SonarQube w CI/CD: Skonfigurowanie skanera tak, aby blokowaÅ‚ build, jeÅ›li deweloper zapomni o obsÅ‚udze wartoÅ›ci null lub zostawi hasÅ‚o w kodzie. NarzÄ™dzie od razu wyjaÅ›nia, dlaczego to błąd i jak go naprawić, co edukuje zespół.
  • Zablokowanie Main Branch: Uniemożliwienie bezpoÅ›redniego merge’owania do głównej gałęzi bez zatwierdzonego Pull Requesta i udanego buildu testowego.

📌 Źródła

👽 Brudnopis

It’s important to understand how problems get into a system. They don’t fly in the window.