Czy uczyć się algorytmów na początku przygody z programowaniem?

1

Czy wiedza z algorytmow/ struktur danych na poziomie akademickim/ typowej książki jest niezbędna na początku drogi programisty web backend ( staż, pierwsza praca ) ,abstrachując od tego czy przejdę rekrutacje bez takowej ?Oczywiscie wszystko uzupełnie jednak nie chciałbym spedzac dodatkowych paru miesiecy kując jakies algorytmy, mogąc w tym czasie zdobywać pierwsze doświadczenia a jakieś niekrytyczne braki w wiedzy uzupełniać po godzinach?

1

Z mojego punktu widzenia do Polski przychodzi tendencja taka jak w krajach zachodnich, w niektórych firmach algorytm jakiś na start, np najkrótszej drogi lub bajtazar, także warto się obyć z algorytmami.

0

Odpowiem klasycznie - to zależy.
Jestem osobą, która ma identyczny problem odnośnie algorytmów ani struktur danych. Zwyczajnie nie znam ich implementacji, nie znam złożoności, jednak znam istnienie, podstawowe różnice i wykorzystanie. Przez to położyłem parę rozmów o pracę, do codility nawet nie podchodzę. Z drugiej strony nie przeszkadzało mi to jakoś bardzo w żadnej pracy. Obecnie pracuje już w trzecim miejscu jako java dev. Jeżeli rozmowy są techniczno-technologiczne a nie "akademickie" to nie mam problemów z ich przejściem.
Reasumując krytyczne rzeczy powinieneś znać. Chociaż "ogólnie". Ale umiejętności implementacji linkedlisty czy quicksorta nie jest konieczna.
Sytuacja się zmienia, kiedy praca wymaga ich znajomości jednak jest to zdecydowania mniejszość rynku.

0

Tak jakbyś pytał, czy podczas nauki matematyki robić zadania odnośnie tematu. Tak algorytmy i struktury danych należy znać, choćby po to by nie odkrywać koła od nowa oraz żeby mieć pojęcie co i gdzie można zastosować. Ja wiem, że ci co nie znają ich nie mają z nimi problemów podczas pracy, niestety ci co potem muszą poprawić taki kod mają z tym większy problem. To, że ktoś twierdzi, że dla niego są to akademickie dyskusje jedynie, to widac później po jakości programów, których nie da się używać, bo wymagają wręcz nieskończonych zasobów, a gdyby było to poprawnie napisane, to obliczenie płac w zakładzie zamiast 6 godzin zajęłoby 15 minut ale nie znając algorytmów i struktur danych ktoś zaprojektował tak bazę, że nie przeskoczysz tego, możesz co najwyżej odrobinę przyśpieszyć poprawiając kod (bo też jest beznadziejnie napisany, przez kogoś, dla kogo algorytmy to akademickie dyskusje jedynie) i zejść do 3 godzin...

0
artur52 napisał(a):

Odpowiem klasycznie - to zależy.
Jestem osobą, która ma identyczny problem odnośnie algorytmów ani struktur danych. Zwyczajnie nie znam ich implementacji, nie znam złożoności, jednak znam istnienie, podstawowe różnice i wykorzystanie. Przez to położyłem parę rozmów o pracę, do codility nawet nie podchodzę. Z drugiej strony nie przeszkadzało mi to jakoś bardzo w żadnej pracy. Obecnie pracuje już w trzecim miejscu jako java dev. Jeżeli rozmowy są techniczno-technologiczne a nie "akademickie" to nie mam problemów z ich przejściem.
Reasumując krytyczne rzeczy powinieneś znać. Chociaż "ogólnie". Ale umiejętności implementacji linkedlisty czy quicksorta nie jest konieczna.
Sytuacja się zmienia, kiedy praca wymaga ich znajomości jednak jest to zdecydowania mniejszość rynku.

Paaanie, kup Pan sobie najprostszą książeczkę o algorytmach, bo nie znanie implementacji tablicy haszującej, czy kolejki dwukierunkowej i algorytmów ich przeszukiwania to jak brak znajomości tabliczki mnożenia na zasadzie "bo mam przecież kalkulator, co ja będę pamietał ile to jest sześć razy dziewięć". Nie musi być cegła Coremana. Że nie wspomnę iż są w Polsce licea gdzie algorytmy są nauczane. Nie jeden student UJ i UW dzięki materiałom ze strony WWW jednego z nich zaliczył Algorytmy i Struktury Danych na uczelni.

0
Chory Mleczarz napisał(a):
artur52 napisał(a):

Odpowiem klasycznie - to zależy.
Jestem osobą, która ma identyczny problem odnośnie algorytmów ani struktur danych. Zwyczajnie nie znam ich implementacji, nie znam złożoności, jednak znam istnienie, podstawowe różnice i wykorzystanie. Przez to położyłem parę rozmów o pracę, do codility nawet nie podchodzę. Z drugiej strony nie przeszkadzało mi to jakoś bardzo w żadnej pracy. Obecnie pracuje już w trzecim miejscu jako java dev. Jeżeli rozmowy są techniczno-technologiczne a nie "akademickie" to nie mam problemów z ich przejściem.
Reasumując krytyczne rzeczy powinieneś znać. Chociaż "ogólnie". Ale umiejętności implementacji linkedlisty czy quicksorta nie jest konieczna.
Sytuacja się zmienia, kiedy praca wymaga ich znajomości jednak jest to zdecydowania mniejszość rynku.

Paaanie, kup Pan sobie najprostszą książeczkę o algorytmach, bo nie znanie implementacji tablicy haszującej, czy kolejki dwukierunkowej i algorytmów ich przeszukiwania to jak brak znajomości tabliczki mnożenia na zasadzie "bo mam przecież kalkulator, co ja będę pamietał ile to jest sześć razy dziewięć". Nie musi być cegła Coremana. Że nie wspomnę iż są w Polsce licea gdzie algorytmy są nauczane. Nie jeden student UJ i UW dzięki materiałom ze strony WWW jednego z nich zaliczył Algorytmy i Struktury Danych na uczelni.

Mam jednak każde podejście szybko mnie nudzi i odrzuca. Jestem świadomy swojego braku i kajam się strasznie za to :( Jednak wolę wziąć do ręki jakieś DDD / mikroserwisy i potem przekuć to na praktykę. A jak mam problem algorytmiczny w pracy i czuję, że zrobię coś źle proszę o pomoc kolegę, który algo dobrze kuma :)

0

Panowie właśnie Ci sugerują żebyś poświęcił kilka miesięcy swojego życia na nauce żeby komuś przykro się nie zrobiło jak będą robić coś, za co im ktoś inny płaci. Sam ocen w tym momencie czy warto.

1

Oczywiście, algorytmy się przydają, ale to tylko fajna i użyteczna wiedzą. Jeśli zależy Ci na Twojej korzyści - odpuść je sobie póki co. Doświadczenie się bardziej przyda kiedy przyjdzie do utrzymania rodziny

0

Ja na studiach miałem algorytmy z których i tak dużo nie pamiętam. Ale staram się nadrabiać zaległości
,zrobiłem kilka ćwiczeń na codilti i dałem radę. Jakieś pojęcie wypadałoby raczej mieć.

0
Nadziany Szczur napisał(a):

Oczywiście, algorytmy się przydają, ale to tylko fajna i użyteczna wiedzą. Jeśli zależy Ci na Twojej korzyści - odpuść je sobie póki co. Doświadczenie się bardziej przyda kiedy przyjdzie do utrzymania rodziny

Można prosić o wersję w języku polskim?

1

Czy wiedza z algorytmow/ struktur danych na poziomie akademickim/ typowej książki jest niezbędna
na początku drogi programisty web backend ( staż, pierwsza praca ) ,abstrachując od tego czy przejdę rekrutacje bez takowej ?

Czasami będziesz korzystać z algorytmów nie wiedząc o tym. Np. indeksy w bazie danych (jeśli to staż na backendzie). To też się opiera na algorytmach/strukturach danych (np. b-trees, czyli takie drzewka do wyszukiwania), ale do korzystania z nich nie będziesz musiał wiedzieć o tym, co to są b-trees. Albo sumy kontrolne czy różnego rodzaju zaszyfrowane tokeny. To też są jakieś algorytmy, ale do tego są biblioteki i pewnie użyjesz gotowej funkcji z biblioteki, a nie będziesz pisać od nowa. Kompresja też się opiera na algorytmach, ale też nie będziesz pisać swojego kodowania Huffmana, tylko po prostu ustawisz coś na serwerze, dasz dodatkowe nagłówki czy middleware i się samo będzie robić.

Czyli będziesz korzystać z algorytmów w praktyce, ale niekoniecznie będziesz musiał je sam pisać jako backendowiec-stażysta.

Z drugiej strony na rozmowie o pracę mogą cię pytać o rzeczy niezwiązane z twoją pracą*, właśnie te algorytmy dla algorytmów ale to już loteria. Cięzko to przewidzieć.(dobrą metodą jest ciągnięcie za język rekrutujących i pytanie np. "jak działa dany algorytm, po co" a potem sprawdzanie tego w domu i douczanie się "po fakcie" tj. po nieudanej rozmowie.

* mam na myśli na początku drogi programisty web backend ( staż, pierwsza praca ) , nie twierdzę, że algorytmy są w ogóle niepotrzebne, bo jakieś zaawansowane programowanie to i algorytmy mogą być. Ale w takiej typowej pierwszej pracy to prędzej myślę, że będą się ograniczać do użycia gotowców....

0

Informatyka to kupa samych algorytmow, jedne lepszych, drugie gorszych. Byc moze w pracy we wiekszosci przypadkow Ci sie nie przyda, chyba ze bedziesz grzebal gdzies nizej w bebechach. Niemniej jesli jestes programista z pasji to powinno cie jarac to, ze wiesz jak mniej wiecej cos dziala. Np. ja ostatnio sie dowiedzialem, ze http2 wykorzystuje algorytm huffmana. Dobrze takie rzeczy wiedziec po prostu.

0

Dobra, mozna sie tego uczyc i wiedziec itp. Ale wiekszosc z Was raczej kojarzy co i jak a jak przychodzi co do czego to googlujecie. Zwlaszcza jakbyscie mieli cos takiego zaimplementowac. Bo pisanie od zera tego jest bez sensu.

Osobiscie mam mieszane uczucia czy dobrzy algorytmicy tworza 'dobry kod'.

0

Tylko, że tendencja w dużych miastach, korporacjach powoli staje się taka, że dają na wejściu algorytmy do rozwiązania, np najkrótszej drogi, w jednej firmie na juniora w javie miałem ten algorytm https://main.edu.pl/pl/archive/oi/9/kom , bez jego rozwiązania nie było dalszej rozmowy. Poza tym, w tym roku byłem już na rozmowach w 2 firmach (korpo) w Krakowie i w 1 na wejściu miałem algorytmy do napisania.
Myślę, że spowodowane jest to po części ostatnio modnymi, kilkumiesięcznymi kursami programowania, bootcampami, gdzie ludzie przychodzili z projektami w Springu a tabliczki mnożenia dobrze nie umieli...

1

Błagam. Nie mieszajcie chłopakowi w głowie - bez znajomości struktur danych (jak działają, jaką mają złożoność poszczególne operacje, jak zaimplementować) jesteś zerem na dzisiejszym rynku pracy. Z algorytmami jest podobnie. Poświęć czas I nauczyć się tego porządnie. A najlepiej zapisz się na studia, a nie idź na skróty. Wyjdziesz na tym lepiej.

0
Dupek napisał(a):

Błagam. Nie mieszajcie chłopakowi w głowie - bez znajomości struktur danych (jak działają, jaką mają złożoność poszczególne operacje, jak zaimplementować) jesteś zerem na dzisiejszym rynku pracy. Z algorytmami jest podobnie. Poświęć czas I nauczyć się tego porządnie. A najlepiej zapisz się na studia, a nie idź na skróty. Wyjdziesz na tym lepiej.

No... i ile razy w pracy wykorzystales przechodzenie najkrotszej sciezki?

0

Wiekszosc pracy to i tak przesuwanie encji z miejsca na miejsce, crud, zmiana kolorow css itp...

Ale jest troche takich miejsc gdzie to sie przyda i moze warto o to zawalczyc.

0
Dupek napisał(a):

Błagam. Nie mieszajcie chłopakowi w głowie - bez znajomości struktur danych (jak działają, jaką mają złożoność poszczególne operacje, jak zaimplementować) jesteś zerem na dzisiejszym rynku pracy. Z algorytmami jest podobnie. Poświęć czas I nauczyć się tego porządnie. A najlepiej zapisz się na studia, a nie idź na skróty. Wyjdziesz na tym lepiej.

Faktycznie dupek. To, że nie umiesz na poczekaniu na kartce napisać implementacji jakiegoś algorytmu nie znaczy, że nie wiesz kiedy go zastosować w praktyce. W normalnej firmie nie każą ci pisać implementacji LinkedList czy ArrayList, a raczej spytają kiedy byś zastosował jedną, a kiedy drugą, albo podadzą konkretny przypadek i spytają, którą z nich byś zastosował i czemu.

3

W pracy
Algorytmy nie są potrzebne w wielu miejscach, zwłaszcza tam gdzie zespoły są duże i zróżnicowane.
Od formuł finansowych masz osobne działy (np. Aktuariat). Są miejsca gdzie nawet nie wolno Ci zmieniać momentu zaokrąglenia.
Struktury danych - przede wszystkim powinieneś umieć wykorzystać istniejące. Dopiero jeśli się nie sprawdzają (i widzisz to w profilerze) - piszesz swoje.

Na rozmowie rekrutacyjnej
Niestety jest moda na bazowaniu selekcji na znajomości algorytmów. Nie wiem czemu akurat na tej dziedzinie - może najłatwiejsza do weryfikacji.

A są przecież jeszcze:

  • software crafmanship
  • refactoring
  • code review
  • projektowanie baz danych
  • projektowanie aplikacji: BPMN, UML
  • architektura aplikacji
  • architektura systemu
  • architektura komputerów
  • komunikacja sieciowa
  • praca grupowa
0
Biały Lew1 napisał(a):
Dupek napisał(a):

Błagam. Nie mieszajcie chłopakowi w głowie - bez znajomości struktur danych (jak działają, jaką mają złożoność poszczególne operacje, jak zaimplementować) jesteś zerem na dzisiejszym rynku pracy. Z algorytmami jest podobnie. Poświęć czas I nauczyć się tego porządnie. A najlepiej zapisz się na studia, a nie idź na skróty. Wyjdziesz na tym lepiej.

Faktycznie dupek. To, że nie umiesz na poczekaniu na kartce napisać implementacji jakiegoś algorytmu nie znaczy, że nie wiesz kiedy go zastosować w praktyce. W normalnej firmie nie każą ci pisać implementacji LinkedList czy ArrayList, a raczej spytają kiedy byś zastosował jedną, a kiedy drugą, albo podadzą konkretny przypadek i spytają, którą z nich byś zastosował i czemu.

Eh, jeśli ktoś nie potrafi zaimplementowac LinkedListy to znaczy, że nie rozumie jak dziala I nie wie jakie są implikacje wynikające z jej stosowania == jest zerem na rynku pracy. Podobnie z tablicami hashujacymi, drzewami binarnymi, prostymi grafami itp

4

tak, uczyc sie a nie kombinowac ze "ale bym ten czas poswiecil na 50 innych bardziej przydatnych rzeczy". nie poswiecilbys.

imo "programista" ktory nie jest w stanie nauczyc sie algorytmiki wystarczajaco zeby zdac semestr na studiach powinien miec dostep tylko do odczytu w produkcyjnych repozytoriach ;) w innym wypadku budzi jedynie politowanie i zatruwa zycie kompetentnym koderom

1
katelx napisał(a):

tak, uczyc sie a nie kombinowac ze "ale bym ten czas poswiecil na 50 innych bardziej przydatnych rzeczy". nie poswiecilbys.

imo "programista" ktory nie jest w stanie nauczyc sie algorytmiki wystarczajaco zeby zdac semestr na studiach powinien miec dostep tylko do odczytu w produkcyjnych repozytoriach ;) w innym wypadku budzi jedynie politowanie i zatruwa zycie kompetentnym koderom

W 100% się zgadzam. Mądre słowa @katelx. Brak znajomości algorytmiki na choćby akademickim (czyli raczej dosyć niskim) poziomie, pokazuje, że nie potrafisz myśleć samodzielnie - innymi słowy pokazuje, że jesteś małpą, która nauczyła się kilku frameworków i na tym twój horyzont się kończy. Praca z takimi ludźmi to katorga i nikomu nie życzę trafienia na takiego delikwenta.

0
katelx napisał(a):

tak, uczyc sie a nie kombinowac ze "ale bym ten czas poswiecil na 50 innych bardziej przydatnych rzeczy". nie poswiecilbys.

imo "programista" ktory nie jest w stanie nauczyc sie algorytmiki wystarczajaco zeby zdac semestr na studiach powinien miec dostep tylko do odczytu w produkcyjnych repozytoriach ;) w innym wypadku budzi jedynie politowanie i zatruwa zycie kompetentnym koderom

A inny Ci powie, ze jemu przesuwanie encji z lewo na prawo pasuje, zarabia 10k i niepotrzebne mu do tego algorytmy ;)

0
Bialy mleczacz napisał(a):
katelx napisał(a):

tak, uczyc sie a nie kombinowac ze "ale bym ten czas poswiecil na 50 innych bardziej przydatnych rzeczy". nie poswiecilbys.

imo "programista" ktory nie jest w stanie nauczyc sie algorytmiki wystarczajaco zeby zdac semestr na studiach powinien miec dostep tylko do odczytu w produkcyjnych repozytoriach ;) w innym wypadku budzi jedynie politowanie i zatruwa zycie kompetentnym koderom

A inny Ci powie, ze jemu przesuwanie encji z lewo na prawo pasuje, zarabia 10k i niepotrzebne mu do tego algorytmy ;)

Niech spróbuje zmienić pracę :D

0

Niech spróbuje zmienić pracę :D

osobiscie to mam wrazenie, ze calkiem wiele osob boi sie zmienic prace i czesto tkwia w jednej latami.

0
Biały mleczarz napisał(a):

Niech spróbuje zmienić pracę :D

osobiscie to mam wrazenie, ze calkiem wiele osob boi sie zmienic prace i czesto tkwia w jednej latami.

Bo wiedzą, że ze swoimi brakami nic innego, lepszego nie znajdą.

0

A pytanie zadane w tytule wątku nie jest przypadkiem przeformułowaniem pytania częstego na forum "Czy programiscie naprawdę potrzebne są studia" :) ?
Ja jestem 2x na "TAK"

0
goJavaGo napisał(a):

A pytanie zadane w tytule wątku nie jest przypadkiem przeformułowaniem pytania częstego na forum "Czy programiscie naprawdę potrzebne są studia" :) ?
Ja jestem 2x na "TAK"

Podbijam, 3x na "TAK". Studia są potrzebne, bo ludzie zadają później tego typu glupie pytania

1
goJavaGo napisał(a):

A pytanie zadane w tytule wątku nie jest przypadkiem przeformułowaniem pytania częstego na forum "Czy programiscie naprawdę potrzebne są studia" :) ?
Ja jestem 2x na "TAK"

Ale algorytmow mozna sie uczyc tez samemu ;)

1
Bialy mleczacz napisał(a):
goJavaGo napisał(a):

A pytanie zadane w tytule wątku nie jest przypadkiem przeformułowaniem pytania częstego na forum "Czy programiscie naprawdę potrzebne są studia" :) ?
Ja jestem 2x na "TAK"

Ale algorytmow mozna sie uczyc tez samemu ;)

Studiowanie opiera się w dużym stopniu na samodzielnej pracy, także studiowanie algorytmiki.
Pytanie zadane w wątku nie było o to, czy uczyć się samemu, czy z kolegą, czy z instruktorem, tylko - czy warto.

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