Android vs iOS

0

Hej,

uważacie, że w którą z tych technologii warto iść ? Uczyc sie Androida czy Swifta ?
Pytam w kontekście (na razie) dodatkowej pracy - może być zagranica.
Mam ponad 4 lata doświadczenia, głównie c++ dodatkowo java, python.

Pozdr.

1

Zależy co Ci bardziej siedzi. IMO jedna i druga opcja jest spoko. Mało kto ma opanowane te dwie technologie jednocześnie, choć zdarzają się tacy i jest to bardzo duży atut.
Plusy dla Androida: nie trzeba mieć maka i macOSa (można mieć dowolny sprzęt i system), nie trzeba nic nikomu płacić, żeby zacząć coś pisać, łatwo można przejść na inne javowe (nie-androidowe) projekty i języki, bo jesteśmy cały czas w ekosystemie javy. Mnie osobiście bardzo podoba się ta platforma. Możesz znaleźć pracę zarówno na miejscu w większym lub średniej wielkości mieście, jak i zdalną, choć jest jej trochę mniej niż np. w projektach webowych. Jeśli znasz Javę, to musisz nauczyć się głównie Android SDK, tego jak działa system i jak się pisze na niego aplikacje oraz poznać popularne biblioteki, techniki i aktualnie powszechny stack technologiczny.
Nie wiem, jakie są plusy iOSa. Najlepiej, żeby ktoś, kto lepiej ode mnie zna się na tej platformie, się wypowiedział. Mam dopiero w planach poduczyć się podstaw tej platformy, żeby wyrobić sobie jakąś wstępną opinię.

0
wiciu napisał(a):

Nie wiem, jakie są plusy iOSa. Najlepiej, żeby ktoś, kto lepiej ode mnie zna się na tej platformie, się wypowiedział. Mam dopiero w planach poduczyć się podstaw tej platformy, żeby wyrobić sobie jakąś wstępną opinię.

Jednym z najwiekszych plusów jest mniejsza fragmentacja. Raptem kilka urządzeń do obsłużenia. Bardzo sprawnie działa tez symulator w porownaniu do androidowego emulatora. Duży minus to na pewno przyjemność z kodowania. Objective C jest... siermiężny a XCode w porównaniu z Android Studio (IntelliJ) wysiada. Osobiście też o wiele bardziej preferuje design w szeroko rozumianym Googlowskim "Material Design" ;)

0

Zapotrzebowanie jest na obie platformy.

Pisanie na Androida - jak napisał @wiciu - nie wymaga posiadania Maka ani iPhone'a.

iOS od strony programistycznej uchodzi za nieco bardziej uporządkowany. W każdym razie regułą jest, że przy aplikacjach implementowanych równolegle na iOS i na Androida implementacja iOS-owa idzie nieco szybciej. Czasem wyraźnie, czasem nieznacznie, ale żeby było odwrotnie, to się nie spotkałem.

Na Androidzie występuje problem dużej fragmentacji wersji systemu i zróżnicowanie modeli telefonów. W świecie iOS jest to problem mało istotny.

uważacie, że w którą z tych technologii warto iść ? Uczyc sie Androida czy Swifta ?

To pytanie jest źle postawione. Swift nie jest raczej jeszcze standardem. Nawet jeśli zaczyna się w nim sporo nowych projektów, wciąż "żyje" (i żyć będzie) cała masa kodu w Objective-C, a przecież nie możemy z góry zakładać, że będziemy pracować tylko nad nowymi projektami, i tylko takimi w Swifcie.

Nie zaprzątałbym sobie tym jednak głowy, bo jest to język dość przystępny do nauki, zresztą podobnie jak jego odpowiednik na Androidzie: Kotlin.

Przy zgłębianiu danej platformy język sam w sobie jest akurat najmniejszym problemem.

Nauka SDK, API (nieraz przekombinowanych, jak w Androidzie Fragmenty), sztandarowych bibliotek danego ekosystemu itd. - to są wyzwania, a nie język.

Myślę że w twojej sytuacji, pod względami dającymi się ocenić w miarę obiektywnie, czyli: łatwości nauki przy twoim obecnym doświadczeniu, względów karierowych itd. obie opcje są praktycznie równorzędne.

0

Ucz się iOSa. Mniej ludzi, język wywodzący się z preprocesora makr dla C (Obj-C) odstrasza wszystkich wannabe i tych którzy jak widzą wskaźnik to dostają palpitacji. Dodatkowo mamy Swifta dla tych co wolą udawać że trup jest hipsterem więc jak wolisz takie klimaty to też możesz się odnaleźć.

TL;DR; Jeśli podoba ci się bycie bajecznie opłacanym jak programista COBOLa który zmienia jedną linijkę na miesiąc to przyłącz się do nas. Razem raźniej się idzie na dno :)

0

Idź w IOSa. W Polsce z tego co słyszałem programiści iOS zarabiają średnio 30% więcej od programistów Androida. A co do outsorcingu, to Hindusom tak jak polskim studentom trudniej zacząć pisać na iOS, bo mało kto ma Macbooka i iPhona, więc konkurencja na świecie też mniejsza: https://thestack.com/world/2016/07/11/google-to-train-2-million-indian-android-developers/

Co do języka to jeśli teraz dopiero zaczynasz to możesz pisać tylko w Swift, ale musisz założyć, że będziesz odrzucać oferty pracy w starszych projektach w Objective C. W Androidzie wsparcie do większości nowości z Java 8 jest już dostępne: https://developer.android.com/studio/preview/features/java8-support.html ale tylko jeśli chce się wspierać urządzenia z Android Nougat i nowszymi, więc w praktyce Java 8 nie będzie jeszcze natywnie (bo są biblioteki dodające niektóre funkcje) dostępna przez co najmniej 3 lata gdy starsze wersje stracą znaczący udział w rynku.

Pisać w Swift i iOS jest podobno trochę łatwiej się nauczyć niż w Javie i Androidzie, ale różnice nie są pewnie bardzo duże. Edytor od Androida: Android Studio (fork IntelliJ od JetBrains) jest dużo lepszy od XCode, ale są ludzie którzy piszą zawodowo w JetBrains AppCode na iOS i są zadowoleni. Podobno wtedy nie mogą tak szybko korzystać ze wszystkich nowości języka w porównaniu do pisania w edytorze Appla i muszą i tak sięgać do XCode, który ma bardzo dobry edytor UI.

Jeśli uważasz, że nie warto uczyć się Swift, bo znasz już Javę, to słaby argument, bo język jest niewielkim procentem wiedzy którą trzeba posiąść, aby być dobrym programistą Androida czy iOS.

0

Ja wybralem egzotyczną platforme B4X. Obecnie pracuje nad projektem social klient-serwer miedzynarodowym team'ie . Na pierwszy strzal poszedl Android gdyz ma wiecej udzialu na rynku. Wiec pisze w B4A. Serwer pisze w B4J pod apke mobila - komunikacje. Dodatkowo webapp jest budowane w B4J framework ABMaterial ktora bedzie spieta pod WordPressa (oraz jako webapp for mobile). Po wdrozeniu apki na Androida , projekt z Androina zostaje przeniesiony na B4I (iOS). Plusem tego ze to ten sam jezyk wszedzie w platfomie. Nie potrzebuje Maca do budowy apki iOS. Cala platforma nowego oprogramowania jest pisana w jednym i tym samym jezyku. To jest niesamowity plus, gdyz potrzeba programisty co zna platfome B4X i bedzie mogl naprawil/ulepszyc kod na mobile, serwer czy webapp.

0

Jak wygląda sprawa z pracą jeśli zna się obie platformy? Czy ktoś z przeglądających temat jest może w takiej samej sytuacji?

Obecnie programuję na urządzenia z Androidem i oceniam się na poziomie dość dobrego regulara. Zastanawiam się, w którą stronę teraz pójść :)

0
Andrzej123 napisał(a):

Jak wygląda sprawa z pracą jeśli zna się obie platformy? Czy ktoś z przeglądających temat jest może w takiej samej sytuacji?

Jeżeli nie mieszkasz w Warszawie, Wrocławiu, Krakowie to idź w kierunku w którym masz dobrą pracę. Planujesz się przeprowadzić do Warszawy, Wrocławia, Krakowa? Masz duży problem z wyborem którą świetną ofertę zaakceptować.

0
Andrzej123 napisał(a):

Jak wygląda sprawa z pracą jeśli zna się obie platformy? Czy ktoś z przeglądających temat jest może w takiej samej sytuacji?

Im mniejsza firma tym lepiej jest to przyjmowane. W większych nie ma to takiego znaczenia (chociaż zawsze to lepiej znać X platform zamiast jednej), bo jest większy stopień specjalizacji.

0

Ja mam z kolei inne pytanie do programistów na Androidzie. Obecnie pracuję przy dość ciekawych i nietrywialnych projektach. Swoje umiejętności oceniam na poziomie mocnego juniora, ale brakuje mi sporo rzeczy. Uczę się obecnie RxJavy i Daggera2. Staram się również "wchodzić" w MVP. W jaką stronę polecacie iść z rozwojem?
Dodam również, że za 3 miesiące z firmy, w której pracuję odchodzi osoba, która stoi sporo wyżej ode mnie doświadczeniem i nie będę miał nikogo nad sobą. Chciałbym maksymalnie wykorzystać ten czas, w którym będę jeszcze pracował w tej firmie i nauczyć się jak najwięcej.

0
Krzywy Młot napisał(a):

Ja mam z kolei inne pytanie do programistów na Androidzie. Obecnie pracuję przy dość ciekawych i nietrywialnych projektach. Swoje umiejętności oceniam na poziomie mocnego juniora, ale brakuje mi sporo rzeczy. Uczę się obecnie RxJavy i Daggera2. Staram się również "wchodzić" w MVP. W jaką stronę polecacie iść z rozwojem?

Jak masz złożone projekty to clean architecture. Testowanie, offline first (kwestia projektu), kotlin, gradle, continous integration. Warto poznawać na boku technologie backendowe.

0

Przed zabraniem się za RxJavę i Daggera 2 (wybory bardzo słuszne, ale abstrakcje wysokiego poziomu) warto zadbać o naprawdę mocne podstawy "czystego" Andka. Ogarnąć solidnie te wszystkie Cursory, ContentProvidery, Intent broadcasty, serwisy, push notifications, kwestie podpisywania apk itd. Nie jest tego mało i nie jest to API przyjemne, ale jego znajomość procentuje.

Inne kierunki nauki - testy. W tym także testy UI, czyli np. Espresso. Poużywać Mockito.

Material design i te wszystkie związane z nim bajery graficzne (eye-candy, jak to Angole nazywają). Też spory temat. Tu wrzuciłem ostatnio nieco linków na prośbę jakiegoś (nieszczególnie wdzięcznego) ciekawskiego.

Gradle. Można nie lubić, ale wszystkie prognozy pogody wskazują, że pozostanie podstawą systemu budowania. Nie trzeba być guru, ale można się trochę poduczyć, jakie rzeczy można w nim zrobić. To w końcu nie czarna magia, ale po prostu taki DSL i skrypty w Groovy'm.

To tak co wpadło mi do głowy na gorąco. Pooglądaj też sobie np. materiały z DroidConów - są na Youtube. Jest bardzo dużo ciekawych wystąpień, np. Dana Lewa. Stąd też zawsze płynie jakaś inspiracja

0

Serdecznie dziękuję za wszystkie porady!

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