Wpis z mikrobloga

Tak się zastanawiam, czym w pracy zajmuje się taki mid, senior, czy inny doświadczony programista. Wszędzie gdzie ktoś zadaje pytanie o to jakie programy powinien sobie stworzyć do portfolio aby mieć większe szanse na dostanie pracy to zawsze pada coś w rodzaju "nie rób kolejnego cruda, zrób coś dużego, coś co żyje, coś bardziej zaawansowanego". Czyli co konkretnie w takim razie? Co wy na co dzień robicie, co jest o wiele bardziej wymagające od cruda? Allegro, Facebook, Wykop, Amazon, platforma banku - toż to w dużej mierze typowe dodaj / usuń / edytuj. Do tego jakiś algorytm na wyświetlanie użytkownikowi sugerowanych treści na podstawie jego ostatnio przeglądanych towarów czy lakowanych grup / znajomych. Istotą tych aplikacji jest to, że obsługują tysiące requestów na sekundę i muszą zapewniać wysoki poziom bezpieczeństwa (pomijając wykop) ale jakoś nie widzę jak junior miałby się za to wziąć.

Oprogramowanie do przetwarzania obrazów, dźwięków itp - tutaj rzeczywiście jest coś innego niż standardowy crud, ale nad takimi programami pracuje cały zespół ludzi. Jakiś webcrawler co najwyżej przychodzi mi do głowy. Jak uczę się Springa, czy Reacta to co mam zrobić, skoro ma to nie być kolejna wypożyczalnia książek, czy sklep internetowy?


#programowanie #naukaprogramowania #programista15k
  • 12
  • Odpowiedz
Istotą tych aplikacji jest to, że obsługują tysiące requestów na sekundę i muszą zapewniać wysoki poziom bezpieczeństwa (pomijając wykop) ale jakoś nie widzę jak junior miałby się za to wziąć.


@Matt23: Sam sobie odpowiedziałeś na to pytanie. Są różne typy "seniorów" ale w większości przypadków doświadczenie w pracy nad dużymi projektami, rozumienie aspektów wydajnościowych i umiejętność projektowania wysoko dostępnych i wydajnych systemów jest tym, czego firmy szukają u seniorów. I
  • Odpowiedz
@Matt23: Przykład z mojej pracy. Jest sobie system, który przetwarza ogromne ilości danych, baza sql ma 1TB, do tego nosql o pojemności około 300TB. Są sobie 4 lokalizacje firmy. Dane są wrzucane tylko w jednej, a dostępne musza być w każdej praktycznie od razu. Trzeba zaprojektować cały system do tego. Dane musza być lokalnie w każdej lokalizacji, a łącza zrywa około 2137 razy dziennie.
  • Odpowiedz
@porn: To w takim razie co ja powinienem stworzyć, skoro chcę i opanować w przyzwoitym stopniu, pozwalającym na zawodową pracę, konkretną technologię i jednocześnie pokazać, że potrafię zrobić coś większego niż wypożyczalnie online na zaliczenie przedmiotu? Nie przychodzi mi do głowy żaden konkret. No chyba, że jednak projekt tego rodzaju jest wystarczającym dowodem tego że coś potrafię i zrobienie kolejnego forum, sklepu, czy innej aplikacji bazodanowej jest tym co wyniesie
  • Odpowiedz
@yggdrasil: W moim poście chodziło mi bardziej o to, że nie mam pojęcia co ja jako programista bez komercyjnego doświadczenia mogę zrobić, by zwiększyć swoje szanse na dostanie pracy. Skoro dodaj / usuń / edytuj i kilka tabel połączonych relacjami to za mało, to chciałbym jakoś podnieść poziom zaawansowania moich programów. Sztuczną inteligencję dorzucić? Czy jakieś specyficzne algorytmy? Tylko wtedy to musi być konkretnie wyspecjalizowana aplikacja. Nie wiem tylko na
  • Odpowiedz
nie rób kolejnego cruda, zrób coś dużego, coś co żyje, coś bardziej zaawansowanego

@Matt23 W tym zdaniu chodzi o to, że ludzi czasem robią jakieś proste rzeczy przepisane z poradników, gdzie po kodzie trudno określić czy dana osoba ma pojęcie o programowaniu. Jeśli napisałbyś to do listę z możliwością logowania, bazą danych, możliwością eksportu np. pdf csv, możliwością wrzuca zdjęć itd to na pewno nie byłby to banalny projekt.
Jak szukasz
  • Odpowiedz
@Matt23: Zrób system, który służy do ogaraniania książek, które komuś pożyczasz.
Robisz zdjęcie książki i wrzucasz i system automatycznie dodaje książkę do bazy. Klikasz, że pożyczyłeś komuś i wpisujesz kiedy ma Ci oddać. Jak minie czas to dostajesz maila, że nie oddał książki. Do tego logowanie za pomocą facebooka albo konta google. Do tego możesz dodać 2 factor authentication.
EDIT: Oczywiście testy na wszystko.
  • Odpowiedz
Jak uczę się Springa, czy Reacta to co mam zrobić, skoro ma to nie być kolejna wypożyczalnia książek, czy sklep internetowy?


@Matt23: to może być kolejny sklep internetowy, tylko że jego rozwoju nie powinieneś kończyć na wyświetleniu listy produktów i dodawaniu do koszyka.
Przykładowo junior zakup obsłuży w taki sposób, że jak ktoś kliknie "kup", to pobierze dany obiekt z bazy, zmniejszy jego ilość na stanie i zapisze z powrotem. Senior zastanowi się co stanie się w sytuacji, gdy 50 osób kliknie kup teraz dokładnie w tym samym momencie, a na stanie masz tylko 5 produktów i jaki syf potrafi Ci to zrobić w bazie i jak wielu klientów będzie niezadowolonych, jeśli ich zamówienia będą anulowane, bo okaże się, że zamówień z jakiegoś powodu było więcej niż produktów na stanie.
Jeżeli po zakupie do użytkownika ma być wysłany mail, to junior wrzuci to prawdopodobnie do metody danego endpointu i zablokuje odpowiedź na 5 sekund, a senior wrzuci to do kolejki i wyśle to asynchronicznie.
Sam koszyk może mieć skomplikowaną logikę, bo możesz mieć kupony i musisz się zastanowić nad rzeczami typu, czy kupony łączą się ze sobą, czy nie, czy kupony dotyczą pojedynczych produktów, czy całego koszyka. Nie wszystkie produkty mogą być objęte promocją. To nie jest zwykły crud, tylko poro logiki, nad którą trzeba się dosyć mocno zastanowić. W kodzie możesz to zapisać albo jako jakieś totalne ifowe spaghetti, albo oprzeć to o jakąś
  • Odpowiedz
@Matt23: 9-9:30 kawa
9:30-10 kupa
10-12:30 przegląd nowych bugów, maile, gadanie z zespołem czytanie newsów programistycznych i głupot na necie
12:30-13:30 obiad
13:13-14 druga kawa
14-16 kodowanie jeśli jest akurat co kodować
16-17 code review, gadanie z zespołem, maile itp
  • Odpowiedz