Jestem niezależnym wykonawcą i jako taki udzielam wywiadów 3-4 razy w roku na nowe koncerty. Jestem teraz w trakcie tego cyklu i zostałem odrzucony na okazję, mimo że czułem, że wywiad poszedł dobrze. To samo zdarzyło mi się kilka razy w tym roku.
Teraz nie jestem idealnym facetem i nie oczekuję, że będę dobrze pasować do każdej organizacji. To powiedziawszy, moja średnia mrugnięcia jest niższa niż zwykle, więc uprzejmie poprosiłem mojego ostatniego ankietera o konstruktywną informację zwrotną, a on dostarczył!
Najważniejsze, według ankietera, było to, że wydawało mi się, że zbytnio skłaniam się ku stosowaniu abstrakcji (takich jak LINQ) niż ku algorytmom niższego poziomu, hodowanym organicznie.
Na pierwszy rzut oka ma to sens - w rzeczywistości sprawiło, że inne odrzucenia też mają sens, ponieważ w tych wywiadach pisałem o LINQ i nie wyglądało na to, że ankieterzy wiedzieli dużo o LINQ (mimo że byli oni .NET faceci).
Pozostaje mi więc pytanie: jeśli mamy „stać na ramionach gigantów” i korzystać z dostępnych nam abstrakcji (takich jak LINQ), to dlaczego niektórzy ludzie uważają to za tabu? Czy nie ma sensu ściągać kodu „z półki”, jeśli osiąga te same cele bez dodatkowych kosztów?
Wydaje mi się, że LINQ, nawet jeśli jest to abstrakcja, jest po prostu abstrakcją wszystkich tych samych algorytmów, które napisalibyśmy, aby osiągnąć dokładnie ten sam cel. Tylko test wydajności może ci powiedzieć, czy twoje niestandardowe podejście było lepsze, ale jeśli coś takiego jak LINQ spełnia wymagania, po co męczyć się pisząc własne klasy?
Nie chcę tutaj koncentrować się na LINQ. Jestem pewien, że świat JAVA ma coś porównywalnego, chciałbym tylko wiedzieć, dlaczego niektórzy ludzie czują się tak niekomfortowo z pomysłem użycia abstrakcji, której sami nie napisali.
AKTUALIZACJA
Jak zauważył Euphoric, w świecie Java nie ma nic porównywalnego z LINQ. Jeśli więc tworzysz na stosie .NET, dlaczego nie zawsze spróbować z niego skorzystać? Czy to możliwe, że ludzie po prostu nie rozumieją, co robi?
objectCollection.Where(oc=>oc.price > 100)
na przykład będzie jakiś dodatkowy kod . Czy nie byłoby to użycie abstrakcji? Może możesz mi powiedzieć, czego mi brakuje. . .