Co Ty na to, bym raz na jakiś czas wrzuciła artykuł z luźnymi zapiskami w temacie programowania? Baaardzo luźnymi, latając po technologiach, różnych obszarach. Ot, taka programistyczna codzienność, przemyślenia na różne tematy. Mam nadzieję, że okażą się interesujące.

Kiedy mówię, że jestem programistką dużo osób od razu widzi dwie rzeczy: umiem formatować komputery i tworzyć strony internetowe. Tak, umiem. I zarówno jednym i drugim raczej się nie zajmuje 😉 Tworzę aplikacje webowe. Systemy. Nie strony. Choć potrafię. Ale czy to, że potrafisz gotować oznacza, że jesteś zainteresowany pracą kucharza? Nie sądzę, bym potrafiła tworzyć strony na pełen etat. Aplikacje są ciekawsze 😀 Ale to tylko mój punkt widzenia 😉

Przez lata tworzyłam drobne aplikacje webowe, ale na mobile (Tizen). Oparte o HTML5, CSS, JavaScript, jQuery i kilkadziesiąt drobnych bibliotek JavaScript’owych. To jest całkiem inne zajęcie i inny zestaw umiejętności potrzebny był mi później. Tutaj bardzo pomógł mi kolega – Tomek, który po pierwsze określił, co powinnam ogarnąć, jeśli myślę o pracy w Frontendzie. Zainteresował mnie samym Angular JS, a nawet wciągnął w projekt nad Jego aplikacją (TopMovies), gdzie mogłam przećwiczyć nabywane umiejętności. Web wciągnął mnie do tego stopnia, że na chwilę obecną nie wyobrażam sobie pracować z czymś innym 😉

Dlatego, że miałam taką pomoc – udało mi się dość sprawnie (albo w ogóle) wdrożyć w temat Web’a. Nie zrozumcie mnie źle – to nie było aż takie ciężkie. Jednak mając do wyboru siedzieć dalej w C++ i aplikacjach mobilnych, a przejść w nie do końca znanym mi kierunku – wybór mógł być inny. Nie wiedziałabym jak to ugryźć.

Miałam dużo do nadrobienia. Powiedzmy, że znałam dość dobrze HTML5, CSS, JavaScript, jQuery, ale Bootstrap’a, Angular’a 1.x, Ionic’a uczyłam się od zera. Opanowałam Grunt’a (potem zawodowo musiałam używać Gulp’a), Bower’a, npm, Node’a. Nauczyłam się CoffeeScript’a, z którego potem bardzo nie korzystałam… Teraz mam w planach TypeScript (ze względu na Angular 2.0).

W pracy potrzebowałam wiedzy z MongoDB – więc skończyłam kurs na MongoDB University (MongoDB for Node.js Developers). Co prawda potrzebowałam tylko podstaw, ale MongoDB mocno mnie wciągnęło. W oparciu o kurs zbudowałam blog (kiedyś zbiorę notatki i postaram się udostępnić coś z tego projektu).

W artykule „Frontend Developer – jak zacząć? Języki i technologie na start” uczulam, że jeśli zaczynasz – warto opanować wymagane podstawy: HTML5, CSS, JavaScript. Następnie te najczęściej spotykane wymagania: jQuery, Bootstrap (powiedziałabym, że nadal v3, choć tu warto zasięgnąć opinii innych w temacie v4). Warto znać jakieś narzędzie automatyzacji zadań: Grunt, Gulp, Webpack – podstawy, jedno lub więcej. Ale i tak nie wiesz, czy w pracy skorzystasz właśnie ze swojego wyboru.

Specjalizację zostaw na później. Znam jQuery mobile bo zajmowałam się aplikacjami moblinymi. Teraz niekoniecznie jest mi to potrzebne. Owszem, łatwiej by było mi to teraz odświeżyć w razie potrzeby niż uczyć się od zera, ale co jeśli potrzeby nie będzie?

Jestem też specjalistą od Tizen’a. Kto wie, może kiedyś to się przyda? Tylko ciekawe czy do tego czasu API nie zmieni się tak bardzo, że moją wiedzę będę mogła sobie schować (a może już mogę?)… Tj. API natywne, bo Tizen ma też część webową 🙂

Nie wiesz co Ci będzie potrzebne. Na start lepiej się skupić nad porządnym opanowaniem JavaScript’u zamiast dziesięciu framework’ów. Najtrudniejszy jest ten pierwszy język, pierwszy framework, każdy kolejny przyjdzie Ci łatwiej.

 

Sama zainteresowałam się teraz konkursem Daj się poznać, w ramach którego zamierzam stworzyć Progressive Web App. Jest to coś dla mnie nowego, choć tak naprawdę łączy wiele elementów, z których i tak już korzystałam. Więcej powiem jak wdrożę się w temat. Do tego widok zbudowany w oparciu o React’a, którego również zaczęłam się uczyć.

Także na dzień dobry koszt wejścia w konkurs będzie niemały. Ale właśnie w ten sposób chcę go wykorzystać. Jako motywację by zrobić coś nowego, nauczyć się czegoś nowego. W zasadzie, ja ogólnie lubię się uczyć nowych rzeczy.

 

No dobra, możesz pisać aplikacje webowe na każdą z platform. Po co więc programiści Android’a, itp.? Otóż aplikacje hybrydowe i natywne (pisane konkretnie pod daną platformę) dzieli tak naprawdę przepaść. Są aplikacje, w których podejście hybrydowe się sprawdzi, jednak nie sądzę, żeby taka aplikacja była szybsza niż natywna. Zawsze jeśli produkt jest pisany od zera wg wymagań klienta będzie lepszy niż ten napisany dla wszystkich. Jeśli za klienta uznamy platformę – Android, iOS, itd. to zawsze dedykowana na tą platformę aplikacja będzie bardziej dostosowana do danej platformy.

Inna sprawa, że aplikacje hybrydowe w wielu przypadkach naprawdę dają radę. Ogólnie często skupiamy się na optymalizacji tam, gdzie wcale nie jest potrzebna. Nie wszystko musi być optymalne. I w aplikacjach i życiu. Czasem koszt optymalizacji przewyższa zysk.

Oczywiście nie mówię o jakości kodu. Tu warto zwracać uwagę, ale o tym będę jeszcze pisała.

 

No, ale wystarczy tych rozkmin na dzisiaj. Od przyszłego tygodnia na blogu zacznie ukazywać się więcej regularnych treści. Większość w kontekście tworzenia aplikacji konkursowej – za co przepraszam osoby, które są zainteresowane blogiem pod kątem drobnych porad blogowych. Wiem, że aktualnie dużo pisałam w tematach nauki programowania, teraz przechodzę do tematyki zaawansowanej – co potrwa kilka miesięcy. Ale wynagrodzę to. Mam nadzieję, że wcześniej niż w czerwcu… Więcej szczegółów już wkrótce 🙂

 

P.S. Jak Ci się podobają takie luźne tematy na NetteCode? Zdaję sobie sprawę, że może być za dużo ciężkich pojęć dla początkujących dlatego umieściłam go w dziale Full Stack. A może z czasem wyjaśnię co kryje się pod pojęciami wymienionymi w artykule.