Najlepsza odpowiedź
Ciekawe pytanie. Dla mnie termin „rzemiosło” oznacza raczej sposób, w jaki napisany jest rzeczywisty kod, niż projekt systemu wyższego poziomu. Powiedziałbym, że dobrze przygotowany kod spełnia następujące funkcje:
- Zgodny ze standardami zewnętrznymi
- Zgodny ze standardami wewnętrznymi
- Używa dobrych wzorców
- Czytelny
Zgodny ze standardami zewnętrznymi. Jeśli Twoja grupa ma standardy kodowania, przestrzegaj ich. Jeśli nie ” Nie lubię standardów, nadal ich przestrzegaj.
Zgodny ze standardami wewnętrznymi. Oznacza to, że kod powinien być wewnętrznie spójny. Metody, które robią podobne rzeczy, powinny być ułożone w ten sam sposób. Jeśli jedna metoda jest zgodna ze wzorcem:
if (success) {
doSomething();
} else {
handleError();
}
nie mam innej metody, która zaczyna się:
if (!success)
{
handleError();
Używa dobrych wzorców. Rozumiem przez to wzorce kodowania, a nie wzorce projektowe. Twój kod powinien używać idiomów odpowiednich dla języka. (na przykład użyj scoped\_ptrs do zarządzania pamięcią w C ++). obiekty, które nie są używane w żadnej ścieżce kodu.
Jest czytelny. Inni inżynierowie będą czytać Twój kod, a Ty ponownie to za lata. Kod powinien być jak najłatwiejszy do zrozumienia. Wszystkie wymienione powyżej elementy dotyczą przede wszystkim czytelności i minimalizacji nieoczekiwanych elementów w kodzie. Czytelnicy powinni martwić się logiką Twojego kodu, a nie próbą wyjaśnienia, dlaczego użyto niestandardowej konstrukcji. Jeśli istnieje niestandardowa konstrukcja, czytelnicy powinni wiedzieć, że istnieje z jakiegoś powodu, nie dlatego, że popełniłeś błąd. (Pomyśl o swoim kodzie jak o meblu. Powierzchnia powinna być gładka i nie powinieneś łapać drzazgi, jeśli przeciągniesz po niej ręką. Wszelkie nieprawidłowości powinny być tam z jakiegoś powodu.)
Czytelność poprawia się także dzięki rozsądnej metodzie i nazwom zmiennych oraz odpowiednim komentarzom. Nie przesadzaj z komentowaniem. Jeśli to oczywiste, nie trudź się wyjaśnianiem. Ale miej pewien przegląd, aby czytelnik znał kontekst. (Może być oczywiste, że kod przekształca wejście X na wyjście Y, ale pomaga, jeśli czytelnik ma jakieś pojęcie, dlaczego jest to potrzebne.)
Odpowiedź
Menedżerowie są jak małe dzieci. Chcą tego, czego chcą i tego TERAZ ! Ale w przeciwieństwie do małych dzieci menedżerowie na wpół pamiętają artykuły Harvard Business Review , które cytują (bez podawania odniesień), aby uzasadnić swoje żądania. Nauczyli się zestawu argumentów, które przytłaczają niektórych programistów.
Mówią: „Nie możemy pozwolić , aby zrobić to dobrze. Musimy go zdobyć na rynku TERAZ ! ”. Wiesz, to nieprawda. Jeśli pośpiesznie wprowadzą kod spaghetti do produkcji, mają szansę wkurzyć swoich początkujących klientów teraz, ale kod nie może się skalować. To po prostu oznacza, że ich firma przez chwilę marnuje się, zanim się załamie.
Mówią: „Udostępnimy wersję beta naszym klientom startowym”. Mają na myśli to, że chcą, abyś wypuścił doskonały, przyjemny dla klienta kod wcześniej niż w innym przypadku, tylko dlatego, że zgodzili się nazywać to programem testów beta. To magiczne myślenie, jak wiara w Świętego Mikołaja.
Mówią: „Obiecuję, że przepisamy kod później, jeśli opublikujesz swój gówniany, na wpół ukończony kod TERAZ ! ” Czy to nie brzmi jak „Posprzątam pokój później tato, jeśli mogę oglądać telewizję i jeść słodkie przekąski TERAZ ?” Problem w tym, że później nigdy nie nadejdzie. Każdego dnia menedżer ma wybór, czy dodać nowe funkcje, czy posprzątać niechlujny pokój, który jest jego bazą kodu. Zgadnij, czemu dają pierwszeństwo. I zgadnij co, pokój robi się bardziej bałaganiarski i brudny, więc sprzątanie będzie trwało coraz dłużej. Trudniej jest pracować (tworzyć nowe funkcje) także z powodu całego bałaganu.
W końcu mówią: „Za dużo zainwestowaliśmy w tę bazę kodu. Przepisanie zajmie zbyt dużo czasu. Potrzebujemy funkcji TERAZ ! ” Tylko każda funkcja zajmuje dwa lub trzy razy więcej czasu na kodowanie z powodu bałaganu, który programiści nazywają długiem technicznym.
Dobrzy programiści, tacy jak cierpliwi i kochający rodzice, muszą powstrzymać szaleństwo. Muszą stanowczo nalegać: „Przepraszam kochanie, ale w Twoim artykule HBR jest napisane:„ Przychody wcześniej są lepsze, wszystkie inne rzeczy są równe . ”Musisz przeczytać to dokładniej.Wszystkie inne rzeczy nie są równe, jeśli nagromadzisz dług techniczny. Co powiesz na to, że nadamy priorytet funkcjom i może będzie coś do sprzedania wcześniej ”.
Musisz być dorosły i powiedzieć im, że nie ma czegoś takiego jak Święty Mikołaj i nie coś takiego jak doskonały, przyjemny dla klienta kod do czasu usunięcia wszystkich błędów i zaimplementowania wszystkich funkcji.
Musisz im powiedzieć: „Nie stać nas na nie , aby korzystać z dobrych praktyk. Żyjemy lub umieramy, ale musimy robić pewne rzeczy, aby żyć, jak pisanie testów i dokumentacji. To nie jest opcja. ”
Musisz się uśmiechnąć i powiedzieć:„ Nigdy nie zmienimy tego kodu. Wiem, że chcesz dobrze, ale jeśli chodzi o poprawienie kodu lub dodanie nowych funkcji, wiem, co powiesz. To jest to, co zawsze mówisz ”.
Będąc stanowczym rodzicem, pomagasz swojemu menedżerowi wyrosnąć na takiego lidera biznesowego, jak ty chciałby pracować.