Wpis z mikrobloga

Z takich rad, które fajnie by było usłyszeć 5 lat temu przed rozpoczęciem nauki programowania:

1. Naucz się najpierw języka angielskiego.

Serio. Mam 4 książki po polsku do nauki programowania. Jeżeli tylko jest to tłumaczenie z angielskiego... to najczęściej są one napisane strasznie skomplikowanym językiem. Już programowanie samo w sobie ma całkiem ciężkie nazewnictwo, a jak tylko autor tłumaczenia rzuci się na tłumaczenie nazw po swojemu... to muszę powiedzieć, że jest niedobrze.

Tak więc dobrze jest się uczyć na początku angielskiego i programowania jednocześnie, ale jednak dużą wagę zwracać na ten angielski. A w jaki sposób? Czytać książki. A jeżeli wasz poziom nie jest wystarczający to zacząć od książek dla dzieci. Potem stopniowo oglądać filmy na YouTube z napisami, czytać artykuły po angielsku i generalnie przesiadywać na stronach w języku angielskim.

PS: https://news.ycombinator.com/

Fajne artykuły się czasem trafiają :)

2. Daj sobie czas.

Nawet najbanalniejsze problemy na początku sprawiają problemy. Wiem, że głupio jest jak się uczy programowania, a jedyne co umie to ify, pętle, ma problemy ze wskaźnikami, albo dziwi się czemu program ciągle wywala błąd StackOverflow.

Ale to na początku jest normalne. Ważne, aby przez ten okres przejść i potem jakoś to będzie.

3. "Jeszcze nie opanowałem dobrze technologii X więc nie ma sensu, abym zabierał się za technologię Y.

Używasz tego narzędzia, które w danym momencie ma najwięcej sensu. Jeżeli masz za zadanie złożyć szafkę z IKEI to przydałby się zestaw śrubokrętów i kluczy. Młotkiem i gwoździami na upartego taką szafkę też da się złożyć... ale po co jak młotek i gwoździe nie są wymienione w instrukcji?

Dobrze jak nauczysz się na początek jednego języka na podstawowym poziomie (przerobić podstawy technologii X).
Wiele języków programowania jest do siebie bardzo podobnych :) Więc jeżeli umiesz tą Javę, a akurat masz ochotę zaprogramować coś okienkowego pod Windowsa i może coś z wykorzystaniem .NETa to nie ma problemu, żebyś zabrał się za C#.

4. Za dużo czytasz za mało programujesz.

Pułapka początkujących. Programowanie to nie jest typowo teoretyczna dziedzina. Prawda. Jest dużo tutaj teorii. Algorytmy, wzory, struktury danych, nazewnictwo specjalistyczne i matematyka... ale głównie programowanie opiera się na rozwiązywaniu problemów. Bo każdy problem jest inny. Nie da się przewidzieć i nauczyć się na przyszłość wszystkich możliwych kombinacji problemów. I to chyba jest powód dlaczego przy rekrutacji tak wiele osób odpada.

Jeżeli przy rekrutacji dostaniecie zadanie, które was przerasta, to nie poddawajcie się od razu.

Rekruterzy często nie chcą od was abyście rozwiązali zadanie (dobra, to też). Oni bardziej chcą zobaczyć jak podchodzicie do rozwiązania problemu.

Bo to jest nieodłączny element pracy zawodowej programisty (w sumie w XXI wieku praktycznie każdej pracy wymagającej myślenia, ale jednak w programowaniu jest tego dużo).

5. Odkładasz swój wielki projekt "na później".

Chcesz koniecznie zaprogramować coś bardziej skomplikowanego, ale wciąż myślisz, że twoja wiedza jest wciąż za mało wystarczająca, więc przerabiasz kolejny kurs w internecie. Jednak te problemy z kursów często są banalne.

Daj sobie jakieś większe zadanie. I spróbuj je rozwiązać. Nawet jeżeli będzie trwało to tydzień, bądź miesiąc.
Masz problemy? To zacznij:

6. Dzielić problemy na części.

Ciężko jest zjeść 10kg kilo frytek na raz. Ale jeżeli podzielimy te 10kg na 20 porcji i rozłożymy to w czasie na 20 dni... to nie wydaje się być to takie trudne. Podobnie jest z problemami i zadaniami.

Jeżeli coś dla ciebie jest zbyt trudne, to znajdź słaby punkt. Masz rozbudować program w firmie, który używa programowania wielowątkowego, Swinga, komunikacji z siecią i telefonem?

Jeżeli jedno z wyżej wymienionych pojęć sprawia najwięcej problemów to od niego należałoby zacząć.

https://www.packtpub.com/packt/offers/free-learning

Polecam tą stronę dla książek. Nie raz mi dużo dało, że zapisałem sobie książkę "na później".
A potem się okazało, że akurat używaliśmy Frameworka, który kiedyś trafił do darmowego dnia książki :)

7. Dziel się wiedzą.

Najwięcej się człowiek uczy jak musi wytłumaczyć koncepcję osobie, która danej koncepcji nie rozumie. Wtedy nasza wiedza się utrwala. Jeżeli nie potrafisz w prosty sposób czegoś wytłumaczyć, to istnieje duże prawdopodobieństwo, że sam tego nie rozumiesz.

8. Odpowiedz sobie na pytanie czemu akurat zacząłeś się uczyć programować.

Każdy ma różne cele w życiu. I dobrze jest się ich trzymać. Ja muszę przyznać, że programowanie dało mi sporo w życiu i cieszę się, że wybrałem tą drogę kariery mimo naprawdę wielu problemów :)

To tyle :)

BONUS
Zadania programistyczne:
https://s-media-cache-ak0.pinimg.com/originals/e3/a4/ef/e3a4ef2bb014fce26fd754dd22b0ed05.png
https://rosettacode.org/wiki/Category:Programming_Tasks
https://www.coderbyte.com/
https://projecteuler.net/

#naukaprogramowania
  • 43
@Kain_to_Charlie_a_Delta_to_Kain:

Jeżeli nie masz problemów do rozwiązania to po co w ogóle coś robić? :)

Dlatego trzeba samemu sobie stawiać problemy.

Ja zawsze robiłem tak, że obierałem sobie jakieś zadanie i po prostu dążyłem do jego zrealizowania.
Jeżeli chcę iść do pracy do firmy gdzie piszą wszystko w Javie (akurat fajna firma się trafiła), a byłem głównie Front-Endowcem, to zabrałem się za uczenie Javy i pisanie projektów w Javie.

Stwórz sobie
@Rezix: Ja natomiast mam problem ze społecznością. Np zadaję pytanie jak coś rozwiązać i z automatu przywala sie jakiś frustrat że panie tak to Se możesz, zrób to tak i tak i pokazuje mi jakieś mega zaawansowane techniki gdy wie, że jestem amatorem. Tak jakby chcial się chełpić, że on juz takie problemy to wieki temu rozwiązywał i dziś hehe to jest PROgramista. Teraz zacząłem pytać na stackoverflow i tam jest
@meblujdom_pl: @Kain_to_Charlie_a_Delta_to_Kain:

Punkt 7. w założeniu miał się nazywać
"7. Dziel się wiedzą i nie bądź $%@#$"

Ale potem sobie zdałem sprawę, że taka jest natura internetu :)
Trafią się dobre, ciekawe strony, grupy, społeczności, fora, ale i trafią się gorsze miejsca.

I dużo zależy gdzie się wypowiadamy. Jak czasem wejdę na kilka polskich forów programistycznych to się dziwię, że ludzie mają tyle nienawiści do osób, które chcą po prostu
@Rezix:

Daję plusa! Ze swojej strony mogę dodać, że warto się również sprawdzać i chodzić na rozmowy rekrutacyjne. Przynajmniej dowiesz się czego od ciebie oczekują, a nie rzadko zdarza się tak, że z powodu mnogiej liczby kandydatów najpierw trzeba zamienić się w kompilator (rozwiązać test z danej technologii), a dopiero później będziesz mógł dostąpić niewątpliwego zaszczytu kolejnych trzech spotkań z rekruterami - takie mam smutne doświadczenie z korporacjami.

No i nie
@Rezix Ja zacząłem się uczyć kilka dni temu i trochę czytam a potem dużo bawię się samym pisaniem. I wychodzą z tego różne twory. A potem przechodzę do kolejnych narzędzi i tak dalej.
@Rezix: Ja dałbym taką radę. Jeśli pracujecie nad własnym projektem to eksperymentujcie z kodem - stosujcie te rozwiązania, które są dla was zrozumiałe, nawet jeśli wydają się być niepoprawne lub 'brudne'. Szybciej zrozumiecie ich wady i dlaczego warto zrobić coś inaczej.