Category: Po Polsku

Kilka słów o modelowaniu architektury

Jeśli miałeś kiedyś okazję zbudować nowy produkt (działające oprogramowanie) od podstaw (oczywiście, żeby nie było zbyt łatwo, przy licznych ograniczeniach czasowych i finansowych) i potem może jeszcze próbowałeś to komuś sprzedać, to wiesz już zapewne, jak prawdziwe jest motto:

“Agile to sztuka maksymalizacji pracy niewykonanej”

Tak, Agile to sztuka. I może właśnie dlatego lubimy Agile? Bo jesteśmy ludźmi, bo lubimy tworzyć, bo lubimy nadawać znaczenie i mieć wpływ na to, co powstaje w naszym zespole.

Ten, kto nadaje szkic całemu rysunkowi w zespole programistycznym to architekt. I bycie architektem to sztuka, niewątpliwie wielka sztuka.

Read more...

Workation – zespół H20 na Malcie

Wyjazd zespołu H20 na Maltę został zorganizowany w trybie bardzo przyspieszonym. Gdy w połowie sierpnia dowiedzieliśmy się, że jedziemy na workation, nie spodziewaliśmy się, że już nieco ponad miesiąc później będziemy (prawie) wszyscy pracować w otoczeniu żółtych domków wyspy Gozo.

Read more...

Brak konsekwencji czy chwilowy chaos? Jak aktualizować standardy w zastanym projekcie?

Standard — słowo zazwyczaj odnoszące się do oczekiwań wobec czegoś, w inżynierii oprogramowania nabrało bardzo dosłownego znaczenia. Standaryzować chcemy wszystko – styl pisania kodu, komunikację pomiędzy usługami, bezpieczeństwo, architekturę, a nawet proces Code Review. Co jeśli przyjęta przez nas norma została powszechnie wyparta przez inny standard – wygodniejszy, lepszy, bardziej atrakcyjny. Czy można zmienić standardy?

Read more...

Letnie praktyki w FINGO – podsumowanie

Wakacyjne miesiące w FINGO to czas, w którym organizujemy praktyki studenckie. Nie inaczej było w tym roku. Utworzyliśmy 5-osobowy zespół z wiodącą technologią Java, natomiast praktykant PHP dołączył do jednego z naszych zespołów.

Zadaniem praktykantów technologii Java było napisanie serwisu umożliwiającego reakcję na zdarzenia wielu różnych komponentów wchodzących w skład naszego ekosystemu do sprawozdawczości bankowej. Dla technologii PHP zadanie polegało na zaprojektowaniu i implementacji modułu tworzenia zleceń tłumaczeń symultanicznych w aplikacji webowej.

Rezultaty ich dwumiesięcznej pracy zostały pozytywnie ocenione przez opiekunów praktyk oraz członków zespołów, którzy byli z nimi w stałym kontakcie.

Read more...

UX Design kontra UI Design. A może zawsze razem – nigdy osobno?

User Experience (UX) i User Interface (UI) to jedne z najbardziej zagmatwanych, niewłaściwie używanych i interpretowanych terminów naszych czasów. W ostatnich latach coraz więcej słyszymy o responsywnym i intuicyjnym projektowaniu interfejsów w kontekście szerszym niż tylko aplikacje mobilne. Rozwiązania nieresponsywne i mało intuicyjne coraz częściej są przez użytkowników nieakceptowane. Dlatego tak ważny jest dobry UX – produkt musi być dobrze zaprojektowany, aby użytkownicy chcieli z niego korzystać. Dodatkowo, by usatysfakcjonować odbiorcę, niezbędny jest również przyjazny i prosty wygląd.

Jak możemy zauważyć, terminy UX i UI design często chodzą w parze, jednak czym te pojęcia się od siebie różnią, a co mają wspólnego? Zdecydowanie przyświeca im ten sam cel – sukces produktu. Ale czy są w stanie osiągnąć go osobno?

Read more...

Dlaczego developerzy i sprzedawcy powinni współpracować?

W klasycznym modelu sprzedaży usług IT pozyskiwanie nowego klienta wygląda następująco:

Osoba odpowiedzialna za sprzedaż – CEO, handlowiec, business development manager – poszukują projektu. Następnie przekonują potencjalnego klienta, że warto współpracować właśnie z ich firmą. Używają do tego różnych systemów i metod sprzedaży, lub opierają się na własnym doświadczeniu i intuicji. W kolejnym kroku już zakontraktowany projekt przekazywany jest do realizacji zespołowi. Osoba sprzedająca wycofuje się wtedy, ustępując miejsca specjalistom realizującym usługę.

Jest to podejście dobrze sprawdzone.

Ma ono jednak pewną wadę: zespół realizujący projekty może mieć dojmujące poczucie braku wpływu na to, jakie projekty realizuje. Dla wielu osób podejście „ja tu tylko koduję” jest całkiem naturalne, a nawet pożądane. Wielu programistów, testerów czy DevOpsów nie chce mieć nic wspólnego ze sprzedażą. Należy to uszanować.

W swojej pracy, pozyskując międzynarodowe projekty dla części FINGO zajmującej się usługami, staram się jednak włączać zespoły w proces sprzedaży już na wczesnym etapie, na długo przed estymacją. Oto dlaczego:

Read more...

ThreadLocal i ExecutorService

Ostatnio miałem przyjemność pracować nad funkcjonalnością, do której implementacji wykorzystywałem zmienne typu ThreadLocal. Dzięki temu miałem sposobność jeszcze raz przyjrzeć się koncepcji ThreadLocal. Idea tego podejścia jest całkiem prosta, każdy wątek ma własną instancję mapy ThreadLocalMap, w której przechowuje wartości zmiennych typu ThreadLocal. W momencie, kiedy chcesz uzyskać dostęp do wartości zmiennej przechowywanej ThreadLocal, twoja prośba delegowana jest do mapy ThreadLocalMap aktualnego wątku.

Kiedy chciałbyś zrobić zmienną typu ThreadLocal z dziedziczeniem, wystarczy, że wykorzystasz implementację InheritableThreadLocal. Implementacja ta zapewnia, że w momencie tworzenia nowego wątku otrzyma on wartości ze swojego rodzica.

Kiedy rozpoczynałem implementację wykorzystującą ThreadLocal, zacząłem się zastanawiać jakie mogą być potencjalne problemy. Na pierwszy rzut oka wszystko wygląda elegancko, ale wtedy pomyślałem o ExecutorService.

Read more...

Legacy code i szybsze testy automatyczne

Gdy projekt jest bardzo duży, kod ciężko testowalny, a większość testów to testy funkcjonalne – mierzymy się z problemem: kończymy zadanie, user story bądź cały sprint i czekamy na testy godzinami. Można to przyspieszyć, nawet w aplikacji pamiętającej czasy dinozaurów chodzących po ziemi.

Przede wszystkim warto wprowadzić do nowego kodu testy jednostkowe – wydzielić zależności na zewnątrz naszego kodu i testować to, co naprawdę tworzymy. Testy mają sprawdzać nasz kod logiczny, nie biblioteki czy ORM. Wprowadzenie testów jednostkowych to jednak krok długofalowy, niedający natychmiastowych efektów – dlatego pokażę, co można zrobić oprócz tego.

Na wstępie powiem, że można by było o tym napisać książkę, natomiast artykuł ten będzie przedstawiał temat w bardzo wielkim skrócie, w zasadzie poruszę w nim praktyczną koncepcję na bazie własnego doświadczenia – zakładając trudniejszy scenariusz, kiedy projekt ma sporo testów używających bazy danych.

Read more...

We use cookies to enhance your user experience. By continuing to browse the site, you are agreeing to our use of cookies.
Read more