Dlaczego warto i jak rozbijać zadania na mniejsze

Dzisiaj będzie nietechnicznie. Za to będzie produktywnie 🙂

Ważna dla programisty (i nie tylko) jest umiejętność rozbijania sobie zadań – bądź celów na mniejsze. Dlaczego?

Kiedy mam przed sobą wielkie zadanie typu „posprzątać mieszkanie” to nie wiem jak Tobie, mnie się po prostu nie chce. To jest duże i nieokreślone, nie wiem ile mi zajmie… nie wiem od czego zacząć… I tutaj lista wymówek które pojawiają się w mojej głowie, co prawda okazyjnie i nie wszystkie na raz, mogła by być znacznie dłuższa. Podobnie zaczyna się dziać, gdy zadanie jest typowo programistyczne, „duże” i/lub nieokreślone. Wiele oczywiście zależy od tego jak pracuje Twój zespół, ja lubię mieć zadanie zdefiniowane jako cel, a nie rozpisane przez kogoś innego krok po kroku co trzeba zrobić. Dzięki temu czuje i mam większy wpływ na zadanie jak i odpowiedzialność za nie. Samo duże lub nieokreślone też zmienia się u mnie wraz z doświadczeniem, gdy zaczynałem, wszystko wydawało się być nieokreślone, teraz wraz z napływem doświadczenia, moje postrzeganie tego się zmienia. Ciągle jednak dużo zalet daje rozbicie zadania na mniejsze i zapisanie gdzieś tego, nawet jak w głowie mam obraz tego co i jak powinienem zrobić.

Rozbicie zadania na mniejsze prowadzi do kilku ciekawych efektów:

Czytaj dalej

Dlaczego i jak się rozwijać po pracy?

Hej, dziś piszę o tym dlaczego warto rozwijać się poza pracą i jak się za to zabrać, nawet jak jesteś już doświadczoną osobą. Jeśli jeszcze nie zacząłeś pracować, np jesteś studentem, te same rady dotyczą Ciebie. Możliwe, że po prostu będziesz miał na ich realizację więcej czasu.

Dlaczego warto, żebyś się rozwijał poza pracą, nawet gdy już pracujesz?

Prosta odpowiedź: bo dzięki temu jesteś lepszy i tempo tego rozwoju wzrasta. Koniec i kropka, na tym mogę zakończyć odpowiedź na to pytanie ;-). Pojawia się kolejne: czemu warto być lepszym?

Czytaj dalej

Relacja z Making Software Developers’ Meetup Summer 2016

Hej, niecałe dwa tygodnie temu miałem okazję uczestniczyć w konferencji Making Software Developers’ Meetup Summer 2016, która odbyła się 14 czerwca w Krakowie. Dziś krótka notka o prezentacjach jakie miały tam miejsce. Nie są to tylko suche skróty z prezentacji ale moje własne wrażenia i przemyślenia.

Mieliśmy okazję wziąć udział w 4 następujących po sobie (z przerwami oczywiście 🙂 ) prelekcjach:

Pierwszą zaczął Matthew Mols. W swoim wystąpieniu „Embracing Failure: Building software from a new perspective” podkreślał wagę bycia przygotowanym na błędy w oprogramowaniu jakie tworzymy. Uczulał też na to, że programiści powinni chcieć i mieć więcej do powiedzenia na temat gotowości oprogramowania do wdrożenia na produkcję.
Generalnie bardzo ciekawe i zgadzam się z nim w tej kwestii. Dla mnie było to mało zaskakujące: nic czego nie wiedziałem czy nie uważałem wcześniej. Jednocześnie chce napisać, że Matt poruszył ważne tematy i uważam, że warto je propagować i nawet powtarzać jeśli trzeba. A co próbował przekazać:

Czytaj dalej

Jak stworzyć własny obiekt immutable w .Net i czego nie robić?

Hej, dzisiaj kontynuacja poprzedniego wpisu o niezmiennych obiektach.

Jako programiści .Net już teraz pracujemy z niezmiennymi obiektami na co dzień. Przykładem może być String albo DateTime. Niestety sam .Net nie pozwala nam jeszcze na tworzenie takich obiektów w bardzo łatwy sposób, np za pomocą samej adnotacji na klasie. Są plany aby to zmienić w kolejnych wersjach językach, ale zobaczymy co z tego i kiedy wyjdzie. W tym momencie, aby stworzyć taki obiekt, sami musimy zadbać o jego niezmienność. Co też nie jest trudne.

Przykładowa niezmienna klasa może wyglądać w ten sposób:

Czytaj dalej

Czym są obiekty immutable i kiedy oraz dlaczego warto je stosować?

Obiekty immutable, jak wskazuje ich nazwa, charakteryzują się tym, że nie można ich prosto zmienić po tym jak zostały stworzone (można na przykład dostać się do samej pamięci, czy też użyć refleksji). Nie ważne ile mają pól i właściwości oraz jakiego są typu. Czasem, potrzebujemy taki obiekt zmienić, wtedy zmieniamy go w całości. Możemy po prostu stworzyć nowy obiekt tej samej klasy mający nowe wartości.


Co nam to daje?

Zalet posiadania i używania takich obiektów jest kilka.

Czytaj dalej

Czym jest enkapsulacja i co daje jej stosowanie?

Czym w ogóle jest enkapsulacja (zwana również hermetyzacją)? Tak z grubsza:
Jest to ukrywanie. Nasze obiekty powinny być skryte i nieśmiałe 😉 i nie uzewnętrzniać się… to znaczy swoich bebeszków. Co ukrywamy? Wszystko co się da, przede wszystkim pola klasy i w C# właściwości (properties). W Javie zamiast właściwości są metody getX setX, te same gettery i settery tylko w innej formie. Najlepiej je ukryć, a raczej ich nie używać… ale życie często jest inne i musimy je udostępnić (nie, nie musimy, świadomie wtedy łamiemy enkapsulację bo jest łatwiej – co nie znaczy zawsze lepiej). Wtedy chociaż settery powinny być ukryte lub nie istnieć w ogóle.

A jak ukrywamy?

Czytaj dalej

Pierwsza (albo nowa) praca i towarzyszące jej emocje. Część 2 – Strach przed zadawaniem pytań.

Cześć, dziś kontynuacja tematu z poprzednich wpisów, które można przeczytać tutaj:
Nowa praca i towarzyszące jej emocje. Wstęp

Pierwsza praca i towarzyszące jej emocje. Część 1. (De)Motywacja

Kilka rzeczy jest dość uniwersalnych, więc zachęcam Cię też do przeczytania poprzednich wpisów, gdyż tutaj będę starać się nie powtarzać. Tak jak we wcześniejszych wpisach z tego cyklu, tak i w tym, zawartość dla bardziej doświadczonych programistów pewnie będzie oczywista.

Teraz chcę opisać kolejny stan/emocje:

A więc o jakich dwóch stanach piszę? Mniej więcej, wyglądają one tak (w negatywnej wersji, szczęśliwie, w większości przypadków nie jest tak źle z nami 😉 )
– „Umiem za mało i boję się zadawać pytania, bo to zobaczą i mnie wyrzucą.”

Już na początku chcę Ci wyjaśnić – nie bój się zadawać pytań. To normalne, że nie wiesz i nie rozumiesz pewnych rzeczy. Rozważymy teraz kilka scenariuszy, ich kolejność nie jest przypadkowa. W każdym kolejnym obowiązują te same uzasadnienia co w poprzednim. A więc zaczynamy!

Czytaj dalej

Jak zacząć z DDD (Domain Driven Design) – materiały

Cześć,

Dziś podzielę się z Tobą ciekawą listą materiałów o DDD, czyli Domain Driven Design. Jest to podejście do tworzenia oprogramowania przydatne wtedy, kiedy domena nad którą pracujemy jest skomplikowana. Jednocześnie nie zalecane do trywialnych części aplikacji w stylu „encje na twarz i pchasz” czyli typu CRUD. Ułatwia pracę z kodem jak i… klientem :-). Temat, którym na pewno warto się zainteresować.

Skąd pomysł na tę listę? Podczas kilku firmowych technicznych spotkań, DDD było cieszącym się największym zainteresowaniem tematem. Wzbudziło też kilka fajnych dyskusji. Nie każdy miał styczność z tym konceptem, dlatego chce Ci go przybliżyć.

W związku z tym, dla zainteresowanych tym tematem przygotowałem listę materiałów wprowadzających do DDD, z których sam korzystam bądź korzystałem. Konsultowałem tę listę też z kolegami, aby mieć pewność, że nic ciekawego dla początkujących mi nie umknęło. Nie jest to cała potrzebna wiedza, ale bardzo dobry początek. Materiały są w różnej formie tak, żeby każdy znalazł coś dla siebie. Lista jest bardzo subiektywna, jeśli znasz temat i chciałbyś ją rozwinąć, albo znalazłeś ciekawe materiały sam – podziel się w komentarzu 🙂


Darmowy ebook:
Na początek chciałem Cię gorąco zachęcić do przeczytania darmowego ebooka (104 strony), który dość fajnie i mocno podsumowuje temat. Jest on napisany na podstawie książki twórcy DDD (a czemu warto przeczytać najpierw tego ebooka zamiast pełnej książki napiszę później):

Czytaj dalej

Pierwsza praca i towarzyszące jej emocje. Część 1 – (De)Motywacja

„Często na początku kariery, gdy przychodzimy do pierwszej pracy…” Tak miał zaczynać się ten tekst. Ale jednak nie będzie. Komentarze uświadomiły mi, że ten stan dotyka nie tylko pierwszej pracy, ale też może każdej następnej, gdy robimy krok w przód, w nowe „terytoria”: technologie, zakres obowiązków a może nawet branże.

Czytaj dalej

O tym jak VS 2015 Update 2 popsuło mój workflow i co można z tym zrobić

Cześć, po zainstalowaniu najnowszej poprawki do Visual Studio 2015: Update 2 natrafiłem na pewien dokuczliwy dla mnie problem. Dotyczy on zarówno wersji Community jak i Professional. Chciałem się z Tobą podzielić sposobem na jego obejście, gdyż rozwiązać całkiem tego problemu nie można, dopóki Microsoft nie wypuści poprawki.

Pokażę Ci dwa sposoby obejścia problemu, które można ze sobą łączyć.

Czytaj dalej