Social media + organizacja strony

Refaktoryzacja – czyli w prostych słowach małe sprzątanie oraz porządkowanie 🙂 Tym razem TechnologicznaSowa przeszła delikatną refaktoryzację. Zapraszam na mały update z życia małego bloga!

01. Media społecznościowe

Doszedłem do wniosku że to dobry moment aby założyć stronę na FB oraz grupę. Dzięki stronie będę mógł troszeczkę lepiej kontaktować się z użytkownikami, natomiast grupa to świetne miejsce do zadawania pytań. Masz pytania? – atakuj na FB oraz grupę 🙂 Chciałbym stworzyć bardzo przyjazne środowisko gdzie osoby początkujące jak i bardziej zaawansowane wspierają się nawzajem.

Strona na Facebook’u oraz Grupa <- Serdecznie zapraszam!

02. Reorganizacja strony

W końcu udało mi się wygospodarować trochę czasu żeby zrobić mały porządek. Po pierwsze – pojawiła się nowa sekcja, która znajdziecie w górnym menu – tuż obok kursów – są to teksty. Strona zbiera wszystkie technologiczne wpisy nie należące do tutoriali ^_^

Delikatnie została też przerobiona strona projektów oraz wpadła całkiem nowa podstrona, która jest poświęcona aplikacji mobilnej którą tworzę w wolnych chwilach (których ostatnio brakuje) – finansowa

Podsumowanie

Wpis jest krótki – jednak zwiera wszystko co chciałem przekazać ^_^ Jeszcze raz serdecznie zapraszam na FB. Zauważyłem że poprzedni miesiąc upłynął pod znakiem artykułów – w tym postaram wrócić z kolejnymi tutorialami 🙂 Soon!


O problemach z własnymi projektami pobocznymi

Dlaczego większość projektów pobocznych nigdy nie została dokończona? 

Kojarzysz tą sytuację w której twój projekt poboczny nigdy nie wyszedł poza fazy planowania? Lub siedzi w repozytorium miesiące lub całe lata z jednym commitem, lub jest ukończony w 80%? Brzmi znajomo? No to dziś pora pogadać na ten temat, i jak sobie poradzić z problemami żeby wydać nasz projekt! 🙂

01. Faza wielkiej ekscytacji

Wiele osób którzy zajmują się programowaniem od czasu do czasu wpada na pomysł aby stworzyć swój własny projekt. Może być to cokolwiek, aplikacja na telefony, może coś webowego? Może coś związanego z czymś co jest na fali np. Internet of Things?

Wpadamy wówczas w wielką ekscytację, myślimy o naszym projekcie jak o czymś co będzie naprawdę wielkie! Nasze własne “Next Big Thing”, coś na miarę kolejnego internetowego jednorożca. 

Jednak najczęściej tak bywa, że nasz projekt trafi do miejsca gdzie trafia większość pobocznych projektów – w czeluści zapomnienia, nigdy nie ujrzawszy światła dziennego. 

02. Czas planowania

Często bywa że plan naszego projektu nigdy nie powstał, wszystko jest w naszej głowie, więc po co to gdzieś wszystko zapisywać? Niestety ale zbyt często bywa że rzeczy które pozostają nie zapisane – pozostają jedynie pomysłem który nigdy nie przybierze konkretnej formy. Sporządź plan!

Siadamy zatem do kartki (lub gdziekolwiek gdzie lubimy zapisywać nasze pomysły 🙂 ) i zaczynamy spisywać nasz pomysł – żeby nic nie uciekło. Pomysł zaczyna nabierać kształtu, planujemy wszystkie funkcjonalności, zazwyczaj podczas takiego planowania zaczynają nam powstawać dodatkowe pomysły, które w jeszcze większym stopniu sprawią żę nasz projekt będzie jedyny w swoim rodzaju.

Dodatkowo podczas fazy planowania dobieramy cały stack technologiczny którego zawsze chcieliśmy użyć, jednak nigdy nie mieliśmy ku temu okazji!

Kolejną pułapką przez którą nasz projekt może utknąć w miejscu jest brak konkretnych ram czasowych. Spisanie całego planu nie wystarczy – musimy się zabrać do jego realizacji! Człowiek jednak ma nawyk do odwlekania – czasem w nieskończoność. Pamiętaj żeby w plan zawierał konkretną datę startu pracy!

03. Szara rzeczywistość

Pierwsze etapy każdego nowego projektu są bardzo ekscytujące – do tego etapu dochodzi bardzo wiele osób, jednak prawda jest niestety bardzo bolesna. Praca nad własnym projektem to nie tylko same super zadania.

Każda osoba która pracowała przez dłuższy czas nad własnym projektem powie, że po pewnym czasie zaczyna to wyglądać jak “zwykła” praca. Mamy do zrobienia zadanie X za które wcale nie mamy ochotę się zabierać. Niektóre zadania są fajne za które zabieramy się z ochotą, inne zaś są zadaniami które po prostu muszą zostać zrobione. O ścianę w postaci “nudnych zadań” rozbija się wiele osób które pracują nad swoim projektem.

Dobrym rozwiązaniem jest pogrupowanie wszystkich zadań które mamy do wykonania – nie ważne czy są to zadania które mamy chęć wykonać, czy zdanie które “musimy” zrobić. W momencie gdy zadanie przenosimy z “TO DO” na “DONE” daje wystarczającą ilość satysfakcji + widzimy że nasz projekt zmierza w dobrym kierunku.

04. Brak motywacji do dalszej pracy...

Nasz projekt jest ukończony w 80%, jednak zaczyna nam brakować motywacji do dalszej pracy, pracujemy nad czymś już tak długo że po prostu nie widzimy w tym dalszego sensu.

Jest to problem z którym zmagają się wszyscy – niestety nie ma uniwersalnej metody która będzie działała dla każdego. Jednym z rozwiązań jest podejście do sprawy jak profesjonalista.

Idealnie widać zastosowanie tej metody wśród pisarzy – jedni czekają na wenę, i piszą wtedy gdy “czują natchnienie”, jedną z takich osób jest George R. R. Martin autor Gry o Tron, który boryka się z dokończeniem serii od wielu wielu lat. W przeciwieństwie jest Stephen King który pracuje niezależnie od jego nastawienia, codziennie stara się napisać 6 stron do książki nad którą pracuje. Systematyczność sprawiła że Stephan King jest w stanie skończyć o wiele więcej swoich projektów.

05. Perfekcjonizm nie pozwala iść dalej.

W momencie kiedy pracuje się nad własnym projektem mamy poczucie że wszystko musi być idealne. Wszystkie funkcjonalności dopracowane w 100%, interfejs użytkownika ma być idealny, oraz wszystko co tylko wymyślimy musi lśnić.

Niestety jest to podejście przez które nigdy niczego nie skończymy – powiedzenie “Done is better then perfect” nie wzięło się z niczego 🙂

Zdecydowanie lepiej jest wydać projekt który jest wystarczająco dobry – po czym systematycznie go ulepszać – niż starać się doprowadzić do stanu perfekcji – który i tak nigdy nie nastąpi 🙂


Problemy początkującego developera, czyli jak uczyć się programowania?

Hej! Dziś pogadamy sobie na temat tego jak uczyć się programowania. W dzisiejszych czasach mamy niemal nieograniczony dostęp do wiedzy – dodatkowo w różnej postaci, książki, darmowe kursy w sieci, kursy w postaci video, płatne szkolenia czy też mega drogie bootcampy. Co warto? Czego unikać?

Obecnie sam jestem podczas nauki nowej technologii, więc warto podzielić się moimi doświadczeniami w tym zakresie 🙂

01. Nadmiar dostępnych materiałów może być szkodliwy!

Pierwszym tematem jaki chciałem poruszyć to nadmiar dostępnych materiałów. Z jednej strony to czyste błogosławieństwo! Po kilku kliknięciach i szybkim googlowaniu przed oczami zazwyczaj mamy już poradnik na dany temat. Zaczynamy czytać / oglądać, przechodzimy do kolejnych materiałów – mija kolejna godzina, głowę mamy już tak pełną że nic już nie jesteśmy w stanie przyjąć. Mówimy pass. Następnego dnia temat się powtarza.

Problem polega na tym że “przyswajamy” materiał z którym nic nie robimy. Kluczowym elementem w nauce programowania jest praktyka. Po każdej lekcji, każdy początkujący adept programowania powinien odpalić IDE i napisać program na podstawie danej lekcji. Nie ma nic lepszego w nauce programowania niż praktyka. W imię starej dobrej zasady – jak się nie przewrócisz to się nie nauczysz!

02. Książki / Kursy w sieci / Kursy Video

Pierwszą sprawą jaką chciałbym omówić są książki poruszające tematy stricte związane z jakąś technologią lub frameworkiem. Problem książek jest taki, że w momencie kiedy taka książka wychodzi – już jest przeterminowana. Świat IT zmienia się bardzo szybko, w tym momencie nowa wersja Javy wychodzi co pół roku – zmiany mogą być różne, od kosmetycznych po bardzo duże. Z frameworkami jest jeszcze ciężej – w momencie kiedy wychodzi książka na temat danego frameworku jest już prawdopodobnie nieaktualna o 2 wersje (i to w najlepszym wypadku).

Istnieją jednak książki które są ponadczasowe – “Clean Code” autorstwa Roberta C Martina jest obowiązkową pozycją dla każdego programisty.

Kursy w sieci / Kursy Video – kursy w sieci są bardzo często dużo lepszym rozwiązaniem, aktualizacja takiego kursu jest znacznie łatwiejsza 🙂 Cykl aktualizacji nie jest tak długi jak w przypadku książki. Jednak tutaj też są pewne pułapki – przez to że dostęp do internetu jest tak powszechny, i dosłownie każdy może coś napisać w sieci, materiały często są bardzo wątpliwej jakości. Można to zauważyć często na portalach typu Udemy, gdzie ludzie zaczynają nagrywać wszystko na ilość nie jakość. Oczywiście na Udemy czy innych tego typu portalach można znaleźć wybitne materiały! Jednak ostrzegam że nie należy rzucać się na pierwsze lepsze kursy.

03. Kursy stacjonarne / Bootcampy

Okej na pierwszy ogień “zwykłe” kursy stacjonarne z nauczycielem. Kursy tego typu mogą być naprawdę ciekawym rozwiązaniem dla osób którym lepiej idzie nauka gdy są kontrolowane – mogą zadać pytanie i od razu uzyskać odpowiedź od nauczyciela, plus ich nauka jest kierowana pewnym planem szkoleniowym. Jednak jak to w życiu bywa, nauczyciele bywają różni – mogą się zdarzyć również tacy którym przekazywanie wiedzy nie idzie najlepiej.

Bootcampy – bootcampy to rodzaj stacjonarnych (niekoniecznie stacjonarnych, ale najczęściej) szkoleń które charakteryzują się dużą intensywnością. Powiem szczerze nie mam najlepszego zdania na temat Bootcampów. Po pierwsze Bootcampy zazwyczaj są bardzo drogie, kosztują od kilku do nawet kilkunastu tysięcy złotych. Jednak mój główny problem w stosunku do bootcampów nie leży w cenie – wiedza, w szczególności bardzo specjalistyczna może być droga – i to jest jak najbardziej ok – jednak bardzo często Bootcampy reklamują się że jeśli zapłacisz im X to po kilku tygodniach dostaniesz pracę jako programista np. za 10 tysięcy złotych miesięcznie. Co jest oczywiście kłamstwem. 

Bootcampy na fali popularności programowania koszą na ludziach ogromne pieniądze obiecując w przyszłości duże zarobki. Rzeczywistość jest jednak zupełnie inna – firmy nie zatrudniają od tak osoby które przeszły jakiś kurs. Żeby zostać zatrudnionym trzeba wykazać się wachlarzem pewnych umiejętności – Bootcampy mogą pomóc, ale wiedzę równie dobrze można zdobyć z darmowych źródeł.

Podsumowanie

Żeby nauczyć się jakiejkolwiek umiejętności – musisz ją ćwiczyć, z programowaniem nie jest inaczej. Praktyka czyni mistrza i jest to najczystsza prawda. Dostęp do wiedzy w obecnych czasach jest bardzo duży, co jest błogosławieństwem i przekleństwem jednocześnie.

Nadmiar wiedzy może przytłoczyć, pamiętaj aby nie brać się za 15 rzeczy na raz! Małymi kroczkami do celu – i wszystko się uda!


Java na Desktopy, czy w ogóle warto się uczyć?

Jednym z często zadawanych pytań przez osoby które dopiero zaczynają się uczyć Javy, są pytania dotyczące w kontekście aplikacji desktopowych z wykorzystaniem JavyFX lub Swinga. Temat jest mi wyjątkowo bliski – przez pierwsze 3 lata komercyjnego programowania w Javie, tworzyłem system desktopowy 😊 Dziś porozmawiamy sobie na te tematy 😊

01. Krótka historia Javy na desktopach

Od pierwszej wersji Javy, wydanej w 1995 roku – Java posiadała zestaw narzędzi do budowy graficznego interfejsu użytkownika. W tamtych czasach było Abstract Window Toolkit, znany szerzej jako AWT.

AWT było prekursorem do tworzenia interfejsu użytkownika. Zaledwie dwa lata później powitaliśmy Swinga który został zbudowany z założeniem wyeliminowania większości problemów związanych z AWT. Swing bardzo szybko wyparł AWT, i stał się głównym narzędziem do budowy interfejsu użytkownika. Swing jest dostępny od wersji Javy 1.2.

Swing rządził niepodzielnie aż do 2008 roku, w którym to Oracle zaprezentowała Javę FX – nowe narzędzie do tworzenia interfejsu użytkownika.

Od tego momentu zaczął się podział – część developerów została przy Swingu, część przeszła na Javę FX, a jeszcze większa część w ogóle porzuciła Javę na desktopy.

02. Swing vs JavaFX

JavaFX w pierwszych fazach rozwoju borykała się wieloma problemami, mówiąc krótko nie była to dopracowana technologia, przez co Swing ciągle był numerem jeden jeśli chodzi o budowanie interfejsu użytkownika na desktopach. 

Sytuacja zmieniła się wraz nadejściem Javy 8, JavaFX została dodana do głównego JDK/JRE Javy, a większość problemów została już poprawiona. Od tego momentu można się spotkać z odwróceniem trendu – JavaFX była częściej polecana przez ekspertów, jako nowocześniejsze narzędzie w porównaniu do już przestarzałego Swinga.

Jednak mimo to iż JavaFX obecnie jest bardziej polecana, to jeden z największych projektów desktopowych napisanych w Javie, ciągle używa Swinga – mowa tutaj oczywiście o jednym z najlepszych IDE – IntelliJ.

IntelliJ, czyli najbardziej zaawansowany IDE ciągle używa Swinga do budowy swojego interfejsu. Trzeba im to przyznać że ludzie z JetBrains zrobili naprawdę niesamowitą robotę – wszystko działa naprawdę świetnie, przez co produkt zdobył niesamowitą popularność.

03. Czy w ogóle warto uczyć się Javy na desktopy?

Jaka osoba która przez pierwsze 3 lata komercyjnego programowania tworzyłem aplikacje desktopowe w Javie, jestem zdania że jest to ślepy zaułek. Moim zdaniem, jest to ciekawostka którą można się zainteresować – jednak nie poświęcałbym tym tematom zbyt wiele czasu.

Po pierwsze – nie dajmy sobie wmówić że jeden konkretny język jest super do wszystkiego – tak nie jest. Java idealnie się sprawdza do rozwiązań po stronie backendowej, jednak jeśli chodzi o tworzenie interfejsu użytkownika na desktopy ma zdecydowanie więcej wad niż zalet.

Jedną z głównych wad Javy podczas tworzenia aplikacji desktopowych jest to, iż użytkownik który chciałby z takiej aplikacji skorzystać, musi na swoim komputerze mieć zainstalowaną Javę w konkretnej wersji. Jeśli chodzi o JavaFX (w najnowszej wersji – 11+) musi mieć zainstalowane dodatkowe moduły które pozwolą mu na uruchomienie takiej aplikacji. Niby nic – a jednak, wiele razy borykaliśmy się z problemem że użytkownik miał Javę w dużo starszej wersji niż było to wymagane, a aktualizacja była niemożliwa ze względu na korporacyjne wymagania. Rozwój aplikacji przez to był bardzo utrudniony.

Java na desktopy jest jedynie niewielkim procentem tworzonych aplikacji przy pomocy Javy, większość systemów to systemu działające po stronie serwera. Bardzo ciężko jest znaleźć pracę gdzie tworzy się aplikacje desktopowe w Swingu/JavieFX – z tego też powodu ten wycinek Javy traktowałbym raczej hobbystycznie 🙂


Czy matematyka jest potrzebna programiście?

Dziś postaram się odpowiedzieć na bardzo często poruszane pytanie – szczególnie przez osoby które dopiero zaczynają  – Czy matematyka jest potrzebna programiście?

01. Czy matematyka jest potrzebna programiście?

Odpowiedź na to pytanie nie jest proste, nie można powiedzieć tak lub nie, tak jak to bywa w świecie IT odpowiedź na to pytanie brzmi – to zależy 😊

Okej! W sumie to żadna odpowiedź prawda? Niestety jest ona również prawdziwa. Postaram wam się przedstawić ten temat z mojej perspektywy – 4,5 lata studiowania (2,5 roku inżynierka + 2 lata magisterka) oraz 8+ lat komercyjnego programowania w Javie.

02. Studia – czyli powód dlaczego to pytanie w ogóle się pojawia

Studia (lub „szkoła” ogólnie ) są jednym z najczęstszych powodów dla których to pytanie się w ogóle pojawia. Powód jest bardzo prosty – zadania akademickie związane z programowaniem są w dużej mierze oparte na matematyce lub mocno „algorytmiczne” (np. metody sortowania) które również kojarzą się mocno z matematyką.

Tego typu zadania mają wiele poziomów – od mega łatwych, po zadania które są naprawdę kosmiczne. Dodatkowo wykładowcy często nie ułatwiają życia – czytają slajdy z prezentacji monotonnym głosem, a ćwiczenia przez nich wałkowane od 15 lat są… no cóż, powiedzmy że średnie.

Uczeń któremu nauczyciel nie potrafi dobrze wytłumaczyć problemu, dość łatwo może się zrazić do tematu – i tu pojawia się konflikt ktoś lubi programować – ale nie radzi sobie z tego typu zadaniami. Niestety, jeśli wybierzesz się na studia informatyczne – na 99% matematyka będzie dla Ciebie bardzo ważna, nie tylko z powodów o których pisałem wcześniej, będziesz mieć również inne pokrewne przedmioty które będą mocno bazować na matematyce.

Tak. Na studiach informatycznych matematyka będzie Ci potrzebna.

03. Praca

To jest sedno pytania – czy matematyka będzie mi potrzebna w pracy jako programista? Niestety, odpowiedź na to pytanie to również magiczne „to zależy”. To zależy głównie od tego nad jakim projektem będzie pracować 😉

Przez 8 lat mojego programowania matematyka była mi potrzebna bardziej lub mniej – zależnie od projektu.

W pierwszej pracy, pracowałem nad systemem dla przemysłu tytoniowego – gdzie matematyka była potrzebna tylko w niewielkich obszarach, było jej naprawdę niewiele. Firma dla której pracowałem posiadała również system dla firmy ubezpieczeniowej – tutaj matematyki było naprawdę dużo, jednak ja osobiście się tym nie zajmowałem – tworzyłem moduł raportów który agregował dane, nie zajmował się liczeniem. Spędziłem w tej pracy prawie 5 lat (o tym powstanie chyba oddzielny wpis 😉) Matematyka nie była mi potrzebna aż tak bardzo – była przydatna, ale wystarczył naprawdę podstawowy poziom.

Po zmianie mojej pierwszej pracy trafiłem do projektu gdzie tworzyliśmy oprogramowanie dla przemysłu „spożywczego” – w tym projekcie matematyka była dużo bardziej istotna – było sporo liczenia oraz różnych kalkulacji które odbywały się na różnych poziomach przetwarzania danych. Plusem było to że mieliśmy naprawdę świetny zespół – plus dostęp do mega analityków biznesowych którzy tłumaczyli nam to w taki sposób że po jednej sesji wszystko nabierało sensu. Jednak znajomość matematyki zdecydowania pomagała.

Kolejnym projektem w którym pracowałem – był system bankowy 😊 jak myślisz, jeśli piszesz soft dla banku to potrzebna Ci będzie matematyka? Będzie 😊 Na 100% nikt nie będzie wymagał nie wiadomo czego – jednak naprawdę matematyka w tego typu systemach jest niesamowicie przydatna.

04. Projekty własne

Przy okazji pisania własnej aplikacji mobilnej, większość czasu poświęcam na matematykę aby obliczenia były prawidłowe. Jednak jest to specyficzna cecha projektu nad którym pracuje. Jednak projektów w których matematyka jest przydatna jest naprawdę mnóstwo. Nawet w grach jest tego wiele!

Podsumowanie

Czy matematyka jest niezbędna programiście? Podstawowe umiejętności matematyczne są dużą zaletą i mogą ułatwić Ci pracę. Czasem trafią się miesiące, nawet lata, w których matematyki nie będziesz potrzebował – ponieważ taka będzie specyfika projektu. Jednak prędzej czy później, jest to umiejętność która po prostu się przyda! 😊


Finansowa - Buduję swoją pierwszą aplikację mobilną!

Hej! Dziś chciałbym wam przedstawić projekt nad którym pracuje po godzinach! A w zasadzie to w przerwach między pracą/życiem oraz blogiem 😉

01. Finansowa – Zarządzanie budżetem domowym oraz kalkulatory finansowe

Okej! „Finansowa” to bardzo robocza nazwa – która jednak mi odpowiada, całkiem możliwe że zostanie 😊 Jest to aplikacja na urządzenia mobilne Android / IOS którą tworze przy użyciu Fluttera.

O Flutterze możecie przeczytać w poprzednim wpisie. Krótko podsumowując jest to dość świeża technologia od Google do tworzenia aplikacji mobilnych. Na dzień dzisiejszy, Finansowa, aplikacja nad którą pracuje, wygląda tak:

Muszę przyznać że jak na razie, jestem bardzo zadowolony z prac nad apką 🙂

02. Funkcjonalności?

Przyznam szczerze – nie będzie tutaj nic innowacyjnego i odkrywczego raczej standard 😉 Nie jestem jednym z tych którzy wszędzie wrzucają słówko smart albo innowacja 😉

Po pierwsze – głównym elementem systemu jest budżet, planowanie i śledzenie wydatków. Zależy mi przede wszystkim aby aplikacja pomagała użytkownikom śledzić własne pieniądze – w łatwy i intuicyjny sposób. Drugą równie ważną funkcjonalnością są kalkulatory finansowe, które mogliście zobaczyć na przedstawionym powyżej filmiku.

03. Stopień zaawansowania prac?

Tak naprawdę dopiero zaczynam 😉 W tym momencie mam zaimplementowane 2 z 9 kalkulatorów finansowych, czyli  prawie 23% 😊  Myślę że wszystkie kalkulatory finansowe to jakieś 15%-20% całej aplikacji 😊 Jak widzisz – jestem na samym początku.

04. Po co w ogóle to robię? Kiedy skończę?

Spotkałem się już z opinią – ale po co w ogóle tracisz na to czas? Przecież takich aplikacji jest już cała masa! Odpowiedź jest bardzo prosta 😊 Po pierwsze – chce wyjść ze strefy komfortu, od prawie 8 lat programuję w Javie, czas poznać coś nowego.

Po drugie – zawsze chciałem napisać i wydać własną apkę mobilną. Każdy się kiedyś nasłuchał o niesamowitych sukcesach, firmach/aplikacjach które powstały w garażu, a teraz są gigantami na skalę światową 😊 Żeby nie było! Nie mam takich aspiracji 😊 Kiedyś jak byłem jeszcze młody i naiwny myślałem o czymś takim – i w zasadzie tylko myślałem, w tamtych czasach nie powstała ani jedna linijka kodu 😊

Po trzecie – aplikacja szyta na miarę. Jestem teraz na etapie życia, gdzie finanse osobiste są dla mnie bardzo ważne. Jednak nie mam jednej konkretnej aplikacji która spełniała by moje oczekiwania, w sposób który oczekuje. Czemu zatem nie napisać własnego rozwiązania?

Okej – kiedy wydanie aplikacji? Temat nie będzie tak prosty jak mi się zdaje – zakładam pesymistyczny scenariusz na Styczeń 2020. Aplikacja mam nadzieje że zostanie wydana jednocześnie na obie platformy.

Możecie mi życzyć powodzenia! Będę dawał znać jak idą prace! Jeśli tylko chcecie – możecie podsyłać jakie funkcjonalności chcielibyście zobaczyć w takiej aplikacji!


Flutter - Przyszłość aplikacji mobilnych ?

Dziś trochę mała odskocznia od standardowych backendowych tematów. Porozmawiamy sobie o stosunkowo nowym frameworku do tworzenia aplikacji mobilnych ze stajni Google. Framework jak tytuł wskazuje nosi nazwę Flutter.

01. Aplikacje mobilne? Aplikacje natywne? Aplikacje hybrydowe? O co chodzi?

W świecie aplikacji mobilnych istnieje jeden podstawowy problem – dwa systemy operacyjne które dzielą rynek – Android oraz IOS.
W zależności od źródeł, dane różnią się nieco od siebie jednak pokazują dość zbieżny trend:

Android 74.45%
IOS 22.85%
Inny 2.70%
Android 70.91%
IOS 27.95%
Inny 1.14%
Android 47.27%
IOS 52.28%
Inny 0.45%
Android 73.67%
IOS 24.79%
Inny 1.54%

Widać że Android posiada większość rynku, z wyjątkiem Ameryki północnej, gdzie dzielą rynek mniej więcej po połowie.

Aplikacje na Androida oraz IOS pisane są w różnych językach – oficjalnym językiem w jakim piszemy aplikacje na Androida jest Kotlin (do niedawna była to Java, kotlin jest tak jakby rozwinięciem Javy), natomiast oficjalnym językiem programowania dla IOS jest Swift (podobna historia jak w przypadku Androida, do niedawna oficjalnym językiem był Objective C – na nim wyrósł Swift).

Tu jest sedno problemu – jeśli chcemy wdać aplikację na oba systemy, „musimy” (nie do końca musimy, ale o tym za sekundę 😉 ) napisać oraz utrzymywać dwa kody źródłowe. Jeden dla Android, jeden dla IOS. Jest to dość problematyczna sprawa. Musi być jakieś lepsze rozwiązanie prawda? No i jest 😊

02. Aplikacje Hybrydowe

Próbą rozwiązania tego problemu są „aplikacje hybrydowe” – piszemy z użyciem jakiegoś frameworku jeden kod, który możemy skompilować aby uruchomić na Androidzie oraz na IOS.

Jednym z bardziej popularnych frameworków tego typu jest React Native – tworzony przez Facebook’a od 2015 roku zdobył na GitHubie ponad 70 tysięcy gwiazdek. Innymi frameworkami tego typu są Xamarin  czy Ionic.

Flutter jest najnowszym frameworkiem do tworzenia aplikacji zarówna na Androida jak i IOS’a. Flutter jest tworzony przez Google, oraz jest zbudowany o język programowania Dart.

03. Flutter - Zalety oraz wady - okiem backendowca

Zalety:

Natywna kompilacja: Flutter, pozwala nam przy użyciu tego samego kodu tworzyć aplikacje na Androida oraz na IOS – w zasadzie jak każdy frameworkd do aplikacji hybrydowych, Flutter jednak kompiluje kod do kodu natywnego dla danego urządzenia. Podczas gdy inne frameworki wykorzystują „web-view” (opakowaną stronę internetową w  aplikację mobilną). Flutter ma tutaj ogromną przewagę wydajnościową. Flutter na tym polu ma znaczącą przewagę wydajnościową.

Szybkość pisania aplikacji: Flutter jest naprawdę bardzo dobrze przemyślany, jest stosunkowo łatwym frameworkiem aby się go nauczyć, próg wejścia jest dość niski. W momencie kiedy poznasz już zasady tu panujące – tworzenie aplikacji będzie naprawdę szybkie!

Tworzenie zaawansowanego interfejsu użytkownika: Flutter pod tym względem naprawdę zaskakuje. Tworzenie przepięknego interfejsu jest zdecydowanie prostsze niż w innych frameworkach. Odwołam się tu do jednej z aplikacji napisanych we Flutterze -> Reflectly. Polecam filmik od samych developerów czemu postawili na Fluttera:

Google jako autor: Google nikomu nie trzeba przedstawiać, jest to gigant technologiczny który ma zaplecze aby zacząć rozwijać zupełnie nową technologię, która może naprawdę zabłyszczeć. Udowodnili to już nie raz.


Wady:

Google jako autor: Ten sam punkt w wadach jak i zaletach to nie jest błąd 😉 Google potrafi robić konkretne rzeczy, jednak wiąże się to z ilością projektów – tworzą ich wiele, niektóre chwytają inne nie. Google jest znane z tego że jeśli dany projekt po X czasie nie zdobędzie odpowiedniej społeczności, Google po prostu projekt zamknie. Jedną z bardziej spektakularnych porażek jest chyba Google+

Młoda technologia: W chwili obecnej Flutter to bardzo młoda technologia, pierwsza wersja została wydana w Grudniu 2018 roku. Wiąrze się to jeszcze z wieloma problemami z jakimi zmaga się każda nowa technologia:

Ponad 5 tysięcy zgłoszonych problemów 😉 Ale Liczba gwiazdek 68 tysięcy robi wrażenie! Mimo wielu zgłoszonych problemów społeczność jest naprawdę ogromna

Podsumowanie

Jako programista backendowy początkowo patrzyłem z przymrużeniem oka na Fluttera – jednak postanowiłem że dam mu szanse. Muszę przyznać szczerze że jest to bardzo przyjemny framework, każdego dnia podoba mi się coraz bardziej! Od jakiegoś czasu myślałem nad własną małą aplikacją mobilną, i stawiam na Fluttera! Co z tego wyjdzie? Zobaczymy 😊