Wady kata kodu

41

Kata kodu to koncepcja, która proponuje doskonalenie umiejętności programisty poprzez wielokrotne zadawanie drobnych problemów, próbując poprawić kod przy każdej iteracji. Nazwa pochodzi od analogii do kata sztuk walki, w którym formy (aka kata) to praktyki praktykowane w kółko prowadzące do ulepszeń.

Od reakcji, jaką dostałem na moje ostatnie pytanie na ten temat, chcę wiedzieć, jakie są wady tego podejścia?

Sardathrion - Przywróć Monikę
źródło
+1 w celu przeciwdziałania zastosowanemu bezproduktywnemu -1. Wydaje się słuszne pytanie, podobnie jak moje wątpliwości co do kata Code, ale nie mogę wskazać dlaczego.
mattnz
9
do dzisiaj nie miałem pojęcia, o co chodzi z tą kata. Teraz to sprawdziłem i imho to tylko fantazyjna nazwa czegoś, co robi każdy rozsądny programista i uczy się automatycznie podczas programowania: ćwiczy. Wadą byłoby dla mnie to, że zajmuje to więcej czasu, który można by wykorzystać w innym przypadku.
stijn
11
Hmm… najwyraźniej jedną z głównych wad kata kodu jest to, że ludzie krytykują kata kodu, nie rozumiejąc, jakie są kata kodu :-)
Jörg W Mittag,
19
@ JörgWMittag - To dlatego, że termin „kata” jest złą analogią, ponieważ implikuje praktykę sztywnej formy o małym praktycznym znaczeniu w rzeczywistych sytuacjach. Denerwuje mnie stosowanie słów ze sztuk walki, takich jak „czarny pas” lub „kata”, do programowania lub sytuacji biznesowych.
jfrankcarr

Odpowiedzi:

22

Zasadniczo nie widzę wad w kata kodu. Próbujesz wykonać to samo zadanie wiele razy, stosując różne podejścia i różne języki. Ale

  1. raczej trudno jest wprowadzić go w miejscu pracy. Zwykle oczekuje się od ciebie biegłości lub rozsądnej wydajności. Nie twierdzę, że nie byłoby to użyteczne (lepiej poświęcić trochę czasu na doskonalenie umiejętności nowego wynajmu, niż płacić za niezbyt dobry kod, który napisze w najbliższym czasie), ale jest to jednak dość trudne.
  2. trzeba actuallu spróbować poprawić w pewnym sensie. Napisanie tego samego kodu w ten sam sposób tysiąc razy nie spowoduje, że się poprawisz (raczej cię stępi). Musisz zrozumieć swoje poprzednie błędy, co poszło nie tak lub nie działało zgodnie z oczekiwaniami. To jest najważniejsza część. Jest to forma samokształcenia, więc musisz się uczyć.
Francesco
źródło
1
Przyjąłem tę odpowiedź, ponieważ odnosi się ona bezpośrednio do pytania (zamiast terminologii „kata”) i skupia się na potencjalnych problemach związanych z praktyką kata kodu. Nie oznacza to, że inne odpowiedzi nie są dobre - w rzeczywistości chętnie przyjmę więcej niż jedną!
Sardathrion - Przywróć Monikę
43

Myślę, że programowanie kata, podobnie jak kata sztuk walki, dotyczy przede wszystkim formy ponad funkcją. Może nauczyć cię pisać elegancki kod, ale nie nauczy Cię rozwiązywania problemów, dla których piszesz kod. Myślę, że lepszym sposobem na ulepszenie jako programisty jest rozwiązywanie zagadek wymagających faktycznego rozwiązywania problemów oraz praca nad większymi projektami, które nauczą cię wartości dobrze skonstruowanego kodu w sposób, którego kata kodu nigdy cię nie nauczy.

Nawiasem mówiąc, myślę, że terminy takie jak „kata kodowa” i „kunszt oprogramowania” bardziej dotyczą romantyzacji naszego zawodu niż opisywania czegoś nowego lub przydatnego.

KaptajnKold
źródło
4
Zrób to +2 dla tego zdania.
Erik Dietrich,
6
Chociaż zgadzam się, że rozwiązywanie problemów jest dobrym sposobem na ulepszenie jako programista, nauka pisania eleganckiego kodu może być również opłacalna. Chciałbym, aby niektórzy z oryginalnych twórców kodu, którym obecnie zarządzam, poświęcili trochę czasu i wysiłku na napisanie eleganckiego kodu, a nie na kopiowanie i wklejanie, aby po prostu wszystko działało.
Mike Partridge,
1
+3 za komentarz Mike'a. Zasadniczo poświęcanie kodu jest znacznie dłuższe niż jego początkowe pisanie. Można oczekiwać, że rzemiosło zostanie zastosowane, gdy ktoś zbuduje dom, ponieważ będziesz w nim mieszkał przez długi czas. To samo należy zastosować, gdy ktoś tworzy oprogramowanie - ale w większości przypadków tak nie jest.
Kaleb Brasee
@KaptajnKold: Czy rozmawiasz ze swojego doświadczenia? Bardzo chciałbym usłyszeć komentarze od kogoś, kto naprawdę próbował poprawić swoje umiejętności dzięki CodeKata, ale mu się nie udało.
dzieciou
2
@dzieciou: Mam doświadczenie w kata sztuk walki, praktykując karate od kilku lat. I chociaż wierzę, że istnieje kilka przydatnych aspektów walki, których można nauczyć się z kata, uważam również, że ostatecznie nie jest to bardzo skuteczny sposób treningu. Powinieneś trenować podczas walki, jak mówią. To znaczy, jeśli Twoim celem jest stać się lepszym wojownikiem. Niektórzy ludzie uważają, że uprawianie kata jest radością samą w sobie. Nie ma w tym nic złego. W końcu niektóre z nich stają się bardzo dobre. W kata.
KaptajnKold
20

Kata kodu wymaga czasu.

Będąc programistą i ojcem w pełnym wymiarze godzin, nie chcę robić hobby z komputera.

I nie sądzę, że mój szef zapłaciłby mi za tworzenie aplikacji niezwiązanych z moim obecnym projektem.

mouviciel
źródło
10
Czy istnieje jakakolwiek nauka, która nie wymaga czasu? Chyba że masz szczęście, aby za każdym razem pracować nad projektami typu greenfield.
Den
38
Jeśli nie poświęcisz przynajmniej małej ilości wolnego czasu na regularne doskonalenie umiejętności programowania, twoja kariera zawodowa jest w wielkim niebezpieczeństwie.
Ladislav Mrnka
7
+1 do tego. Chociaż absolutnie uwielbiam programować i że jestem w stanie zarabiać na czymś, co kocham, nie widzę sensu w WIĘCEJ programowania poza pracą. Mam tak wiele innych zainteresowań (na przykład DJing, tworzenie muzyki, podnoszenie ciężarów, rysowanie i taniec uliczny), że nie widzę sensu spędzać więcej godzin na czymś, co robię już 40 godzin tygodniowo.
Andreas Johansson,
7
@mouviciel: I to jest właśnie problem: twój szef jest skłonny zapłacić za twój rozwój zawodowy, jeśli jest to potrzebne w projekcie, ale powinieneś być gotowy poprawić swoje umiejętności niezwiązane z bieżącym projektem - być może nie związane z twoim obecnym platforma w ogóle. To właśnie buduje twoją karierę / zabezpieczenie społeczne.
Ladislav Mrnka
6
@LadislavMrnka - Zgadzam się z tobą. Niemniej jednak Code Kata nie jest odpowiedzią na ten problem.
mouviciel
13

Jako bokser musiałbym nie zgadzać się z zasadą stojącą za kata. Jest zbyt sztywny, aby był użyteczny. Na ringu musisz zrozumieć, jak stosować zasady, których nauczyłeś się w swobodnym środowisku.

Nie oznacza to, że uczenie się i doskonalenie techniki nie powinno się odbywać. Ćwiczenie na workach pozwala przepracować uderzenie i poczuć, jak go rzucasz, tak samo jak kata. Ale to nie jest tak sztywne. Ćwiczysz wiele rzeczy jednocześnie, poruszasz się po torbie, rzucasz ze stabilnej platformy, celujesz, oddychasz, lista jest długa.

Co najważniejsze, wszystko uczy się razem w taki sposób, w jaki będzie właściwie wykorzystywane. Jeśli potrafisz napisać najpiękniejszą dla pętli w historii, ale nie możesz zrozumieć, jak dopasować ją do programu, to co to za dobro?

Powiedziałbym, że lepszym rozwiązaniem, jeśli chcesz ćwiczyć, byłoby samodzielne budowanie narzędzi lub praca nad narzędziami, których używasz. Wymaga to ćwiczenia wszystkich swoich umiejętności, a na koniec możesz mieć coś pożytecznego.

Spencer Rathbun
źródło
na miejscu. fwiw, jestem również bokserem / programistą :).
Paul Sanwald,
1
Kata kodu nie dotyczą sztywnego powtarzania; bardziej chodzi o pracę nad rozwiązaniem problemu, a następnie o ulepszenie rozwiązania, dopóki nie będziesz zadowolony. Z Kata One: „Celem tej katy jest ćwiczenie luźniejszego stylu eksperymentalnego modelowania. Poszukaj możliwie wielu różnych sposobów radzenia sobie z problemami. Rozważ różne kompromisy każdego z nich. Jakie techniki najlepiej wykorzystać do badania tych modeli? nagrywanie ich? W jaki sposób można sprawdzić poprawność modelu? ”
Mike Partridge,
4
Zgadzam się, że termin „kata” jest niedoskonały, ale nie straciłem z oczu ich znaczenia z powodu nazwy. Ponadto nie wszystkie mają problemy ze słowami; z Kata Two: „Zaimplementuj procedurę wyszukiwania binarnego (zgodnie z poniższą specyfikacją) w wybranym języku i technice. Jutro zaimplementuj ją ponownie, używając zupełnie innej techniki. Zrób to samo następnego dnia, aż będziesz mieć pięć całkowicie unikalnych implementacje binarnego chop. (Na przykład jedno rozwiązanie może być tradycyjnym podejściem iteracyjnym, jedno może być rekurencyjne, można zastosować funkcjonalny styl przekazujący wycinki tablicy itd.). ”
Mike Partridge
3
@MikePartridge To stanowi przykład mojej racji. Kata wymagałaby jednej metody wyszukiwania binarnego, którą każdego dnia poprawia się, powiedzmy, z mniejszą liczbą wierszy lub mniej czasu potrzebnego na napisanie jej od zera. Sposób zdefiniowania pojęcia jest ważny, aby go zdefiniować. Mógł po prostu nazwać to ćwiczeniem programowania, o czym są artykuły, bez przynoszenia niewłaściwego bagażu. Obowiązkiem autora jest wybranie słów i pojęć, które poprawnie określają jego pomysł, a nie narzekanie, że jego odbiorca wyciąga błędne skojarzenia z powodu wyboru metafory.
Spencer Rathbun
3
@MikePartridge W moim przypadku uważam, że wszyscy programiści uczą się / doskonalą lub powinni być cały czas. Zatem kata kodu jest techniką pomagającą w osiągnięciu tego celu, a moją odpowiedzią było, że technika, tak jak ją widziałem, nie była opłacalna. Całkowicie zgadzam się z celem, ale nie o to chodziło.
Spencer Rathbun
11

Z mojej perspektywy główną wadą jest to, że byłoby strasznie nudne. Również programiści wydają się dobrze rozwijać oprogramowanie, które robi coś pożytecznego lub fajnego. Podejście do kata kodu wydaje się być przeciwieństwem tego.

Antonio2011a
źródło
2
Katas uczy cię nowych rzeczy. W jaki sposób może to być przeciwieństwo tego, co zamierzają zrobić programiści? Rozwiązuje również zagadkę, a większość dobrych programistów nie uważa tego za „nudne”. W rzeczywistości jest to sedno hakowania.
Konrad Rudolph,
4
@KonradRudolph Myślałem, że powtórzenie jest sercem katas? Więc raz rozwiążesz problem (być może nowy i ekscytujący), ale potem będziesz ciągle rozwiązywać ten sam problem. Ledwie patrzyłem na Katas, więc mogłem się mylić.
Kevin D.
@Kevin Zgadzam się, że to brzmi głupio (chyba że próbujesz znaleźć inne sposoby rozwiązania problemu). Nigdy nie robiłem „katas” jako takich, zwykłe łamigłówki programistyczne.
Konrad Rudolph
W jaki sposób robienie tego samego w kółko „uczy cię nowych rzeczy”?
W odpowiedzi wyraźnie widać, że nie przeczytałeś linku podanego w pytaniu.
Mike Partridge,
8

Kata oznacza dokładne przeciwieństwo tego, o co powinieneś dążyć.

ćwiczenie składające się z sekwencji określonych ruchów sztuki walki, stosowane w treningu i mające na celu wykazanie umiejętności technicznych

Termin Kata (pochodzenie: 1950–55; <japoński: kształt, wzór) używany w sztukach walki, a twoje pytanie dotyczy rutynowego zapamiętywania pamięci mięśniowej, takiej jak pisanie dotykowe .

W oryginalnym Karate Kid, woskowanie samochodów, szlifowanie podłóg, malowanie ogrodzenia były to wszystkie nauczone Katas, zupełnie poza kontekstem, w tym przypadku bez wyjaśnienia, tylko po to, by zapewnić pamięć mięśni. Dopiero kiedy pojawił się sensei i nadał kontekstowi tych pustych czynności , coś znaczyły.

Myślę, że to samo odnosi się tutaj, bez mentora, aby umieścić rzeczy w kontekście ponownego robi rozwiązywanie problemów źle w wielu językach nie ma lepszego niż jeden obraz jest. Bez mentora, który powiedziałby ci, gdzie poprawić, są stratą czasu.

Jest to dokładne przeciwieństwo twórczego rozwiązywania problemów poprzez uczenie się nowych odmian idiomów i semantyki języka lub platformy.

Jeśli chcesz być w stanie pisać System.out.println()tak łatwo, jak to możliwe, to ćwiczenie byłoby Kata.

Jeśli chcesz ulepszyć rozwiązanie problemu w innej implementacji, aby skrócić czas i / lub wymagania przestrzenne lub zastosować więcej idiomatycznych zasad, nie jest to coś, w czym Kata ci pomoże.

Jest już przyjęty przemysłowy termin na ponowne wdrażanie tej samej rzeczy w kółko po tym, jak już działa, dążąc do drobnych stopniowych ulepszeń i wątpliwych korzyści z doskonałości, nazywa się to Złoceniem !

Warunki, których powinni użyć, to Refaktoryzacja w przypadku zastosowania do tego samego języka / środowiska wykonawczego / platformy. I Portowanie podczas przenoszenia działającego programu na inny język / środowisko wykonawcze / platformę. Kata została prawdopodobnie wybrana błędnie, ponieważ brzmi modnie, chłodno i mistycznie bez pełnego zrozumienia semantyki.

Rozwiązywanie różnych trudnych problemów przy niewielkim planowaniu, doświadczeniu lub poradach jest tym, co większość programistów, zwłaszcza młodszych programistów, musi robić codziennie.

Tylko naukowcy mogą powtarzać to samo ćwiczenie tylko po to, aby dopracować konkretne rozwiązanie. Umiejętność udanej kariery programisty polega na adaptacji , a nie na powtarzaniu.

Kto powiedział, że nie ma inteligentnych ludzi, którzy nie muszą uczyć się po pracy i mogą nauczyć się wszystkiego, co trzeba wiedzieć, a czasem więcej w ciągu 8 godzin pracy?


źródło
Co się stanie, jeśli ćwiczysz, przeprojektowując i ulepszając projekt - powtarzając proces projektowania, czy ten termin nie miałby zastosowania? Czy możesz wymyślić lepszy?
Bill K
terminem przeprojektowania i ulepszenia istniejącego systemu jest refaktoryzacja ( refaktoryzacja kodu to „zdyscyplinowana technika restrukturyzacji istniejącej części kodu, zmieniająca jego wewnętrzną strukturę bez zmiany jego zachowania zewnętrznego”). Wybrali Kata, ponieważ brzmi to fajnie i mistycznie, bez zrozumienia semantyki.
Termin refaktoryzacja jest czymś zupełnie innym niż praktyka bycia dobrym w refacotoring. Każdy może refaktoryzować kod, co w żaden sposób nie oznacza, że ​​robi to dobrze lub jest praktykowany w rozpoznawaniu dobrych możliwości refaktoryzacji. Chociaż „Ćwiczenie refaktoryzacji” jest na to określenie pochodzenia, nie oddaje poświęcenia, które czyni Kata, więc myślę, że Kata może być nieco lepszym wyborem, chociaż jestem otwarty na teorię, że istnieje jeszcze lepsze zdanie.
Bill K
1
W rzeczywistości Gold Platting odnosi się do „... dodatkowych lub bardziej dopracowanych funkcji”. To, co opisujesz, wydaje się bardziej zbliżone do Optymalizacji przedwczesnej, chociaż po fakcie.
Joshua Drake
5

Zgadzam się, że metafora „kata” może nie być najlepsza. Kata w karate wykonuje się w celu ćwiczenia określonego, dyskretnego ruchu, aż można go wykonać bezbłędnie, ostro i automatycznie. Nie przekłada się to dobrze na działanie wymagające krytycznego myślenia i kreatywności. (Lepiej byłoby, powiedzmy, pisanie).

To powiedziawszy, niepowodzenie nazwy nie jest błędem działania. Jaką wadą może być praktykowanie czegoś, przy czym ktoś chce się poprawić? Przypuszczam, że można powiedzieć, że czas spędzony na robieniu tego jest wadą z perspektywy kosztów alternatywnych, ale tak naprawdę jest to inwestycja. Tak więc czas poświęcony na praktykę tworzenia oprogramowania jest dla twórców oprogramowania, ponieważ pieniądze wydane na akcje lub obligacje są przeznaczone dla długoterminowego oszczędzania / inwestora. To nie jest „wada” - to stawki za stół.

Erik Dietrich
źródło
3

Poprawiasz się, próbując rzeczy, które są trudne i są poza zasięgiem twoich umiejętności; rzucać sobie wyzwanie. Robienie tego samego „kata kodu” w kółko, jak forma sztuk walki, tego nie robi. Myślę, że stagnuje twoje umiejętności, zamiast pomagać w rozwijaniu umiejętności.

Za pierwszym razem ma zastosowanie jako metoda praktyki, ale jest ograniczona. Mówię ludziom, aby zamiast tego używali projektu Euler . Więcej problemów i więcej wyzwań.

jmq
źródło
Ciągłe pisanie tego samego programu może być przydatne i interesujące, np. Jeśli robisz to za pomocą innego algorytmu i / lub w innym języku za każdym razem. Ale prawdopodobnie nie jest to kata.
9000
2
Przeczytaj link podany w pytaniu; pomysł nie polega na bezmyślnym powtarzaniu, jak się wydaje z nazwy.
Mike Partridge,
@ 9000 Właściwie dokładnie tak rozumiem Code Katas. Często używany podczas nauki nowego języka lub próbowania nowego podejścia do już rozwiązanego problemu.
Joshua Drake
3

Dla mnie główną wadą techniki, jaką widzę, jest jej nieoptymalne wykorzystanie twojego czasu.

Wartość uczenia się tego ćwiczenia jest również wątpliwa: gdy robisz coś ponad to, aby być w tym lepszym, opinie ekspertów są niezbędne. Bez wysokiej jakości informacji zwrotnych też się czegoś nauczysz, ale istnieje szansa na bardzo dobre nauczenie się czegoś złego.

Nie zrozumcie mnie źle, ćwiczenie to jedyny sposób, aby stać się dobrym w programowaniu, a kata jest zdecydowanie formą praktyki. Ale tak samo rozwiązuje problemy z kodowaniem konkurencji, pisze własne „fajne projekty”, uczy się nowych języków programowania i tak dalej. Ostatecznie musisz wybrać technikę, z którą czujesz się najwygodniej i upewnić się, że masz jasne wskazówki po drodze.

dasblinkenlight
źródło
Jak znalazłeś wskazówki? Walczę z tym samym problemem.
CodeYogi,
1

Wierzę, że bez jakiejkolwiek formy Kata nigdy nie będziesz świetnym programistą. Kata to praktyka, to dosłownie to oznacza. Weź to jako przykład: sportowiec mówi: „Po prostu pokażę się i poprowadzę 100-metrową deskę rozdzielczą, trening śrubowy”. Czy to brzmi jak zwycięska strategia? Czy kiedykolwiek zrobiono to w ten sposób?

Sugeruję, by ludzie przeczytali „ Czysty koder ” wuja Boba , on zagłębia się w (i inne) tematy profesjonalizmu w dziedzinie programowania.

No i argumenty, że nie można robić Kata i zakładać rodziny, są po prostu wymówką. Mówiąc z doświadczenia: dzieci w pewnym momencie idą spać ...

ThaDon
źródło
3
kodowanie! = biegnięcie 100 metrów, chyba że 100 metrów prowadzi przez gęsto zalesione pole kopalni jednego dnia i pola ryżowego wypełnione miną, następnego dnia i bagna wypełnionego trującymi żmijami następnego dnia pod ostrzałem snajpera, zobacz wzór ... Kata to zły semantycznie termin .
2
-1 Szkolenie może odbywać się w pracy, nawet w płatnym czasie (nie jestem pewien, dlaczego ludzie o tym zapominają). Nie wszystko jest czystą pracą lub nauką.
joshin4colours
@JarrodRoberson scenariusz, który właśnie przedstawiłeś, jest tym, co żołnierz robi na co dzień. Wybrałeś raczej złą analogię. Szczerze mówiąc, powinienem być szczęśliwy dla ludzi, którzy wykonują swoją pracę w wieku 9-5 lat, a następnie wracają do domu i przestają się uczyć, ponieważ daje mi to przewagę konkurencyjną.
ThaDon,
3
Martin Fowler został kiedyś zapytany o wydawanie pieniędzy na szkolenie pracowników. „Nie boisz się, że jeśli ich wyszkolisz, to odejdą?” , a jego odpowiedź brzmiała: „Nie, obawiam się, że jeśli ich nie wyszkolę, zostaną!”. . Nie każdy pracodawca traktuje szkolenie jako koszt, dla dobrych jest to inwestycja!
Rozwiązywanie różnych trudnych problemów przy niewielkim planowaniu, doświadczeniu lub poradach jest tym, co większość programistów, zwłaszcza młodszych programistów, musi robić codziennie. Myślę, że jest to dość dokładna analogia. Tylko naukowcy mogą powtarzać to samo ćwiczenie tylko po to, aby dopracować konkretne rozwiązanie. Umiejętność udanej kariery programisty polega na adaptacji , a nie na powtarzaniu. Kto mówi, że nie ma mądrzejszych ludzi, którzy nie muszą uczyć się po pracy i mogą nauczyć się wszystkiego, czego potrzeba, i więcej w ciągu 8 godzin.
1

Robienie tylko kata w kontekście sztuki walki jest bezużyteczne. Jak powiedziano wcześniej, kata to choreografia ruchów, która uczy formy. Znasz ruchy, ale nie wiesz, jak je zastosować. Nie wiesz, w jakich sytuacjach są one przydatne. Jeśli naprawdę chcesz zrobić z nimi coś pożytecznego, potrzebujesz aplikacji, którymi jest Bunkai .

W kontekście oprogramowania kata kodu to algorytm, narzędzie, wzorzec projektowy lub dowolna inna technologia. Wiedząc, że to dobrze, ale musisz to zastosować, aby to zrozumieć. Musisz go używać w różnych kontekstach, aby naprawdę go opanować. Bunkai byłby konkretną sytuacją, w której ta kata lub jej część jest przydatna.

Nie widzę nic złego w tej metodologii, oto jak opanować wszystko: nauczyć się czegoś, ćwiczyć, dodawać szczegóły, ćwiczyć, dodawać kolejny szczegół, ćwiczyć itp.

plmaheu
źródło
-1

Programowanie jest jak malarstwo lub muzyka. Gdy ktoś staje się muzykiem lub artystą za pieniądze, które można powiedzieć, nie ma inspiracji, występ naprawdę nie jest wart twojego czasu. Jeśli interesujesz się sztuką, nic nie powstrzyma cię przed ćwiczeniem i ciągłym udoskonalaniem - codziennie udoskonalając jedną technikę, zauważając niuanse, których większość ludzi nigdy nie zobaczy.

Zawsze jest miejsce dla ludzi zadowolonych z bycia muzykami barowymi i malarzami, ale są to zupełnie inna klasa talentów. Przypuszczam, że większość malarzy domowych śmiałaby się z pomysłu ćwiczenia, ale założę się, że malarz, który badał i ćwiczył techniki - zasadniczo uznając swoją pracę za sztukę wykonałby zauważalnie lepszą pracę, nawet przy czymś tak przyziemnym jak malowanie domu .

Niektórzy uznają wartość praktyki, a inni nie. Samo to powinno być cenne, jeśli jesteś w stanie oceniać i szukasz ludzi, którzy potrafią tworzyć sztukę (oszczędny, prosty, zrozumiały kod), a nie tylko rozwiązanie.

ps. Nie nazywam się zbyt artystycznym czy czymkolwiek innym - nie robię Kata z abstrakcyjnymi problemami, ale dostrzegam wartość i staram się trochę refaktoryzować mój kod produkcyjny.

Bill K.
źródło
szczególnie nadmiernie wyszkoleni muzycy mogą być negatywnie zajęci teoretyczną perfekcją, co jest niezwykle niebezpieczne dla kariery w tworzeniu oprogramowania. Muzyka ma element ekspresji , oprogramowanie do programowania tego nie ma. Można argumentować, że produkty Apple mają to wyrażenie, ale jest to wyrażenie projektowe , kod nigdy nie jest widoczny ani postrzegany bezpośrednio. Muzyka i sztuka to złe analogie do tworzenia oprogramowania. I okazujesz wyraźne uprzedzenia wobec pracowników fizycznych, zakładając, że nie są oni dumni ze swojej pracy ani nie widzą wartości w jakości.
Nie łącz treningu z praktyką. Nadmiernie przeszkolony różni się bardzo od nadmiernie praktykowanych, a jeśli nie uważasz, że poziom ekspresji w twoim kodzie jest widoczny w czasach dostarczania i stabilności kodu, to nie wiem, czy mamy wspólną podstawę do dyskusji.
Bill K
Nieważne, co myślę, wiem, że większość klientów nie rozpoznaje i nie dba o starannie spreparowany kod oraz o to, jak elegancki jest tworzony, o ile aplikacja działa przez większość czasu. Taki sam sposób, w jaki większość populacji nigdy nie zajmowała się jakością dźwięku i obrazu VHS i wysoce skompresowanych internetowych filmów wideo lub kaset, a teraz wysoce skompresowanych plików MP3, które usuwają wszystkie niuanse, bez żadnych skarg. Nadmiernie przeszkolony jest gorszy niż nadmiernie praktykowany, nadmiernie przeszkolony powoduje, że ignoruje się „wystarczająco dobre” i nieszczęśliwe w branży oprogramowania.
Programowanie to rzemiosło, a nie sztuka. Oba poziomy są kunsztowne i estetyczne, ale sztuka nie jest zawodowa w naturze. Tworzenie oprogramowania jest zawodowe. Więcej osób zarabia więcej na oprogramowaniu do pisania niż artyści. Oprogramowanie nie jest subiektywne i nie istnieje wyłącznie dla własnego istnienia, istnieją obrazy i muzyka, aby zadowolić twórcę częściej niż nie, ponieważ powyższa definicja wyprzedaży sugeruje różnicowanie. Jako ktoś, kto studiował na uniwersytecie artystycznym, mogę powiedzieć, że programowanie to rzemiosło zawodowe i nie ma nic wspólnego z tworzeniem dzieła sztuki.
Jeśli nie uważasz, że dobrze wykonane oprogramowanie jest dostarczane szybciej, taniej i po prostu lepiej niż oprogramowanie stworzone przez rzemieślników, to nie widziałeś, aby zrobiono to dobrze. Nie jest mało prawdopodobne, ile osób obejrzało mistrza, muzyka lub grało z / przeciwko profesjonalnemu zawodnikowi sportowemu - po prostu nie są tak powszechne, aw naszej branży O wiele trudniej rozpoznać, ale różnica w talentach jest taka sama jak wyniki. Jeden artysta może przewyższyć 5 rzemieślników pod względem szybkości i jakości, ale niewielu ma szczęście, że to widział, więc nie wierzą, że istnieje.
Bill K