Jak nauczyć się sztuki mienia wy*ebane na jakość kodu?

0

Wiadomo, że przytłacająca większość projektów to pisanie abyszybciej, aby więcej. i klienci za to płacą.
Jakość kodu jest w projektach komercyjnych z tego powodu niska, że hej ho i butelka rumu.
Jakieś protipy jak mieć na to wyj***, bo perfekcjonista here.
Czy po prostu lepiej zmienić pracę na świniopasa bo nie stresuje niską jakością wykonywanych pzez ciebie usług?

0

To zależy czy sprzedajesz gotowy produkt czy kod źródłowy.
No i czy wolisz się babrać w gównie czy błocie.

1

A może zmień pracę na jakaś gdzie piszą dobry kod? Niemniej świniopas albo stolarz pewnie też styknie.

4

proste - jednoczesnie rob to najlepiej jak umiesz i nie przejmuj sie ze reszta na to leje

0
Shalom napisał(a):

A może zmień pracę na jakaś gdzie piszą dobry kod? Niemniej świniopas albo stolarz pewnie też styknie.

I gdzie niby są takie firmy? Nawet praca dla firm upstreamujących kod do repo Linuksa nie daje gwarancji.

6
katelx napisał(a):

proste - jednoczesnie rob to najlepiej jak umiesz i nie przejmuj sie ze reszta na to leje

Wiesz jak to się kończy?
Dzień dobry, niestety w związku z "brakiem postępów" musimy zakończyć współpracę.
Bo nienawalałeś gównokodem jak karabin maszynowy jak inni z zespołu., tylko klepałeś przemyślany kod, który nawet o zgrozo testowałeś.

0

Nie pisz w php, idź do korpo i ciesz się życiem ;d

1

@Złoty Młot: czyli jesteś w gównofirmie, gdzie piszą gównokod z własnego świadomego gównowyboru, nie jęcz więc na forum :P

2

Przerabialem to na sobie, sam bylem perfekcjonista, czysty kod i praktyki uber alles. Az w pewnym momencie pomyslalem ze moze by tak zbudowac samemu produkt i go sprzedac.
Chcesz miec wyj*** to sproboj samemu tworzyc cos i sprzedawac w moim przypadku okazalo sie ze "jakosc" kodu zupelnie nie przeklada sie na wartosc produktu, wiec im dluzej siedzisz nad czyms tym wiecej kasy tracisz. Dlug technologiczny zwlaszcza jezeli robisz np: web to belkot programistow, technologia zdarzy sie zmienic 10x i zycze ci takiego powodzenia, ze az bedziesz mial problemy ze skalowaniem i optymalizacja. Zanim skonczysz pierwsza stabilna wersja produktu to zmienic sie wersja frameworka czy bibliotek i nie bedzie kompatybilna wstecz.
Z perfekcjonizmu skutecznie lecza klienci, jak przejdziesz na ciemna strone mocy czyli biznes to kod bedziesz mial totalnie w powazaniu, byle target sie zrobil, a wrecz bedziesz sprzedawal historyjki, rzeczy ktorych jeszcze nie ma i ktore ewentualnie bedzie trzeba zrobic w okreslonym czasie i budzecie. Agile? Haha, taa jasne... ;)

0

Klient końcowy się na tym nie zna, ma mieć tylko dobrze działający produkt spełniający jego oczekiwania i wymagania. Ale obstawiam że to jest pewnie robota aby szybciej bo terminy gonią albo konkurencja deklaruje też że to samo zrobi szybko, więc gdzie tu mowa o jakości? To czy to jest PHP, python, ruby, JAVA, C# nie ma żadnego znaczenia. Generalnie niska jakość kodu to raczej wynik małej wiedzy, szczególnie kiedy to się zna coś tylko pobieżnie a pod względem czasu to Ctrl+C - Ctrl+V i mamy efekty typu łamanie zasady nie powtarzaj się :-). OK, spoko, projekty trzaskane na szybko, klient zadowolony, płaci Wam za tą robotę. Później jednak przyjdzie to rozbudować bo się okazuje że to mu nie wystarcza i co wtedy?

Jak pisałem pewien projekt na jednym z frameworków PHP ok. rok temu, po czym dalej następne, gdzie po prostu człowiek się uczy i przybywa doświadczenia to się okazało że jakby na to wszystko nie patrzeć ten poprzedni robiony rok temu można było zrobić o wiele lepiej. A z drugiej strony to wydaje mi się że jest jakiś kompromis między szybkością a jakością kodu, choć pewnie i tak jedno kosztem drugiego.

2

1

Można, jak widzę kod w komentarzu, literówkę albo zmienną 'dupa1' i mam absolutną pewność, że to nie ja jestem autorem to czytam dalej,niech ktoś inny się martwi. Jeśli to mój kawałek to poprawiam. Jeśli widzę jakąś dziwną konstrukcję, jakiś miks wzorców i mam zrobić 'tak samo tylko dla interfejsu HWDP.1.A' to po prostu to robię, a jeśli starczy mi czasu to poświęcam 5 minut na rozkminę co można zrobić lepiej.
Jedyne co poprawiam to kawałki na których epicko się przejechałem i mogę łatwo to poprawić i wytłumaczyć o co chodzi.

Mam bardzo złe doświadczenia w tworzeniu kodu typu 'dosko', po prostu zawsze zdarzają się szczególne przypadki, albo jak prawie wszystko jest przetestowane to zmieniają się wymagania i super wzorzec/algorytm idzie do kosza. Takie marnotrawstwo czasu albo przesuwanie zaczętych zadań na kolejne sprinty irytuje mnie bardziej niż niedopieszczony kod. Najgorzej jak cały zespół ma idealistyczne podejście i kod przechodzi 5 razy przez review, a potem tester robi 3 zwrotki.

0

Wiadomo, że przytłacająca większość projektów to pisanie abyszybciej, aby więcej. i klienci za to płacą.
Jakość kodu jest w projektach komercyjnych z tego powodu niska, że hej ho i butelka rumu.
Jakieś protipy jak mieć na to wyj***, bo perfekcjonista here.
Czy po prostu lepiej zmienić pracę na świniopasa bo nie stresuje niską jakością wykonywanych pzez ciebie usług?

Przecież to dziecinnie proste. Poprawić stary kod możesz przy okazji pisania nowych ficzerów. Zrefaktoruj szybko jakiś moduł, zacommituj go i masz czysty kod.
(Tako rzecze Wujek Dobra Rada XD)

I wszyscy są zadowoleni. Coś dostarczyłeś, jakies ficzery, taski, a jednocześnie masz świadomość, że poprawiłeś jakoś kodu przy okazji (zasada skauta).

Idealnie nigdy nie będzie, ale małymi krokami można coś zawsze poprawić...

1

To jest wręcz niesamowite że pod PHP są tak profesjonalne narzędzia jak PHPMetrics, sprawdzałem kilka z projektów, raport generuje w graficzny sposób w których konkretnie plikach jest kod trudny w utrzymaniu a w których łatwy (tylko nie wiem po czym). Oblicza takie miary jak indeks dostępności, złożoność cyklomatyczną i pokazuje zależności między klasami tzn. co i gdzie jest używane. Co więcej, wygląda na to że nawet tutaj obowiązuje zasada 80/20, więc wyglądałoby na to że opłaca się refaktoryzować pewnie ze 20% kodu.

http://www.phpmetrics.org/

Niezłe. Znacie jakieś inne narzędzia tego typu?

Wydaje mi się że można pisać stosunkowo dobry kod w miarę szybko przy pomocy różnych narzędzi tego typu, pomijając już generatory takie jak ma Laravel, Symfony itd.

0

@drorat1 ty tak serio? o_O Sonar -> http://www.sonarqube.org/

1

A ja się nie nauczyłem mimo 9 lat stażu. Na szczęście aktualnie pracuję dla klienta z UK dla którego jakość > ilość.

0

Ja tam nauczyłem się refaktoryzacji w ramach developmentu, mam taki luksus. Odpowiadam też za produkt, tego kodu jest niedużo może 200 000 linii samej javy więc nie ma problemu, aby coś samemu poprawiać w miarę potrzeb, gdy nowe wymagania tego wymagają.

0
Złoty Młot napisał(a):
katelx napisał(a):

proste - jednoczesnie rob to najlepiej jak umiesz i nie przejmuj sie ze reszta na to leje

Wiesz jak to się kończy?
Dzień dobry, niestety w związku z "brakiem postępów" musimy zakończyć współpracę.
Bo nienawalałeś gównokodem jak karabin maszynowy jak inni z zespołu., tylko klepałeś przemyślany kod, który nawet o zgrozo testowałeś.

no widzisz, ja mam inne doswiadczenia. za pisanie kodu powyzej standardu firmy dostawalam pochwaly.
gdzie tak zwalniaja programistow za porzadna prace? :)

0

Każdy programista uważa, że tylko on pisze przejrzysty kod a kod innych to kupa.
Dlatego znacznie lepszym miernikiem jakości kodu jest to czy kod działa.
Nie działa -> c**** kod
Działa czasami -> c**** kod
Działa w większości -> c**** kod
Działa zawsze dobrze (w tym obsługuje brzegowe przypadki poprawnie) -> dobry kod

0

popracuj w janusz outsourcing.

0
margor90 napisał(a)

tego kodu jest niedużo może 200 000 linii samej javy

jest ładna pogoda, tylko trochę zimno, ulewa, i grad o.o

Chociaż biorąc pod uwagę, że to Java, to przypuszczam, że w JS byłoby to 10 000, a w Pythonie jakiś tysiąc ;)

Dlatego znacznie lepszym miernikiem jakości kodu jest to czy kod działa.

A żeby sprawdzić czy kod działa, najlepiej stworzyć test. Jeśli apka jest dobrze otestowana, to praktycznie można mieć wszystkie testy na zielono i już można mieć wyjeane. I jakieś TDD, żeby mieć wyjeane już od razu, przed napisaniem kodu.

Nie zawsze piszę w TDD, ale kiedy piszę, zauważam u siebie właśnie mniejszą dbałość o jakość kodu, byleby testy przechodziły. Na dodatek jeszcze dobrze skonfigurowany linter też pozwala mieć wyje*ane na jakość kodu - po prostu pisze się tak, żeby linter nie zgłaszał błędu.

Paradoksalnie natomiast jakość kodu się zwiększa wtedy, bo pomimo, że możemy mieć to totalnie w d... to i tak narzędzia wymuszą, żeby kod działał i był poprawny, ładny czy co tam.

W skrócie - miej wyje*ane, a będzie ci dane.

Niestety to jest dobre, jak się pisze nowy kod. Przy brzydko napisanym legacy kodu bez testów już tej zasady tak łatwo się nie zastosuje...

1
0x200x20 napisał(a):

Każdy programista uważa, że tylko on pisze przejrzysty kod a kod innych to kupa.
Dlatego znacznie lepszym miernikiem jakości kodu jest to czy kod działa.
nie do konca, jakosc kodu mierzy sie pod wieloma innymi wzgledami. co do przejrzystosci tez jest masa standardow i wytycznych.

Krzywy pomidor napisał(a):

popracuj w janusz outsourcing.
swietna wymowka :) pracowalam i jakos mi sie udalo nie popasc w rutynowe robienie dziadostwa w projekcie

1

Programista powinien na pewnym etapie swojej kariery wypośrodkować swoją pracę pomiędzy szybkością a dokładnością. Nikt nie pozwoli Ci na bycie mega-dokładnym programistą, bo nikt nie ma na to pieniędzy, żebyś przez miesiąc poprawiał i wygładzał działający kod (no może w budżetówce mają na takie zabawy czas i pieniądze).
Ci, którzy są mega-dokładni (a przez to wolni) powinni stać się mniej dokładni i szybsi. Niestety, z moich obserwacji wynika, że z kolei ci, którzy są mega-szybcy, ale przez to niedbali i niedokładni są wskazywani jako wzór dla innych.

0
katelx napisał(a):

swietna wymowka :) pracowalam i jakos mi sie udalo nie popasc w rutynowe robienie dziadostwa w projekcie

ale chodzilo o to jak mozna szybko nabyć tę "umiejętność" ;p

1

A weźmy np taką oto sytuację. Jest zlecenie. Klient chce mieć jakiś dajmy na to serwis z ogłoszeniami albo własną stronę firmową czy też jakiś tam sklep internetowy. Jak wiadomo firm i freelancerów którzy mogliby się tego podjąć jest mnóstwo. I weźmy teraz takie coś:

  1. Klient się nie zna i nie ma pojęcia ile realnie zajmuje realizacja tak żeby było dobrze
  2. Nie obchodzi go TDD ani jakość kodu, nie obchodzi go czego użyjecie

a) Jest perfekcjonista, który doskonale (albo w miarę dobrze) wie ile jest przy tym pracy i ile zajmuje realizacja, proponuje klientowi wykonanie takiego serwisu z ogłoszeniami za dajmy na to 6K, 2 miesiące pracy
b) Jest obok niego cwaniak z mocnym marketingiem ale ma wy***ne na jakość kodu, deklaruje że zrobi to za dajmy na to powiedzmy 3K ale w miesiąc

Klient ma serwis szybciej więc szybciej może wystartować, by w ten sposób np. nieco wyprzedzić konkurencję (ktoś inny też może np. chcieć dla siebie taki serwis). Kto w tym przypadku wygrywa to chyba powinno być jasne.

Tyle jeśli chodzi o TDD i ten Wasz perfekcjonizm. Nie mówimy to o sofcie pod rakiety kosmiczne czy łaziki marsjańskie (kto będzie pracował dla NASA?) albo nawet coraz popularniejsze drony ale o całej masie aplikacji www i o ogromnej konkurencji na tym rynku.

2

Małe projekty szybko idące w zapomnienie - spoko;

Ale przy sporej ilości projektów, które trzeba utrzymywać i rozwijać - brak wewnętrznej jakości da klientowi mocno po portfelu.

0
Stary Wiarus napisał(a):

A weźmy np taką oto sytuację. Jest zlecenie. Klient chce mieć jakiś dajmy na to serwis z ogłoszeniami albo własną stronę firmową czy też jakiś tam sklep internetowy. Jak wiadomo firm i freelancerów którzy mogliby się tego podjąć jest mnóstwo. I weźmy teraz takie coś:

  1. Klient się nie zna i nie ma pojęcia ile realnie zajmuje realizacja tak żeby było dobrze
  2. Nie obchodzi go TDD ani jakość kodu, nie obchodzi go czego użyjecie

a) Jest perfekcjonista, który doskonale (albo w miarę dobrze) wie ile jest przy tym pracy i ile zajmuje realizacja, proponuje klientowi wykonanie takiego serwisu z ogłoszeniami za dajmy na to 6K, 2 miesiące pracy
b) Jest obok niego cwaniak z mocnym marketingiem ale ma wy***ne na jakość kodu, deklaruje że zrobi to za dajmy na to powiedzmy 3K ale w miesiąc

Klient ma serwis szybciej więc szybciej może wystartować, by w ten sposób np. nieco wyprzedzić konkurencję (ktoś inny też może np. chcieć dla siebie taki serwis). Kto w tym przypadku wygrywa to chyba powinno być jasne.

Tyle jeśli chodzi o TDD i ten Wasz perfekcjonizm. Nie mówimy to o sofcie pod rakiety kosmiczne czy łaziki marsjańskie (kto będzie pracował dla NASA?) albo nawet coraz popularniejsze drony ale o całej masie aplikacji www i o ogromnej konkurencji na tym rynku.

Znamy biznes... Ale niektorzy mimo wszystko niektorzy chca byc rzemieslnikami niz tylko i wylacznie kierowac sie kasa. Wolalbym pracowac u tego 1.

3

@Stary Wiarus to co napisałeś jest faktem, ale tylko dla małych aplikacji których nikt nie będzie rozwijał. Jak klepiesz coś co ma być rozwijane przez lata, albo coś co ma obsługiwać krytyczne systemy (satelity, elektrownie etc) to zwyczajnie nie możesz sobie pozwolić na słaby kod, bo koszty modyfikacji i poprawek będą kolosalne.

0
krunner napisał(a):

Programista powinien na pewnym etapie swojej kariery wypośrodkować swoją pracę pomiędzy szybkością a dokładnością. Nikt nie pozwoli Ci na bycie mega-dokładnym programistą, bo nikt nie ma na to pieniędzy, żebyś przez miesiąc poprawiał i wygładzał działający kod (no może w budżetówce mają na takie zabawy czas i pieniądze).
Ci, którzy są mega-dokładni (a przez to wolni) powinni stać się mniej dokładni i szybsi. Niestety, z moich obserwacji wynika, że z kolei ci, którzy są mega-szybcy, ale przez to niedbali i niedokładni są wskazywani jako wzór dla innych.
umiejetnosc stwierdzenia ze kod jest wystarczajaco dobry przychodzi z czasem.
przyznam ze jeszcze sie nie spotkalam z programista ktory byl zbyt dokladny, spotkalam za ta cala mase jak to nazwales 'szybkich', wiec problem o ktorym mowisz jest wg mnie czysto hipotetyczny i brzmi jak wymowka dla niedbaluchow.
co do bycia wzorem za szybkie dostarczanie dziadostwa - moze przy malych/malo ambitnych projektach rzeczywiscie to dziala, ale to nie znaczy ze trzeba podazac za tradycja, raczej dac z siebie wszystko, nauczyc sie jak najwiecej i zmienic na zaklad w ktorym przynajmniej nie beda sie czepiac o czas poswiecony na zrobienie swojej pracy jak nalezy.

Stary Wiarus napisał(a):
  1. Klient się nie zna i nie ma pojęcia ile realnie zajmuje realizacja tak żeby było dobrze
  2. Nie obchodzi go TDD ani jakość kodu, nie obchodzi go czego użyjecie.
    wlasciciel sklepu 'u janusza' ktory chce miec profesjonalna strone pewnie wybierze oferte za 199zl i jeszcze bedzie kombinowal jak tu ocyganic z placeniem :) duze projekty na ktore ida miliony nie dzialaja w ten sposob, o ile w wiekszosci oczywiscie przechodzi masa beznadziejnego kodu to jednak te jednostki ktore dbaja o jakosc rozwiazan i wdrazaja dobre praktyki sa zdecydowanie w cenie.
2
Stary Wiarus napisał(a):

a) Jest perfekcjonista, który doskonale (albo w miarę dobrze) wie ile jest przy tym pracy i ile zajmuje realizacja, proponuje klientowi wykonanie takiego serwisu z ogłoszeniami za dajmy na to 6K, 2 miesiące pracy
b) Jest obok niego cwaniak z mocnym marketingiem ale ma wy***ne na jakość kodu, deklaruje że zrobi to za dajmy na to powiedzmy 3K ale w miesiąc

A cwany perfekcjonista zrobi sobie framework do machania takich zleceń w tempie 3 na tydzień. I nie zrobi tego pisząc słaby kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1