FizzBuzz - podstawowy "test na programistę"

O zadaniu o nazwie „FizzBuzz”, które jest często stosowane podczas testów rekrutacyjnych dla programistów słyszałem już jakiś czas temu. Dopiero ostatnio jednak dowiedziałem się jak wiele osób nie przechodzi tego testu. Skłoniło mnie to do refleksji nad tym jak powinno się szkolić przyszłych programistów, a także do tego, żeby samemu zmierzyć sobie czas potrzebny na napisanie programu „FizzBuzz”.

Jak nauczyć się programować?

Ja sam naukę programowania zacząłem mając 10 lat. Nie było wtedy tak łatwego dostępu do sieci, a i w niej nie dało się znaleźć zbyt wielu materiałów. Pamiętam więc, że czytałem wszystkie książki czy artykuły w czasopismach, które udało mi się znaleźć, ale przede wszystkim siedziałem przed komputerem i próbowałem pisać programy często metodą prób i błędów.

Na studiach trafiłem na bardzo dobrze zorganizowany przedmiot na temat podstaw programowania w języku C. Chyba naistotniejsze było to, że wykładowca udostępnił nam system o nazwie SPOJ, na którym umieszczał dziesiątki zadań o różnym poziomie trudności. Najwięcej nauczyłem się właśnie wykonując te zadania. System oceniał je automatycznie dzięki czemu z jednej strony dostawało się natychmiastowy feedback, a z drugiej był „bezlitosny” – kod po prostu musiał działać jak należy. W naszych kursach e-learningowych staram się też udostępniać jak najwięcej tego typu zadań.

Mam też doświadczenia z drugiej strony, kiedy sam prowadziłem zajęcia z podstaw programowania dla studentów. Wielu z nich radziło sobie świetnie, ale byli też tacy, którzy na tydzień przed terminem oddania prac zaliczeniowych przychodzili po pomoc bo… nie wiedzieli jak w ogóle zacząć pisać program. Najprawdopodobniej nie spędzili ani chwili na samodzielnym programowaniu po zajęciach.

Najważniejsza zasada nauki programowania moim zdaniem brzmi: „Zrób to sam”. Chcesz się nauczyć programować? To musisz usiąść przed klawiaturą i samodzielnie rozwiązać różne problemy. Im więcej – tym lepiej. Może to brzmi jak truizm, ostatecznie nikt nie oczekuje, że nauczy się np. pływać czy grać na pianinie czytając książki. Widziałem jednak wystarczająco dużo osób, które próbują opanować programowanie „w teorii”, żeby wyraźnie podkreślać zasadę „Zrób to sam” gdzie się tylko da.

FizzBuzz

FizzBuzz to prosta zabawa polegająca na tym, że wypowiada się kolejne liczby całkowite, ale zamiast liczb podzielnych przez 3 trzeba powiedzieć słowo „Fizz”, zamiast liczb podzielnych przez 5 – „Buzz”, a zamiast liczb podzielnych przez 3 i 5 jednocześnie – „FizzBuzz”.

Popularne zadanie rekrutacyjne o tej nazwie polega na przeniesieniu zabawy FizzBuzz w świat programowania. Chodzi o to, żeby przygotować program, który wypisze pierwsze 100 liczb zgodnie z powyżej opisanymi zasadami.

W słynnym wpisie na swoim blogu Imran Ghory podzielił się swoim doświadczeniem, z którego wynika, że większość absolwentów studiów informatycznych nie umiało sobie z nim poradzić w sensownym czasie (dla tego zadania sensowny czas to kilka minut – ja ostatnio w wolnej chwili napisałem rozwiązanie w JavaScripcie w ciągu 2,5 min.). 

Zachęcam Cię do zmierzenia się samodzielnie z takim zadaniem używając któregokolwiek języka programowania. 

Gdzie znaleźć inne zadania?

Wiele dobrych książek posiada całe listy zadań do wykonania. Mogą one dotyczyć konkretnego języka czy narzędzi, ale też ćwiczyć ogólne umiejętności programistyczne. Ostatnio przygotowując się do zajęć ze studentami wróciłem do książki T. Cormena „Wprowadzenie do algorytmów”. Zawiera ona bardzo dużo propozycji ćwiczeń i zadań oderwanych od konkrentego języka a dotyczących samej algorytmiki.

Świetnym miejscem jest też wspomniany przeze mnie SPOJ. Można się na niego zarejestrować tutaj. Na tej platformie znajdziesz setki zadań z systemem automatycznego testowania rozwiązań w wielu różnych językach.

Takich serwisów jest zresztą więcej. Fajny ranking możesz znaleźć np. na blogu freeCodeCamp. Polecam spróbować i stać się jedną z osób, które zadanie typu FizzBuzz potrafią rozwiązać praktycznie bez zastanowienia.

 

Maciej Kraszewski

Maciej Kraszewski

Inżynier, menedżer R&D i nauczyciel akademicki. Uwielbiam zajmować się tworzeniem nowych technologii, zdobywaniem nowej wiedzy i dzieleniem się swoim doświadczeniem z innymi. Specjalizuję się w zagadnieniach przetwarzania obrazu i widzenia maszynowego.
Szukasz dobrych materiałów o projektowaniu elektroniki?

Załóż darmowe konto na naszej platformie i odbierz pakiet materiałów edukacyjnych.

Zakładając konto zgadzasz się na przesyłanie Ci treści marketingowych przez IT20 sp. z o.o. zgodnie z dostępną na stronie Polityką Prywatności. Możesz wycofać zgodę w każdej chwili.

2 komentarze do “FizzBuzz

Dodaj komentarz

Szukasz dobrych materiałów o projektowaniu elektroniki?

Załóż darmowe konto na naszej platformie i odbierz pakiet materiałów edukacyjnych.

Zakładając konto zgadzasz się na przesyłanie Ci treści marketingowych przez IT20 sp. z o.o. zgodnie z dostępną na stronie Polityką Prywatności. Możesz wycofać zgodę w każdej chwili.

Zaprojektuj PCB

Jak przejść od zera do projektowania profesjonalnych obwodów drukowanych?

Programowanie w języku C

Jak przejść od napisania pierwszego programu komputerowego do wykorzystania zaawansowanych metod programowania?

Projektowanie układów elektronicznych

Jak działają i jak projektować poprawnie działające układy elektroniczne?
Zapisz się na listę mailową i odbierz swoje bonusy!

Więcej treści na temat elektroniki i robotyki, darmowe e-booki i dostęp do minikursów on-line. Otrzymasz to wszystko zapisując się na naszą listę mailową.