Rynek mobile - Android - gry i niegry

0

Zastanawia mnie jak wygląda świat Androidowy, a dokładniej jaki procent (jesli są takie statystki, ja ich nie znalazłem) lub jaka część programistów androida zajmuje sie pisaniem gier?
Jak widać po sklepie play jest w nim multum gier, choć innych aplikacji (pozwoliłem je sobie nazwać niegier ;)) równie wiele.

i:
Czy od android developera wymaga się też znajomości ios? tzn.. wiadomo, że jak ktoś zostanie zatrudniony na stanowisko android, to nie pisze pod ios. Jednak z perspektywy pracy przez x lat w mobile, czy to jest tak, że ios+android to jak java+javaee(slabe porownanie.. :)) że w wiekszosci wypaków trzeba je znać oba?

rynek mobile też ma swoje kierunki rozwoju tzw specjalizacje?

0

Odpowiem na drugą część, zwykle się nie wymaga ale jest w nice to have. Podstawowa znajomość iOS'a ułatwia komunikację z devem od iOS'a oraz pomaga przy portowaniu appki z tej drugiej platformy ;) Dobrym połączeniem imo jest znajomość Androida oraz technologii backendowych, czasem można dostać task na dopisanie czegoś w backendzie/zaprojektowanie API (ale to też zależy od obowiązków w danej firmie).

0

ad. 1.

Nie znam statystyk. Profil tworzonych aplikacji zależy głównie od firmy. Mogę powiedzieć tyle, że zupełnie inaczej pisze się grę, niż "nie-grę". Gry IMO najlepiej pisać w Unity. Wtedy masz załatwioną cross-platformowość i możesz stworzyć grę dla Android i iOS-a za jednym zamachem. To moim zdaniem jedyna sytuacja, w której cross-platformowość jest słusznym podejściem. Wydaje mi się, że jest zapotrzebowanie na programistów gier i "nie-gier", ale dla tych drugich można znaleźć więcej ofert pracy. Gry często piszą pojedynczy programiści lub nieduże firmy.

ad. 2.

Od programisty Android zazwyczaj nie wymaga się znajomości iOS-a, ale gdybyś znał jedno i drugie, to wtedy stawiasz siebie w bardzo uprzywilejowanej pozycji i znacznie zwiększasz swoją wartość rynkową. Tak naprawdę większość programistów specjalizuje się zazwyczaj tylko w jednej platformie. Mało który zna na przyzwoitym poziomie obie.

ad. 3.

Jeśli chodzi o specjalizacje, to ciężko stwierdzić, jakie one właściwie są. Na chwilę obecną wyróżniłbym poszczególne technologie: Android, iOS, Windows Phone oraz typy projektów: aplikacje użytkowe, gry. Zdarzają się firmy, które tworzą jakiś nietypowy projekt, który np. komunikuje się z zewnętrznymi urządzeniami lub aplikacja posiada jakiś nietypowy, unikalny interfejs graficzny i wykonuje specyficzne zadanie. Wtedy specjalizacja może być bardzo wąska i dotyczyć tylko tej wybranej technologii używanej w konkretnej firmie lub projekcie.

0

Ad.2. Zależy od firmy.
W większości przypadków masz znać jedną platformę i bast.
Niemniej są ciekawe firmy (np. Dolby) gdzie multimedia pisze się na Androida i iOS - i są od tego ludzie którzy obydwie te mobilne znają i na bieżąco wykorzystują.

0

@wiciu @xfin czyli moge rozumiec ze w mobile raczej wybiera sie jedna platforme i się w niej "specjalizuje" i raczej nikt nie "masteruje" np ios i androida na raz? Znaczy że android developer pisze w androidzie i ewentualnie mozna znac podstawy ios bo czasem moze byc wygodnie porozumiec się z ios team'em?

Co do gier - chodzi wlasnie o to, ze nie przepadam za pisaniem gier i zastanawiam sie czy gdybym kiedys trafil w mobile to czy znalazlbym dla siebie miejsce. Z tego co sie orientuje nie jest jakos bardzo duzo miejsc gdzie pisze sie gry (a przynajmniej w polsce?)

Jesli chodzi o specjalizacje - mysle wlasnie o specjalizacji tzn jak ktos wybierze sobie androida czy ios jako swoja glowna platforme to specjalizacje jeszcze dalej - tak jak @wiciu napisales np aplikacje uzytkowe.

Tak btw. jakie sa najwazniejsze technologie jesli chodzi o androida? Kiedys bawilem sie jakimis Retrofit'ami itd, ale nie wiem czy to dosyc popularne w swiecie mobile czy nie. Chodzi mi o taki technology-stack jak np w JEE mamy jpa z jakims eclipselink, jax-rs, jakieś jmsy jndi i tak dalej ;-)?

edit:
jest cos takiego co w mobile'owym swiecie jest cenione u potencjalnego pracownika? (znajomosc backendu np jee springa railsow django itd, albo moze znajomosc np 2 platform dosyc porzadnie? cos?)

0

@azalut najpopularniejszy androidowy stack na dzien dzisiejszy to chyba Dagger, Retrofit, RxJava. Warto znać zagadnienia związane z clean architecture, wzorcem MVP, zwłaszcza w kontekście większych projektów. Podstawy programowania współbieżnego też się przydają, mimo że RxJava sporo ułatwia to i tak można spieprzyc kod tworząc klasy ktore nie sa @ThreadSafe.

0

@azalut Pracowałem jako Android developer przez jakiś czas i nie napisałem ani jednej apki na iOSa, chociaż mam to w planach na kiedyś ;). Nie przeszkadzało to w tym, żeby dogadać się iOS developerami. Większość iOS developerów, których znam nie programuje też apek na androida. Są tacy, którzy znają w miarę dobrze jedną i drugą platformę, ale obecnie jest to raczej rzadkość. Niemniej jednak, gdy opanowało się jedną platformę, to warto też poznać drugą.

IMO popularny stack dla Androida, to tak, jak @bolson wspomniał: Dagger 2 (jest to fork od Google do dependency injection - Daggera 1 używa się trochę inaczej), Butter Knife (do "wstrzykiwania" widoków i zasobów), Retrofit (do web serviceów), RxJava (głównie do obsługi asynchroniczności i uproszczenia operacji na danych). Dorzuciłbym do tego też bibliotekę Timber (jest to taki wrapper na androidowy Logger, który ułatwia tworzenie różnych strategii logowania dla aplikacji produkcyjnych i wersji developerskich). Poza tym, można wiele rzeczy zapożyczyć ze świata Javy - np. biblioteki do testów: JUnit, FEST, Mockito - polecam też zapoznać się z Google Truth, którego można użyć zamiast FEST-a. Do testów integracyjnych (UI) można też użyć Espresso. Warto też zapoznać się z językiem Kotlin, który staje się ostatnio popularny w świecie Androida. Resztę stacku dobiera się w zależności od projektu. Co ciekawe, większość tych bibliotek, które zostały wymienione wyżej, to czyste javowe projekty i można ich używać nie tylko w Androidzie.

jest cos takiego co w mobile'owym swiecie jest cenione u potencjalnego pracownika? (znajomosc backendu np jee springa railsow django itd, albo moze znajomosc np 2 platform dosyc porzadnie? cos?)

Poza znajomością tego, czego używa się w pracy, osobiście doceniłbym ogólne rozeznanie w temacie i porządną znajomość przynajmniej jednej rzeczy - np. back-endu: Springa, Django lub innej platformy mobilnej. Każda wartościowa wiedza na pewno powinna zostać doceniona, ponieważ poszerza ona horyzonty i ułatwia opanowanie tematu. W przypadku Springa sprawa wygląda o tyle dobrze, że jest to framework javowy, gdzie składnia i takie koncepcje, jak DI są bardzo podobne, jak w przypadku Androida. W związku z tym, jeżeli ktoś ma to opanowane i słabo zna Androida, to powinien szybko się wdrożyć w projekty mobilne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1