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