Kategorie
Uncategorized

Zasady w programowaniu obiektowym (na przykładzie Pythona)


Cześć!

Programowanie obiektowe (OOP z ang. Object Oriented Programming) to koncepcja, która ściśle oddziałuje z rzeczywistością, umożliwiając tworzenie skomplikowanych programów w bardziej zorganizowany i zrozumiały sposób. Python, z języków programowania o wysokim poziomie abstrakcji, z łatwością wplata idee programowania obiektowego w swoją strukturę. W tym artykule zanurzymy się w głębiny podstawowych zasad OOP w kontekście Pythona, które są niezwykle ważne dla każdego aspirującego lub doświadczonego programisty.

Zasada 1: Abstrakcja to proces ukrywania szczegółów złożoności, pozwalając programistom skupić się na interakcjach na wyższym poziomie. W Pythonie abstrakcja może być zaimplementowana za pomocą klas abstrakcyjnych i metod abstrakcyjnych.

Przykład:

from abc import ABC, abstractmethod

class Samochod(ABC):
    @abstractmethod
    def jazda(self):
        pass

class Mercedes(Samochod):
    def jazda(self):
        print("Jadę Mercedesem!")

moj_mercedes = Mercedes()
moj_mercedes.jazda()  # Output: Jadę Mercedesem!

Zasada 2: Hermetyzacja (Enkapsulacja) – znana również jako enkapsulacja, polega na ukrywaniu wewnętrznych danych obiektu i wymuszaniu interakcji z obiektem tylko za pośrednictwem metod. Pomaga to utrzymać integralność danych.

class KontoBankowe:
    def __init__(self):
        self.__bilans = 0  # atrybut prywatny
    
    def wpłata(self, kwota):
        self.__bilans += kwota
        return self.__bilans

konto = KontoBankowe()
print(konto.wpłata(500))  # Output: 500

Zasada 3: Dziedziczenie – umożliwia tworzenie nowych klas na podstawie istniejących klas, co ułatwia ponowne użycie oraz wspomaga organizację kodu.

class Zwierze:
    def mów(self):
        pass

class Pies(Zwierze):
    def mów(self):
        print("Hau, hau!")

azorek = Pies()
azorek.mów()  # Output: Hau, hau!

Zasada 4: Polimorfizm – pozwala obiektom różnych klas na bycie traktowanym jako obiekty wspólnej klasy, co prowadzi do prostszej implementacji i niższego sprzężenia kodu.

class Kot(Zwierze):
    def mów(self):
        print("Miau, miau!")

def opisz_zwierzę(zwierze):
    zwierze.mów()

opisz_zwierzę(azorek)  # Output: Hau, hau!
opisz_zwierzę(Kot())  # Output: Miau, miau!

Zrozumienie i zastosowanie zasad programowania obiektowego w Pythonie otwiera drzwi do pisania czystego, modularyzowanego i łatwo utrzymywalnego kodu. Nauczenie się tej koncepcji jest jak budowanie mostu między prostymi skryptami a pełnoprawnymi aplikacjami, które skutecznie odwzorowują złożoność rzeczywistości.

Kategorie
Uncategorized

Algorytmy i struktury danych: Najważniejsze pojęcia i implementacje


Cześć!

Algorytmy i struktury danych — brzmi poważnie i skomplikowanie? Nic mylnego! W tym artykule pokażę ci, że algorytmy i struktury danych dadzą się lubić 🙂

  1. Tablice (Arrays)
    To kluczowy typ danych w algorytmach i strukturach. To właśnie jest struktura uporządkowanych danych, która przechowuje dane za pomocą indeksów. Są powszechnie używane właśnie do manipulowania danymi.
  2. Listy (Lists)
    Lista to dynamiczna struktura danych, która może zmienić swoją strukturę podczas wykonywania kodu. Elementy są przechowywane w liście w określonej kolejności, listy również przechowują dane za pomocą indeksu.
     
  3. Stos (stack)
    Stos to struktura danych działająca na zasadzie last in, lists out (LIFO). Elementy takiej struktury są usuwane tylko z jednego końca stosu. Elementy są usuwane za pomocą pop, a dodawane na zasadzie push.
  4. Kolejka (Queue)
    Kolejka, podobnie jak stos działa na zasadzie LIFO, jednak usuwanie i dodawanie elementów w kolejce odbywa się za pomocą takich pojęć jak enqueue i dequeue
  1. Drzewa (Trees)
    Drzewa to hierarchiczne struktury danych. Składają się z węzłów połączonych krawędziami. Wygląda to mniej więcej tak:

    gdzie:
    A…H – węzły drzewa
    strzałki – krawędzie. Zwrot określa kierunek hierarchii rodzic → dziecko.
    A – korzeń drzewa
    B, C, D  – bracia, synowie węzła A, który jest dla nich ojcem
    E, F, G  – bracia, synowie węzła B, który jest dla nich ojcem
    H – syn węzła D, który jest dla niego ojcem
    A, B, D – węzły wewnętrzne
    C, E, F, G, H – liście
  2. Grafy (Graphy)
    Grafy składają się z wierzchołków (vertex) i krawędzi (edge), które łączą wierzchołki, podobnie jak w drzewach, z tym że graphy mogą być skierowane lub nieskierowane. Są używane do modelowania i ustalania relacji pomiędzy różnymi elementami.
    Na przykład? Do modelowania sieci i układów. Powstała nawet cała teoria matematyczna, zwana Teorią Grafów (ang. Graph Theory ), która zajmuje się tymi strukturami.

To są podstawowe pojęcia związane z algorytmami i strukturami danych. Jest tego oczywiście znacznie więcej, natomiast to na początek dla większości początkujących osób wystarczy 🙂

Kategorie
Uncategorized

Jak pisać czytelny i efektywny kod: Dobre praktyki programistyczne

Cześć!

Dzisiaj chciałbym podzielić się z wami praktykami, które na pewno zaowocują w przyszłości, jeśli chodzi o wydajność i czytelność waszego kodu. To na pewno zaowocuje podczas rozmów rekrutacyjnych 😉, ale nie tylko. Wierzę, że jeżeli już się za coś trzeba brać, to trzeba zrobić to porządnie. Tak samo jest z programowaniem.

Oto kilka prostych technik:

1. Zachowaj czytelność: Używaj takich nazw zmiennych, stałych i nazw funkcji, aby od razu wiadomo było, co ten kod robi (im prościej, tym lepiej). Unikaj nazw zmiennych typu abc, i, dupa itd. Używaj wcięć gdzie to konieczne i pilnuj, by kod był ładnie sformatowany.

2. Dziel kod na mniejsze funkcje: To coś, o czym pisaliśmy w poprzednich artykułach. Funkcja to takie pudło, w którym przechowujesz fragmenty kodu tak, by były bardziej poukładane. Konkretne rzeczy, które ma wykonać kod zrób w funkcji, której nazwa to dokładnie opisuje.

3. Unikaj duplikacji kodu: jeżeli masz do zrobienia fragment kodu, który się powtarza, np. ciągle literuje się po jednej konkretnej pętli, dlaczego by nie zrobić tego w osobnej funkcji, do której będziesz się odwoływał/odwoływała?

4. Używaj właściwych struktur danych: Jeśli wiesz, że będziesz miał/miała konkretne operacje do zrobienia na konkretnych danych, warto przemyśleć, jakiego typu danych będziesz używać, czy nie lepiej będzie utworzyć do tego interfejsu lub klasy.

5. Testuj i debuguj regularnie: To bardzo ważny element każdego dobrze działającego kodu. Nawet jeśli teoretycznie wszystko powinno działać, warto skorzystać z debuggera lub testów.

6. Używaj bibliotek i frameworków: To nie tylko sposób na ułatwienie czytania kodu dla innych programistów, ale też sposób na ułatwienie sobie pracy za pomocą sprawdzonych narzędzi oraz często dobrze udokumentowanych.

Kategorie
Uncategorized

Najbardziej przyszłościowe języki programowania

Cześć!

Zastanawiałeś się kiedyś, jakiego języka programowania warto się nauczyć, mając na uwadze perspektywy przyszłościowe? Jak wybrać język programowania, który obecnie prezentuje największy potencjał na przyszłość?

Często zdarza się, że zaczynamy uczyć się języka programowania na chybił trafił, kierując się osobistymi upodobaniami, co nie zawsze jest najskuteczniejszą strategią. Z jednej strony powinniśmy wybrać język, który nas interesuje, a z drugiej — taki, który w przyszłości może okazać się jednym z najbardziej popularnych i poszukiwanych na rynku pracy.

Przedstawię Ci kilka propozycji, które mogą pomóc w podjęciu tej ważnej decyzji:

  1. Python: Python to obecnie jeden z najbardziej popularnych języków programowania na świecie. Charakteryzuje się prostą i czytelną składnią, co ułatwia naukę, szczególnie dla początkujących. Jest znany z zastosowania w dziedzinie sztucznej inteligencji i matematyki, ale świetnie sprawdza się również w tworzeniu stron internetowych i backendu.
  2. JavaScript: JavaScript jest niezbędny w tworzeniu interaktywnych stron i aplikacji internetowych. Jego bardziej zorientowaną na typowanie wersją jest TypeScript, który także zyskuje na popularności. JavaScript oferuje prostotę i wszechstronność, a także możliwość tworzenia backendu za pomocą Node.js.
  3. Java: Java to jeden z najbardziej rozpoznawalnych języków do tworzenia backendu, szczególnie w kontekście aplikacji internetowych. Mimo swoich korzeni sięgających lat 90., wciąż pozostaje na czołowych pozycjach w rankingu popularności.
  4. PHP: PHP to bardzo dobre narzędzie do obsługi stron internetowych. Język ten również powstał w latach 90., ale nadal zyskuje na popularności, szczególnie dzięki możliwościom w zakresie sztucznej inteligencji.
  5. SQL: SQL to język bazodanowy, niezbędny do efektywnego zarządzania danymi. Jego znajomość będzie przydatna niezależnie od tego, czy zainteresują Cię technologie front-endowe, czy back-endowe.
  6. C#: C# to młodszy krewny C++, który zyskał popularność dzięki swoim możliwościom w obsłudze technologii .NET. Jeśli planujesz pracować w środowiskach Microsoft, C# będzie świetnym wyborem.

Warto zaznaczyć, że w wyborze języka programowania liczy się elastyczność, Twoje zainteresowania oraz predyspozycje. Nauka jednego języka to jedno, ale trendy na rynku pracy będą się zmieniać, więc ważna jest zdolność do szybkiego przyswajania nowych języków i technologii. Zastanów się, w jakich technologiach chcesz pracować, czy interesują Cię bazy danych, a może backend? Twoje osobiste zainteresowania oraz cele zawodowe powinny przeważyć przy wyborze języka programowania, który będziesz chciał opanować. 🧑‍💻

Kategorie
Uncategorized

Tworzenie aplikacji mobilnych: Wprowadzenie do Android i iOS developmentu


Cześć!

Rozwój aplikacji mobilnych stanowi niesamowitą przyjemność, ale także poważne zadanie. Aplikacje mobilne otaczają nas na każdym kroku, stanowiąc nieodłączny element naszych smartfonów. Nawiasem mówiąc, nawet podstawowa funkcja telefonu, jaką jest dzwonienie, została przekształcona w aplikację. Nie wspominając o wysyłaniu wiadomości tekstowych czy korzystaniu z komunikatorów — wszystko to realizowane jest poprzez różnorodne aplikacje. Ale jak zabrać się za ich tworzenie? Zajmiemy się tym zagadnieniem w dzisiejszym wpisie.


Rozwój Aplikacji na Androida

Android, będący systemem operacyjnym dla smartfonów stworzonym przez Google, zdominował rynek mobilny od czasu zaniku systemu Symbian, używanego mniej więcej 12 lat temu. Od tego momentu, Android nieprzerwanie prowadzi na arenie mobilnej, a nie wydaje się, aby miało to ulec zmianie w najbliższym czasie.

Tworzenie aplikacji na Androida najczęściej odbywa się przy użyciu języków Java lub Kotlin, z tym że Kotlin cieszy się większą popularnością ze względu na swoją nowoczesność, wygodę użytkowania oraz funkcjonalność.

Kluczowym elementem procesu programowania jest wybór odpowiedniego środowiska deweloperskiego. Tutaj na ratunek przychodzi Android Studio, dedykowane narzędzie ułatwiające programowanie aplikacji mobilnych. W znacznym stopniu opiera się na IDE (Środowisko Deweloperskie zintegrowane) dla Javy, oferując szereg potężnych narzędzi, na przykład do debugowania kodu.

Android SDK (Software Development Kit) stanowi kolejne istotne narzędzie, umożliwiając testowanie API aplikacji oraz wysyłanych przez nią zapytań. SDK zawiera także różnorodne biblioteki, co czyni go nieocenionym wsparciem dla programistów.

Nie można także pominąć kwestii projektowania interfejsów użytkownika, które również realizowane są w Android Studio, za pomocą języka XML.

Rozwój Aplikacji na iOS

Kto z nas nie słyszał o iOS, systemie operacyjnym zaprojektowanym na iPady, iPhone’y i iPody Touch? Rozwój aplikacji na platformę iOS najczęściej odbywa się przy użyciu języków Swift lub Objective-C, z wykorzystaniem narzędzi takich jak Xcode.

Swift, stworzony przez firmę Apple, jest zdecydowanie preferowany, dzięki swojej zgodności i doskonałej integracji z platformą iOS, wspieranej przez bogaty zestaw bibliotek i narzędzi debugowania.

Środowisko deweloperskie Xcode to kompletne narzędzie, umożliwiające testowanie, debugowanie oraz podgląd tworzonych aplikacji, wspierające zarówno język Swift, jak i Objective-C.

Podobnie jak w przypadku Androida, iOS SDK (Software Development Kit) zawiera kompletną dokumentację, narzędzia oraz biblioteki, które są niezbędne podczas procesu deweloperskiego, ułatwiając pracę nad API oraz innymi aspektami aplikacji.

Tworzenie aplikacji mobilnych może być wyzwaniem, ale jest także wyjątkowo satysfakcjonujące i opłacalne. Sektor ten oferuje ogromne możliwości, szczególnie dla programistów Androida, chociaż nie można zapominać, że rozwój i testowanie aplikacji mobilnych często bywa niedoceniane w branży IT. Znalezienie swojej niszy w tej dynamicznie rozwijającej się dziedzinie może okazać się doskonałą inwestycją w przyszłość. 😉

Kategorie
Uncategorized

Bezpieczeństwo aplikacji webowych: Najważniejsze aspekty i techniki

Cześć!

Chyba nie trzeba wspominać, jak ważne jest bezpieczeństwo użytkowników w internecie. Takie dane poufne jak imię i nazwisko razem z naszymi numerami kart kredytowych czy hasłami do banków jeśli wpadną w niepowołane ręce, mogą spowodować wiele problemów czy też nieprzyjemności. Ale jak i z czym to się je ’cyber security’?


Przyjrzyjmy się najważniejszym aspektom w bezpieczeństwie aplikacji:

  1. Autentykacja i zarządzanie tożsamością
    Autentykacja użytkowników może opierać się na wielu elementach, które będą niezbędne w uwierzytelnianiu: logowanie za pomocą haseł złożonych, logowanie za pomocą tokenów, dwuetapowa autentyfikacja — to wszystko ma nam pozwolić na to, żebyśmy bezpiecznie mogli zalogować się na swoje konta w bankach czy socjalach.
  2. Ochrona przed atakami XSS
    Ataki XSS to takie ataki, w których złośliwy kod js jest wstrzykiwany na stronie, przez co może wywołać wiele szkód. Ważnym elementem takiego zapobiegania tej podatności jest, aby strona, która przeglądamy, korzystała z CSP, czyli Content Security Policy i dobrze filtrowała dane wejściowe i wyjściowe.
  3. CSRF — ataki i jak się przed nimi bronić
    Te ataki polegają na tym, że za pomocą konta użytkownika w jego imieniu publikujemy za jego „zgodą” niechciane treści. Takimi atakami są na przykład włamywanie się na skrzynkę na Facebooku i wysyłanie automatycznych wiadomości do znajomych z prośbą o blika (płatność) 😉 
  4. Bezpieczeństwo bazy danych
    To jest to, co najbardziej kojarzy nam się z zabezpieczaniem danych, czyli zabezpieczenie danych, które są w naszych bazach. Ileż to się słyszy o wycieku danych klientów znanych korporacji… To właśnie na skutek nieodpowiedniej ochrony właśnie takich danych. 
  5. Aktualizacje i łatki (patche)
    Dobrym aspektem zabezpieczenia się przed niechcianymi atakami jest po prostu…aktualizacja wersji oprogramowania na stronach czy w aplikacjach. Jest to bardzo ważne, poniewaz kiedy korzystamy z jakiegoś oprogramowania, ono wciąż jest uaktualniane o nowe funkcjonalności pod względem bezpieczeństwa np. w przypadku, gdy pojawią się coraz to nowsze sposoby na kradzież danych.
  6. Audyt bezpieczeństwa
    Ważne jest regularne przeprowadzanie audytu bezpieczeństwa aplikacji tak samo jak jej testowanie czy też samo projektowanie aplikacji.

    Czasami gdy czytamy o sposobach, na jakie można pozyskać nasze dane czy jakie sposoby mają hakerzy, może nas rozboleć głowa… Ale spokojnie! ’Cyber Security’ to branża, która rozwija się bardzo intensywnie, a my sami musimy być po prostu ostrożni w internecie 🙂
Kategorie
Uncategorized

Działania na pętli 'for’ – przykłady w JavaScript


Pętle w dowolnym języku programowania to rzecz, bez której ani rusz. Można powiedzieć, że programista bez pętli jest jak żołnierz bez karabinu… albo uczeń bez jedynki.

W dzisiejszym poradniku chcielibyśmy pokazać wam podstawy działań na pętli. Ale nie będą to przykłady typu:  

for (let i = 0; i < 5; i++) {
  console.log(i);
}

…Nauka programowania jest trochę jak nauka matematyki: widzi i rozwiązuje się przy tablicy proste przykłady, a potem nagle dostajemy od życia na głowę jakieś skomplikowane działania, przez które nie możemy przebrnąć.

Przejdźmy więc do pierwszego przykładu:

const obj = { miasto: 'Poznań', city: 'Województwo wielkopolskie' };
for (let key in obj) {
  console.log(key + ': ' + obj[key]);
}

Mamy tu zwykłą pętlę for. Iteruje się ona po każdym z elementów wypisując tylko console. log. Nic nam nie zwraca.

A jakbyśmy ją trochę „upiększyli”? Co może nam w ogóle robić taka pętla, do czego może nam służyć?
Np. do tego:

const wojewodztwa = [
'Województwo dolnośląskie',
    'Województwo kujawsko-pomorskie',
    'Województwo lubelskie',
    'Województwo lubuskie',
    'Województwo łódzkie',
    'Województwo małopolskie',
    'Województwo mazowieckie',
    'Województwo opolskie',
    'Województwo podkarpackie',
    'Województwo podlaskie',
    'Województwo pomorskie',
    'Województwo śląskie',
    'Województwo świętokrzyskie',
    'Województwo warmińsko-mazurskie',
    'Województwo wielkopolskie',
    'Województwo zachodniopomorskie'
];
miasta = [
    {miasto: 'Bydgoszcz', wojewodztwo: 'Województwo kujawsko-pomorskie'},
    {miasto: 'Poznań', wojewodztwo: 'Województwo wielkopolskie'},
    {miasto: 'Warszawa', wojewodztwo: 'Województwo mazowieckie'}
];

function stworzSpisMiastWWojewodztwach() {
const spis = []
    for (let wojewodztwo of wojewodztwa) {
      const object = {
        wojewodztwo: wojewodztwo,
        miasta: []
      }
      for (let miasto of miasta) {
        if (miasto.wojewodztwo === wojewodztwo) {
          console.log('pasuje', miasto.miasto)
          object.miasta.push(miasto)
        }
      }
      spis.push(object)
    }
    console.log('spis', spis)
}

Ok, a tak właściwie co tu się dzieje? Krótko mówiąc, mamy tu pętlę w pętli. Najpierw patrzymy po kolei na wszystkie województwa i każdemu z nich się przyglądamy, a potem na warsztat bierzemy po kolei każde miasto w odniesieniu do województwa. Czy dane miasto leży w danym województwie? Jeśli tak — wepchniemy to miasto do specjalnego obiektu, który reprezentuje nam w spisie jedno województwo. Tak jak widzicie, mamy w tym obiekcie napisaną nazwę województwa i tablicę ze wszystkimi miastami.
Na koniec wszystkie takie województwa wypychamy, do jednej tablicy otrzymując pełny, ładny spis.
Uf.
Nie musicie tego ogarniać już teraz. Ale zauważcie, że w przypadku pętli for mamy jedno znaczące słówko, bez którego by się to nie odbyło:


Dokładnie. of pomaga nam się literować po konkretnej treści tego obiektu, a nie indeksie. Gdybyśmy napisali coś takiego:

 for (let wojewodztwo in wojewodztwa) {
      console.log(wojewodztwo);
    }

Otrzymalibyśmy wypisanie w konsoli numerów od 0 do 15, czyli wypisałoby nam indeksy poszczególnych elementów w tablicy.

A jeśli wypiszemy taki kod, jak jest powyżej otrzymamy wynik:


To, co właśnie zrobiliśmy, to pętla zagnieżdżona 🙂

Kategorie
Uncategorized

Najczęstsze błędy podczas nauki automatyzacji – niezależnie od języka programowania i branży (Musisz tego unikać!)

0 Za dużo „pośpiechu”
Prosta zasada, śpieszcie się powoli. Nauka automatyzacji oprogramowania wymaga czasu. Traktuj to jak ultramaraton.

1 Krótkowzroczna wizja
Ten punkt jest przedłużeniem powyższego punktu, dobrze jest mieć plan, jak się uczyć i co chce się dzięki temu osiągnąć na dłuższą metę.

2 „Nigdzie nie mogę zdobyć doświadczenia wymaganego do pracy w automatyce”
Zacznij od małych kroków, np. załóż konto na Githubie, a następnego dnia rozpocznij kurs i trening w interesującej Cię dziedzinie. Prześlij swój pierwszy „Hello World” i umieść go na swoim koncie Githuba. Następnie wykonaj kolejne małe kroki, z tą techniką, po roku, gdy spędzisz godzinę dziennie, będziesz na naprawdę dobrym poziomie -> zobacz jak proste to jest… 

3 „Nie mam żadnych sukcesów w rozmowach kwalifikacyjnych, więc odpuszczam”

4 Bądźcie uparci i starajcie się znaleźć swoją drogę. Czasami to działa, a czasami zawodzi.
Z perspektywy czasu, może to być świetne doświadczenie, jeśli otrzymasz informację zwrotną od rekrutów, co o tobie myślą i ile jesteś dla nich wart -> jest to cenna informacja i tylko od ciebie zależy co z nią zrobisz. 

5 Wybierz formę nauki, która najbardziej Ci odpowiada
Dokładnie, Wybierz formę nauki, która najlepiej odpowiada twojej wiedzy. Możesz oglądać kursy, czytać książki… i najlepiej: przećwiczyć to!

6 „Nie wiem czy nauka inżynierii oprogramowania jest dla mnie odpowiednia”
Nie każdy człowiek ma predyspozycje do bycia jak Michael Jordan w swojej dziedzinie. Musisz to ocenić samemu, jest na to prosty sposób – po prostu zacznij się tym interesować, spróbuj po jakimś czasie, sam będziesz oceniał. Czy jest to to, co chciałbyś robić i poświęcić na to swój cenny czas.

Kategorie
Uncategorized

5 sposobów na znalezienie flow/inspiracji, do rozwijania umiejętności cyfrowych

0 Wprowadź nawyki do swojego życia
Każdy z nas ma swój własny sposób na przygotowanie się do pracy. Niektórzy ludzie potrzebują czystej przestrzeni, podczas gdy inni wolą iść na trening i ćwiczyć przed pracą. Najważniejsze jest wypracowanie pewnych nawyków, wtedy jest to o wiele łatwiejsze.

1 Odetnij się od cyfrowej dżungli
Tak! Bardzo często zjawisko „nadmiaru informacji” idzie w parze z negatywnymi emocjami. Problemy osobiste, zmartwienia, stres i niezdrowy styl życia – to czynniki, które niszczą kreatywność.

2 Obserwacje otoczenia i długie rozmowy z ludźmi
Każde miejsce, budynek lub nawet inny człowiek kryje w sobie potencjalnie niesamowitą historię. Źródłem świetnych pomysłów może być nawet najbardziej banalna, najmniej znacząca rzecz. Jeśli chodzi o ludzi, to warto słuchać tego, co inni mają do powiedzenia.

3 Muzyka
Muza jest czymś, co mnie bardzo inspiruje do działania – szególnie rano 🙂 -> „Spotify” na słuchawkach, dobry chillout i robota idzie bardzo sprawnie.

4 Rób przerwy w pracy, zbieraj pomysły, planuj działania i zapisuję je w notatniku.
Krótko i na temat, są to sprawdzone metody i naprawdę działają.


Dodatkowo: Realizuj swoje pasje „po godzinach”

W moim przypadku jest to taniec 2 razy w tygodniu, który mnie całkowicie resetuje i relaksuje, ale może to być każdy sport lub dodatkowa aktywność – kilka godzin w tygodniu wystarczy i na pewno przyczyni się do osiągnięcia flow i lepszego samopoczucia w pracy 😉

Kategorie
Uncategorized

5 Wskazówek odnośnie utrzymania motywacji podczas nauki automatyzacji oprogramowania

0 Rozpoczynaj małymi kroczkami / Postępuj według zasady 5-minutowej
Najtrudniejszą częścią jakiejkolwiek zmiany w życiu jest początek i nie ma tutaj żadnych magicznych sztuczek, po prostu „zjedz tego robala” i trenuj ten nawyk każdego dnia.

1 Trenuj/ Ucz się z tym co lubisz
Może to być Spotify, Podcast na YouTube, a może wideo z Udemy na drugim monitorze.

2 Używaj treningu fizycznego jako przerwy
Jako ludzie potrzebujemy odpoczynku i naprzemiennej aktywności przez cały dzień, aby zmaksymalizować wyniki.

3 Planuj pracowite i produktywne poniedziałki
Długie godziny nauki w poniedziałek wyznaczają ton i wzorzec psychologiczny na dany tydzień (sic!). Jeśli pominiesz ciężką pracę w poniedziałek, o wiele łatwiej zrezygnujesz z ćwiczeń we wtorek, itd. i w końcu odpuścisz.

4 Baw się pracą
Rób, co chcesz i w jaki sposób lubisz to robić, w swoim tempie a nigdy nie będziesz musiał pracować.

5 Nie ucz się dla wiedzy, ucz się żeby mieć umiejętności
Możesz pominąć dzień praktyki, ale staraj się nigdy dwa dni z rzędu.
Jeśli to zrobisz, o wiele trudniej będzie ci wrócić do rutyny. Wiedza jest jak budowanie rakiety w garażu (możesz to robić całe życie i tak nikt tego nie zobaczy, ani nie będzie z tego żadnego pożytku). Sztuczka w życiu polega na tym, aby używać tych rakiet w praktyce 🙂 – oczywiście w przenośni. Liczy się tylko to, co robisz.