Zdarzyło Ci się pracować z programistami o kilkukrotnie dłuższym stażu od Ciebie? Kojarzysz sytuację w której rozmawiali żargonem, który dla Ciebie brzmiał jakby obcy język? Mi tak i najgorsze, że byłem zbyt dumny, żeby się przyznać, że nie rozumiałem. Uznałem, że niewiedza to powód do wstydu. A w rzeczywistości jest zupełnie odwrotnie, bo większym wstydem było nieprzyznanie się i udawanie, że wiem o co chodzi.
Dlatego dziś przedstawię subiektywny zestaw skrótów, które uważam za obowiązkowe dla każdego programisty. Prędzej czy później się z nimi spotkasz, dlatego warto przygotować się zawczasu.
Skróty i akronimy związane z samym kodem
- YAGNI - You aren't gonna need it - nie będziesz tego potrzebować.
- KISS - Keep it simple, stupid! - zrób to najprościej jak potrafisz. Prostota jest ważniejsza niż złożoność
- DRY - Don’t Repeat Yourself - nie powtarzaj się
-
SOLID
- akronim do dobrych zasad programowania obiektowego. Każda literka rozwija się jako kolejna dobra praktyka. Niżej rozwinięcia:
- SRP - Single Responsibility Principle - zasada pojedynczej odpowiedzialności. Klasa powinna posiadać tylko jeden powód do zmiany
- OCP - Open-Closed Principle - zasada otwarte-zamknięte - Klasa powinna być otwarta na rozszerzenia i zamknięta na modyfikacje
- LSP - Liskov Substitution Principle - zasada podstawienia Liskov - musi istnieć możliwość zastępowania typów bazowych ich podtypami
- ISP - Interface Segregation Principle - wiele dedykowanych interfejsów jest lepsze niż jeden ogólny.
- DIP - Dependency Inversion Principle - moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Obie grupy modułów powinny zależeć od abstrakcji.
- GRASP - akronim od General Responsibility Assignment Software Patterns - zbiór zasad projektowania klas i relacji między nimi
- SASS, LESS i SCSS - preprocesory css pozwalające na proste programowanie styli css
- LoD - Law of Demeter - prawo demeter, które mówi żeby odwoływać się tylko do "bliskich przyjaciół"
- SLAP - Single Level of Abstraction Principle - zasada mówiąca, że każda linijka kodu powinna operować na tym samym poziomie abstrakcji
- SPOF - Single point of failure - pojedynczy punkt awarii, czyli miejsce które w przypadku błędu potrafi zatrzymać cały system
- OOP - Object-Oriented Programming - paradygmat programowania obiektowego
Skróty i akronimy odnoszące się do procesu pisania oprogramowania
- DDD - Domain Driven Design - podejście do tworzenia oprogramowania, które szczególny nacisk kładzie się na tworzenie obiektów dokładnie odzwierciedlających zachowanie ich odpowiedników istniejących w rzeczywistości
- ES - Event Storming - metoda zbierania założeń i konkretyzowania wiedzy o domenie
- TDD - Test Driven Development - technika wytwarzania oprogramowania opartą o cykl test->kod->refaktor
- BDD - Behavior Driven Development - proces rozwoju oprogramowania determinowany zachowaniem, ukierunkowany na spełnienie określonych wymagań. Często mylony ze scenariuszami
- CD - Continuous Delivery - ciągłe dostarczanie, czyli proces ciągłego dostarczania funkcji biznesowych
-
CI/CD
- Continuous Integration / Continuous Deployment - ciągła integracja zmian i ciągle wdrażanie zmian w kodzie na produkcję
SLA - Service Level Agreement - umowa o gwarantowanym poziomie świadczenia usług, np że system będzie działać przez 99.9% czasu dziennie na produkcji - SLO Service Level Objectives - wewnętrzny cel świadczenia usługi, który stanowi bufor na reakcję w celu zachowania ustalonego z klientem SLA
- SLI - Service Level Indicator - konkretne mierzalne metryki, które pozwalają określić aktualny stan systemu
Skróty odnoszące się do Agile
- DoR - Definition of Ready - określa jakie cechy powinno posiadać zadanie, aby można było rozpocząć z nim pracę
- DoD - Definition of Done - określa kiedy zadanie można uznać za zakończone
- AC - Acceptance Criteria - kryteria akceptacji - lista wymogów do spełnienia, aby zespół mógł zweryfikować czy zadanie zostało zrealizowane poprawnie
- PO - ProductOwner - kluczowa rola w projekcie, której zadaniem jest maksymalizacja wartości produktu
- PM - ProjectManager - kolejna kluczowa rola w projekcie, która bardziej skupia się na procesach niż na projekcie
- BA - Business Analyst - Analityk Biznesowy, to osoba, która definiuje potrzeby biznesowe w celu znalezienia optymalnych rozwiązań
Skróty odnoszące się do rozwiązań architektonicznych
- SAAS - Software As A Service - model w którym oprogramowanie jest jako usługa serwowana w chmurze.
- ADR - Architecture decision record - zapis ważnych decyzji dotyczących architektury
- ADL - Architecture Decision Log - log decyzji, czyli prościej lista wszystkich ADR
- CQS - Dommand Query Separation - podstawowa zasada mówiąca, że metoda może coś zwracać i jest wtedy query, lub wprowadzać zmianę stanu i jest wtedy jako command, ale nigdy obie czynności jednocześnie
- CQRS - Command Query Responsibility Segregation - zastosowanie CQS w kontekście całego systemu, czyli całkowite oddzielnie zapisu od odczytu
- ES - Event Sourcing - to technika polegająca na odtworzeniu stanu aplikacji na podstawie zdarzeń
- SOA - service oriented architecture - koncepcja oprogramowania zorientowanego na usługi
Skróty odnoszące się do konkretnych narzędzi
- CRM - Customer Relationship Management - system automatyzujący i wspierający zarządzanie i kontakt z klientem
- CTA - Call To Action - przycisk nakłaniający do akcji, np zakupu "Zobacz", "Kliknij"
- CMS - Content Management System - system zarządzania dynamiczną treścią na stronie
- RWD - Responsive Web Design - technika tworzenia stron internetowych, aby te dopasowywały się do wielkości okna przeglądarki, bądź urządzenia
- GH - GitHub - repozytorium
- MR / PR - Merge Request / Pull Request - (w zależności od narzędzia) wygenerowanie zmian w kodzie, które można oddać do weryfikacji w procesie Code Review
- CR - rzadziej stosowane, ale ogólne określenie, na wspomniane wcześniej Code Review
- SO - StackOverflow - serwis internetowy będący kopalnią wiedzy
Inne, czy skróty które nie są czysto techniczne, ale które warto znać
- LMGTFY - Let Me Google That For You - nie trzeba tłumaczyć ;)
- SMART - akronim od Specific, Measurable, Achievable, Relevant, Time-bound - czyli koncepcja definiowania celów. Te powinny być skonkretyzowane, mierzalne, osiągnalne, istotne i przede wszystkim zdefiniowane w czasie
- SMARTER - rozszerzona wersja SMART o dodatkowo exciting oraz recorded
Podsumowanie
Część skrótów odnosie się do więcej niż jednej kategorii. Starałem się umieścić w kontekście takiej grupy, w której sam słyszałem je najczęściej.
Niektóry skróty pojawiają się więcej niż jeden 1, na przykład ES, jako EventStorming w kontekście podejścia do zbierania założeń, albo EventSourcing jako praktyka odtwarzania stanu na podstawie zapisanych zdarzeń.
A Wy znacie jeszcze jakieś skróty, które są warte wymienienia i ich tu nie uwzględniłem? Jeśli tak, to koniecznie podzielcie się tym w komentarzu.
A może poznaliście coś nowego? Chętnie dowiem się, czy inni również mieli podobne problemy.