Mając nawet trochę doświadczenia w programowaniu, albo gdy jesteśmy zieloni i chcemy zdobyć nowy zawód, należy dużo ćwiczyć. Po prostu: „praktyka czyni mistrza”. Można tworzyć swoje projekty, ale również w dobie Internetu dobrze korzystać z stron pomagających w nauce kodowania. Nauka połączona z zabawą lub rozwiązywaniem konretnych zadań.

Na pewno taka forma nauki pomaga w rozwoju, ale większość stron skupia się na poznaniu i znajomości algorytmów i struktur danych. A codzienne programowanie wymaga nauki języka, bibliotek, itd. Dla przykładu warto znać jak działają algorytmy sortownia, ale nikt w pracy nie będzie wymagał abyśmy robili swoją własną implementację, bo większość języków ma takie, i na 90% są one bardziej wydajniejsze od tego co byśmy sami zrobili.

Z drugiej strony, jeżeli ktoś napotkał na jakiś problem to znajdzie rozwiązanie na Stack Overflow czy innych stronach, ale też nie można stosować metody kopiuj/wklej bez zastanowienia się jak to działa. Balans każdy musi wypracować sobie sam…

A więc mały przegląd stron, nie opisuję tu wszystkich, ale które mogą coś pomóc. Na niektóre zaglądam w wolnej chwili. Przedstawiam tutaj głównie te darmowe, lub gdzie część materiałów jest za Free.

  • https://www.codingame.com – stronka nauczająca kodowanie poprzez tworzenie programików realizujący pewną logikę gry. Sprawdzanie odbywa się na zasadzie testów jednostkowych/integracyjnych. Umożliwia naukę w najpopularniejszych językach programowania (Java, PHP, JavaScript, C/C++, Python, itd.). Fajnym ficzerem na tej stronie że każde rozwiązanie wizualizowane jest przy pomocy minigierki.
  • https://studio.code.org/ – nauka programowania dla dzieci, programowanie wizualne przy pomocy bloków. Nie jest to „normalne kodowanie”, ale dla dzieciaków bardzo fajna zabawa. Strona po polsku.
  • https://projecteuler.net/ – stronka na której rozwiązujemy zadania programistyczne oraz matematyczne. Dla typowych programistów to że opis typowo matematyczny, a nie każdy koder lubi taką formę.
  • https://codility.com/ – platforma głównie do wykonywania testów podczas zadań rekrutacyjnych. Można na niej poćwiczyć swoją wiedzę oraz przygotować się do testów: https://codility.com/programmers/ jak również wystartować w co miesięcznym konkursie https://codility.com/programmers/challenges/
  • https://codefights.com – możemy powalczyć z innymi realnymi programistami w jezykach takich jak Java, Scala, C/C++, Go, PHP, itd. Testowanie rezultatów na zasadzie testów jednostkowych, możemy dodać własne jak również zobaczyć rozwiązania innych osób. Każde rozwiązanie ma swój narzut czasowy więc czasami trzeba wymyśleć optymalny algorytm.
  • https://www.codechef.com – zadania programistyczne o różnym stopniu trudności, które są opisane w szczegółowy sposób. Możemy podejrzeć rozwiązania innych osób, w różnych językach.
  • http://www.codeabbey.com/ – głównie przykłady problemów algorytmicznych i ich rozwiązania, które możemy podejrzeć po napisaniu swojego.
  • https://www.hackerrank.com – możemy zostać hakerami :P, piszemy rozwiązania dla różnych problemów związanych z algorytmami lub strukturami danych, w najbardziej popularniejszych językach. Możemy zobaczyć przykładowe rozwiązania, ale wtedy nasze rozwiązanie nie liczy się.
  • https://www.codewars.com/ – nauka w różnych językach (Java, PHP, C, C++, itd) oraz wprowadzenie do programowania przy pomocy metodologii TDD (Test Driven Development)
  • https://codecombat.com/ – nauka w formie gry RTS, gdzie możemy ćwiczyć w JavaScript, Pythonie, Lua, CofeeScript. Kodujemy poczynania postaci.
  • https://coderbyte.com – Kursy języków i rozwiązywanie zadań dla JavaSrcipt, Java, Php, C/C++, Python, oprócz tego są zadania związane z algorytmami i strukturami danych.
  • https://www.topcoder.com/ – platforma do gdzie umiejętności zdobywamy poprzez rozwiązywanie konkretnych zadań, takich bardziej realnych i złożonych. Za najlepsze rozwiązania które zajmą 1 miejsce można otrzymać $$$.
  • http://exercism.io/ – przykłady i nauka rozwiązywania problemów dla 31 różnych języków programowania. Niektóre przykłady nie są rozwiązane, więc można napisać swój kawałek kodu.
  • http://codingbat.com/ – pomoc i przykłady problemów, rozwiązań dla Javy i Pythona. Prosta minimalistyczna strona.
  • https://www.codecademy.com – nauka programowania w technologiach typowo webowych, z naciskiem na FrontEnd (Html, Css, JavaScript, jQuery, itd.). Każda technologia jest rozbita na osobne kursy, głównie dla początkujących.
  • https://www.udacity.com/ – strona z darmowymi i płatnymi kursami. Nie tylko języki programowania, również kursy z różnych dziedzin IT
  • http://thecodeplayer.com/ – przykłady głównie pod FrontEnd

Oprócz stron typowo poświęconych nauce kodowania, warto wspomnieć o stronach na których nauczymy się wielu innych tematyk. Niektóre z nich to takie uniwersytety:

  • https://www.coursera.org/ – strona z której przerobiłem kilka kursów, największa wada – na kursy trzeba się zapisywać, są dostępne w odpowiednich odstępach czasowych. Zaleta, sa przygotowane naprawdę bardzo porządnie.
  • https://pl.khanacademy.org/ – Strona przeznaczona raczej dla osób młodszych, gdzie realizowany jest program wykładów z różnych dziedzin (matematyka, nauki przyrodnicze, ekonomia, sztuka, humanistyka). Największa zaleta – materiały są po polsku.