Marcin N.

Marcin N. Programista Android

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Witam,

ostatnio zastanawiam się nad tym czy nie zająć się po pracy zleceniami związanymi z androidem, jako że nie posiadam doświadczenia komercyjnego w developmencie mobilnym chciałbym poznać odpowiedz na pytanie: Jakie umiejętności techniczne powinno się posiadać aby myśleć o pracy w androidzie?

Chodzi mi o prostą listę, jakie wymogi od strony programistycznej trzeba spełniać by można spokojnie mysleć o zleceniach czy pracy związanej z platformą Android.

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Generalnie to myślę że trzeba się zapoznać z stroną googla: http://developer.android.com, przerobić tutoriale, czytać po necie o częstych problemach (a takich trochę jest) no i przynajmniej podstawy JAVY - to tylko ja tak myślę, bo androida znam w podstawowym zakresie.
Marcin N.

Marcin N. Programista Android

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Może aby doprecyzować: odsyłanie do tutoriali nie jest tym czego szukałem, chodzi mi raczej o wymogi oczekiwane przy pracy programistycznej:
- czy konieczna jest znajomość framewów/biblioteki np. ActionBarSherlock, GreenDroid (?)
- umiejętności tworzenia animowanych tapet(?)
- znajomość koncepcji typu ViewHolder (?)
- umiejętność tworzenia widgetów, providerów, recivier'ów (?)
- wymiatanie w UI bez graficznego designer'a (?)
itp.

To tylko przykładowe rzeczy które wpadły mi tak z głowy, ale nie mogę ich ani potwierdzić, a lista
na pewno jest dłuższa :)

Odnośnie znajomość JAVY to wymóg raczej oczywisty jeśli mówimy o Android SDK.

konto usunięte

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Wszystko to co napisałeś, a nawet więcej :P

Dodam jeszcze:
*) tworzenie własnych kontrolek/widgetów, GUI, kombinowanie jak nie będąc grafikiem stworzyć np. fajne tła 9.png albo za pomocą plików XML wysmyczyć fajne/cukierkowe animacje i drawables, żeby wyglądały jak grafiki od graphic designera.
Projektowanie GUI (layouty) jest normalną sprawą. Do tego nie potrzebujesz grafika.
*) robienie czary-mary aby aplikacja wyglądała i zachowywała się jak na iPhone (czasem jest to kwestia GUI, czasem np. dodatkowych widgetów)
*) CACHE danych, pamięć podręczna, synchronizacja aplikacji z serwerem (jeżeli appka pracuje w trybie off-line i zbiera dane dla serwera)
*) komunikacja sieciowa (REST API, XML/JSON, sockety/HTTP, SSL) i radzenie sobie z problemami, które mogą wystąpić (np. ponawianie połączenia).
*) OpenGL ES - niektórzy szukają ludzi do tworzenia gier (ew. jeszcze Unity 3D, coś do LUA i Fmod ale to jest już wchodzenie w C++ i Android NDK)
*) Services, wielowątkowość, być może też AIDL (do komunikacji pomiędzy komponentami należącymi do różnych procesów), itd.
Zapewnienie ciągłości działania wątków (np. w AsyncTask) gdy aplikacja jest niszczona podczas zmiany orientacji ekranu (i późniejsze odnowienie powiązania z tym "wątkiem").
*) Fragmenty, Loadery, ActionBar (+ActionBarSherlock?).
Do fragmentów na starszych wersjach Androida masz support.
*) obsługa płatności (wewnętrznych i zewnętrznych) (?)
*) czasem mogą być pożądane kwestie bezpieczeństwa danych aplikacji, zabezpieczenia ich przed niepożądanym dostępem albo szyfrowanie komunikacji sieciowej...
*) adaptery danych, np. do Spinnerów, GridView lub ListView.
Prosta rzecz ale często trzeba napisać coś swojego i wyświetlać elementy listy tak jak chce zleceniodawca. Appki muszą być cukierkowe i cieszyć oko.
Czasem w elementach listy trzeba zagnieździć bardziej skomplikowane layouty i obsłużyć akcje albo CACHEować grafiki, itd.
*) integracja z Facebookiem, providerami od kontaktów/kalendarza, ...
*) wsparcie dla różnych ekranów (w tej chwili w domu mam stworzonych ok. 25 emulatorów dla różnych konfiguracji DPI, wielkości ekranu i rodzielczości). Emulatory działają tragicznie wolno ale czasem warto pocierpieć i potestować na nich GUI
*) w przypadku większych aplikacji: odpowiednie zaprojektowanie architektury, żeby aplikacja działała szybko, sprawnie i była skalowalna na różne późniejsze zmiany.
*) geolokalizacja, GoogleMaps, Augmented Reality, QR Codes
*) video streaming, VoIP/SIP.

*) odkrywanie różnego rodzaju bug'ów w Andku, przez które czasem trzeba sobie poradzić z zadaniem w inny sposób :)

*) nie siedzę w mobile web dev ale przydatne mogą być dla Ciebie frameworki typu Titanum albo PhoneGap

Inne kwestie:
*) zwracanie uwagi na przejrzyste GUI. Nie ładowanie ekranów zbyt dużą liczbą widgetów.
*) projektowanie GUI (layouty lub komponenty) tak, żeby użytkownik bez problemu wiedział o co c'mon.
*) popatrz co ludzie piszą (lub do jakich projektów szukają programistów) i zastanów się, czy jesteś w stanie napisac tego typu appki

*) języki obce, jeżeli będziesz szukał zleceń poza krajem :P
*) ...i sporo cierpliwości, jeżeli szukasz szczęścia w kraju...

Tego typu tematów można napisać jeszcze kilka razy tyle...
Z własnego doświadczenia: cokolwiek będziesz umiał, zawsze będzie to za mało :P

Wszystko zależy od projektu, jaki dostaniesz.
Raz napiszesz animowaną tapetę lub unlocker do ekranu, innym razem aplikację CAD na tablet (np. z ręcznie renderowaną grafiką i mnóstwem algebry/geometrii ułatwiającej precyzyjne rysowanie linii/obiektów i ich powiązań, za pomocą grubego palucha użytkownika).

Powoli rzucam etat, przechodzę na freelancing (szukałem pracy zdalnej ale poza kilkoma ofertami, w PL panuje jeszcze wczesne średniowiecze - łatwiej jest zdobyć zlecenia). Dłubię też własne projekty. W każdym projekcie znajduję przynajmniej kilka tematów lub kwestii, których muszę się douczyć :]

...ale na tym polega 'fun' :D

Weź sobie jakąkolwiek aplikację na 'kanał', spróbuj ją w myślach rozebrać na czynniki pierwsze i zastanów się jak ją możesz napisać.
Gotowej listy tematów i wymogów dla programisty raczej od nikogo nie dostaniesz...

Powodzenia!Mateusz Wolf edytował(a) ten post dnia 10.01.13 o godzinie 22:14
Wojciech Szczepański

Wojciech Szczepański Programista Java,
J2EE, JEE, Spring,
Hibernate

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Widzę, że piszesz przede wszystkim w PHP, jeśli się mylę to mnie popraw. Sądzę, że powinieneś skupić się także na poznaniu Javy. Android dev to Java więc warto najpierw (lub równocześnie) dobrze poznać tą technologię.
Jako źródło wiedzy polecam http://developer.android.com, są książki, polskie tłumaczenia też jeżeli ktoś lubi i oczywiście dużo tutoriali na youtube.

Pozdrawiam i powodzenia
Marcin N.

Marcin N. Programista Android

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Mateusz Wolf:
Wszystko to co napisałeś, a nawet więcej :P

Dodam jeszcze:
*) tworzenie własnych kontrolek/widgetów, GUI, kombinowanie...


Lista jest zdaje się być długa, ale to chyba ok, są jakieś zagadnienia na które szczególnie warto zwrócić uwagę?Marcin Narowski edytował(a) ten post dnia 10.01.13 o godzinie 23:16

konto usunięte

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Marcin Narowski:
Lista jest zdaje się być długa, ale to chyba ok, są jakieś zagadnienia na które szczególnie warto zwrócić uwagę?

Lista jest długa ale to jest celowe :)
Szukając pracy lub zleceń, przygotuj się na różne 'ale' i wybrzydzanie, mające zbić twoje oczekiwania finansowe (oczywiście o ile faktycznie jakieś doświadczenie i wiedza będą dla pracodawcy istotne).

Wracając do tematu:

1) Rzuć okiem na mobile web development
http://developer.android.com/guide/webapps/index.html
oraz na PhoneGap, Titanum (jakoś tak się to pisze) i inne frameworki multiplatformowe.

Być może będzie Tobie łatwiej zacząć pracę w aplikacjach webowych na mobilki (HTML5, javaSript i CSS).
W poprzednim roku odrzuciłem chyba kilkanaście ofert pracy w mobile web dev - temat jest popularny i zapewnie pojawi się więcej ofert pracy tego typu.

Spora część aplikacji nie jest skomplikowana lub specjalistyczna i pewnie łatwiej/szybciej jest je zrobić w webie, zwłaszcza jeżeli jeszcze siedzisz w tych klimatach.

W tym przypadku nie jestem Tobie w stanie bardziej pomóc. Rzuciłem weba, wkręcam się w iOS, a w Androidzie schodzę w dół (Android NDK/C++). Sporo osób chwali sobie jednak tworzenie appek w ten sposób.

2) Lista tematów
Trudno jest coś wybrać. Wydaje mi się, że najistotniejsze na początek będą takie kwestie:

*) własne widgety (tzn. konrolki) - sporadycznie się przydaje
*) wielowątkowość, np. w formie AsyncTask, aby pewne operacje (np. zasysanie danych z serwera) wykonywać w osobnym wątku.
W przypadku wątków, na początek pamiętaj o tym, żeby GUI odświeżać w głównym wątku (mam na myśli np. Handlery).
*) komunikacja sieciowa, np. HTTP, dla POST/GET, obiektowo (niekoniecznie po socketach). Appki często komunikują się z serwerem (REST API, XML/JSON) + parsowanie tego typu dokumentów w appce.
Zastosowanie: aplikacje klienckie dla serwisów WWW, m-commerce, mobilne galerie demotów/obrazów...
Poza tym, czasem aplikacja musi wysłać np. do skryptu PHP na serwerze jakieś dane... Aplikacja może wysłać żądanie po HTTP/POST z parametrami i w odpowiedzi np. otrzymać JSON z listą produktów...
*) Services - czasem są przydatne, tak samo jak BroadcastReceivery i Providery. Być może na poczatku tego nie będziesz wykorzystywał...
*) adaptery danych
Przykład: mobilna aplikacja wyświetlająca listę produktów w sklepie. Każda pozycja listy posiada zdjęcie (miniaturkę) produktu, krótki opis (1 lub kilka TextView), przycisk kierujący np. do okna koszyka...
Piszesz adapter, żeby wygenerować widok poszczególnych pozycji listy (+ np. dodatkowy widok dla pozycji listy).
Appki często wyświetlając coś w formie listy: lista kontaktów, produktów, wiadomości na mobilnym FB, itd.
Inny przykład: chcesz zrobić menu głowne (wyświetlane na środku Activity) w formie siatki ikonek. Używasz GridView, dodajesz własny adapter i masz już coś w tym stylu.
*) GoogleMaps - niekoniecznie na początek ale wyświetlanie map czy zaznaczenie na mapie jakiś miejsc może być przydatne.

*) dodatkowo to co jest w manualu: lokalizacja zasobów dla róznych języków/rodzajów ekranów, dobre praktyki związane z cyklem życia Activities i np. zapisywanie ich danych na wypadek np. zmiany orientacji ekranu i takie tam...

Nie wiem dokładnie co Tobie polecić...
Warto znać chociaż mniej więcej inne tematy ale zawsze w razie potrzeby można doczytać manuale...

Jeżeli jeszcze siedzisz w webie, łatwo mógłbyś się wkręcić w kwestie opisane w punkcie (1).

Co do (2)....
>> Jakie umiejętności techniczne powinno się posiadać aby myśleć o pracy w androidzie?

Naucz się tworzyć proste aplikacje klienckie.

Dawno temu jedna korpo dała mi proste zadanie.
- wyświetlanie listy z danymi
- lista miała być zasysana z serwera. Był to JSON: tekst + URL do obrazków
- dodatkowo trzeba było doczytać z serwera obrazki
- pozycje listy wyświetlały tekst, obrazek i przycisk/link
- kliknięcie w przycisk/link powodowało jakąś tam akcję, np. otworzenie nowego okna (niby dla szczegółów tej pozycji listy)

Ostatecznie wybrałem inną firmę ale to zadanie wystarczyło żeby rozmawiać dalej o rekrutacji. Nie chcę gdybać ale może to wystarczy na początek, żeby szukac pracy...Mateusz Wolf edytował(a) ten post dnia 11.01.13 o godzinie 01:17
Michał Kąkol

Michał Kąkol Rozwiązuję problemy,
przenoszę firmy do
internetu.

Temat: Umiejętności a praca zawodowa,jak ocenić kiedy dobry moment?

Według mnie lista jest błędnie opisaym zestawem już konkretnych umiejętności, ale to dalej lista.
Gdy bierzesz projekt nikt nie wymaga listy jakie elementy znasz (może jakieś małe przykłady), wszyscy wymagają żebyś wziął specyfikację a oddał projekt.

Według mnie głównym pytaniem, które musisz sobie zadać przed podjęciem się jakiegoś projektu jest: "jak mocny się czujesz, jak bardzo zdeterminowany jesteś żeby zrobić każdy element i skończyć projekt?" Bo jak wezmiesz projekt musisz go wykonać, bez względu na to ile będzie to Ciebie kosztować bólu i siedzenia po nocach, ma być skończony i tyle. Klient oczekuje efektów w skończonym czasie, często zwróci uwagę na kod, ale oczekuje efektów!

Podejmując się pierwszego projektu będziesz miał braki jak czterolatek w uzębieniu, ważne żebyś każdy element projektu wziął na tapetę i go wykonał, ukończył projekt w czasie (80/20, najboleśniejsza zasada) i jak najbardziej zgodnie ze standardami - stracony czas na pewno zaprocentuje w przyszłości.

ps: powodzeniaMichał Kąkol edytował(a) ten post dnia 11.01.13 o godzinie 02:37



Wyślij zaproszenie do