Репутація українського ІТ. Пройти опитування Асоціації IT Ukraine
×Закрыть

Як стати андроїд розробником з нуля, на пальцях

Сьогодні ІТ сфера в Україні стала настільки поширеною, що, мабуть, тільки ледачий не замислювався про зміну діяльності якщо він ще там не працює. Так от, для тих хто не є один із тих щасливчиків, які вгадали з напрямом свого розвитку під час вибору спеціальності в університеті і їхній вибір пав на розробку андроїд додатків, буде корисним ознайомитися з перевіреними рекомендаціями на цьому шляху.

Ця стаття має за мету зробити мій суб’єктивний огляд приблизного алгоритму та доступних ресурсів для того, щоб оволодіти спеціальністю андроїд розробника, за умови що людина взагалі не знає що таке мова програмування. Усі перераховані нижче ресурси придумав не я, а були рекомендовані незнайомими між собою менторами, з якими я займався під час навчання. Тобто, незалежно від того хто був моїм вчителем, усі вони радили приблизно одне й те саме. Я роблю лише короткий опис і суб’єктивні коментарі до цих порад.

Дисклеймер: тут не буде філософських роздумів на теми «Чи треба змінювати спеціальність?», «Чим спеціальність андроїд розробника краща за інші?», «Навіщо ставати програмістом?», «Яку мову програмування обрати?». Вважається що читач уже відповів собі на ці запитання, зробив свій вибір і готовий присвятити майбутні три роки (якщо він повний нуль у програмуванні, яким колись був я) вивченню розробки андроїд додатків.

База

Базові знання й навички взагалі ніяк не пов’язані з програмуванням, але досвідчені програмісти будь-якої мови програмування в один голос погоджуються, що уникнувши цей пункт і стрибнувши безпосередньо до вивчення самої мови програмування в перспективі дуже сповільнить швидкість розвитку і скоріш за все рано чи пізно змусить повернутися до нього. Звісно, якщо з базою все тіп-топ, то заново нічого вчити не треба, але на практиці, на жаль, так буває не часто й щось треба підтягнути.

Математика

Часто так буває коли вчиш математику в школі, то з голови не йде одна думка «Не вже дійсно я буду це використовувати на практиці, коли стану дорослий?» і на це запитання, навіть деякі вчителі відповідають «НІ!». А правда така, що саме математика, як така не так часто потрібна під час розробки, але володіння нею привчає наш мозок вирішувати задачі особливим чином. Ті хто лише починають вивчати програмування будуть постійно чути нагадування про «особливості нашого мозку».

Так от абсолютно всім буде корисним перевірити свої шкільні знання та підтягнути забуте, використавши для цього, наприклад, простий український онлайн курс «Математика. Підготовка до ЗНО» на сайті «prometheus.org.ua» (https://courses.prometheus.org.ua/courses/course-v1:ZNO+MATH101+2017_T1/about), принаймні можна хоча б спробувати пройти тести в цьому курсі.

Сліпий набір тексту

Не існує жодного сучасного американського блокбастеру про хакерів, у яких би програмісти писали код двома пальцями дивлячись на клавіатуру. Тут нічого додати, без вміння писати на осліп про програмування можна взагалі забути. Є багато ресурсів в інтернеті для швидкої допомоги тим у кого з цим проблеми, але я особисто пораджу той ресурс який радили, сам користувався й залишився в захваті «typingstudy.com» (https://www.typingstudy.com).

Англійська мова

Так сталося, що програмування це сфера, яка просто не терпить стабільності й тому змушена стрімко змінюватися. А найстрашніше те, що кожного року змін стає все більше й оновлення просто неможливо встигати перекладати на інші мови. Перекладена технічна документація або книжка про новинки в будь-якій конкретній мові програмування, уже через місяць може почати втрачати свою актуальність. Такий порядок речей призвів до умовного погодження, що майже все в ІТ сфері пишеться англійською мовою. Це сумно, але треба подивитися правді у вічі, просто вивчити англійську мову до потрібного рівня, здати іспит і все, більше ніколи в житті не буде блокеру через таку банальну проблему. Що я маю на увазі під достатнім рівнем? Більшість ІТ компаній по всьому світу умовно погодилися прирівняти такий рівень до оцінки не менше 6.0 з міжнародного іспиту з англійської мови IELTS.

Чи можна не знаючи англійської мови стати крутим програмістом? Як не дивно, але, звісно, можна. З невідомої причини, багатьом людям просто не заходить вивчення нової мови, а пристрасть до програмування на стільки шалена, що люди стають дуже крутими спеціалістами у своїй сфері, не вміючи зв’язати і двох простих речень англійською. Цю проблему легко вирішують скрам-мастера та проджект-менеджери українських ІТ компаній, виконуючи роль перекладача, коли замовник не з України.

Але навіщо принижуватися, коли можна просто взяти себе в руки та забути про цей недолік назавжди? Для особливо хронічних випадків у мене є особиста методика, як вирішити цю проблему, яку я, звісно, не буду розглядати в цій статті, але, у будь-якому випадку можу попередити читачів, що майже всі ресурси розглянуті нижче не мають аналогів українською мовою. Запропонований шлях до спеціальності андроїд розробника без англійської мови на цьому етапі завершується й мені більше нема що запропонувати.

Книжка з ІТ

Мабуть, цей пункт най не обов’язковий тут, але я все ж таки не можу його оминути, бо, як мені радили і я з цим повністю погоджуюсь, у житті кожного програміста має бути така перша книжка, яка буде першою сходинкою на його нелегкому шляху й надасть загальне уявлення того з чим він буде мати справу.
З тих книжок що радили мені, на сьогодні я схиляюся до того що такою книжкою має бути «Code: The Hidden Language of Computer Hardware and Software» написана Charles Petzold під видавнитством Microsoft Press (https://1drv.ms/b/s!AuJrOEfAudvDvz0xV-iYAuzAEEJ3).

Онлайн та офлайн курс «Основи програмування»

Тут я нічого конкретного радити не буду, немає такого святого курсу з основ, який би був краще за інших. Курс «Основи програмування» можна знайти банальним пошуком в інтернеті. Офлайн курс потрібний для живого спілкування та пошуку однодумців, а онлайн-курс, для того щоби здобути один із найважливіших умінь — «гуглити».

Проте якість цього курсу, у цьому випадку, особливого значення не має, жодного впливу на подальше більш глибоке навчання не зробить і основне його завдання лише ознайомити студента зі сферою ІТ, щоби не захлинутися в потоці нових термінів.

Git

Дуже часто на будь-яких курсах тему використання гіт-репозиторію оминають, але в житті кожного програміста використання цього ресурсу настільки важливе, що, на мою думку, із нього треба взагалі починати, а не відкладати на потім.

Тут, у мене теж особливих порад немає, я особисто просто нагуглив і пройшов перший-ліпший онлайн-курс присвячений цій темі на «udacity.com».

Комп’ютер або лептоп

Трохи специфічний пункт, бо, коли починав вчитися я, мені стверджували навкруги, що програмістом може стати кожний, якщо є трохи розуму й бажання. Я не буду використовувати цей метод мотивації тож напишу відверто. Дійсно всі ресурси переліковані вище, на мою думку, доступні абсолютно кожному українцю і пройти їх не буде складати особливих труднощів. Крім того якщо є така проблема, то не треба перейматися відсутністю комп’ютера та особливих заощаджень до того як буде все гаразд із попередніми пунктами.

Але! Усі наступні ресурси будуть тісно зв’язані з програмуванням, яке має деякі вимоги до «заліза» і відсутність особистого потужного помічника на цьому етапі перетворить навчання на тортури.
То ж які поради від програмістів щодо вибору комп’ютера чи лептопа? Насправді однозначної згоди щодо того що це має бути «Windows», «Linux» чи «Mac OS», а також чи це має бути лептоп чи настільний комп’ютер, не має. А от де немає розбіжностей то це обов’язково має бути HP, Dell або MacBook Pro(не Air), має бути мінімум 4 ядра та 8 (або, навіть краще 16) ГБ оперативної пам’яті.

Java

На сьогодні вже відходять додатки написані мовою Java у вчорашній день і пишеться все на Kotlin. Але, як би це парадоксально не звучало, для того щоби стати андроїд розробником треба вивчити мову Java (хоча порівнюючи з людськими мовами слово «вивчити» тут не найвлучніше, але нічого кращого не придумали для того, щоб описати одним словом здібність програміста читати, писати код та розуміти що там відбувається). Тут я, мабуть, повинен був би навести переконливі доводи до того, навіщо витрачати час на мову, якою, можливо, і не доведеться ніколи користуватися на практиці, але я не буду, забагато непотрібного тексту буде, повірте на слово або погугліть.

Офлайн-курс з Java

На цьому кроці важливо мати можливість надсилати комусь усі некмітливі запитання, які виникають під час виконання домашніх завдань та першими кроками під час ознайомлення з IntelliJ IDEA.

Онлайн курс з Java

Курси по легше:

Курс по складніше: «Основи програмування на Java» на сайті «prometheus.org.ua» (https://courses.prometheus.org.ua/courses/EPAM/JAVA101/2016_T2/about)

Книжка з Java

Хоч книжки саме для вивчення конкретних мов програмування не найкращий ресурс через їхню неймовірну мінливість, але всі ментори казали в один голос, що для початку така книжка обов’язково має бути.

З тих книжок, що радили, мені особисто зайшла " Head First Java (O’Reilly Publishing, 2005) " написана Kathy Sierra та Bert Bates (https://1drv.ms/b/s!AuJrOEfAudvDvzwKhhILdEryrCdu). Звісно, вона вже стара як світ і, напевно, можна знайти більш сучасне перевидання з тією самою назвою, але з іншим роком видавництва (це стосується і всіх наступних перелічених книжок, треба перевіряти чи не має у вільному доступі оновлень), але я залишу це на читача, і буду тут писати лише ті книжки які сам перечитав.

Іншою такою книжкою є «Core Java Volume I- Fundamentals 9th Edition» написана Horstmann, Cay S. та Cornell, Gary у 2013 (https://1drv.ms/b/s!AuJrOEfAudvDwCgTeCqwRIPcspMZ), серед менторів надзвичайно популярна, але мені особисто така суха та не практична інформація поки не допомагає.

Java-Android

Після основ Java логічним продовженням має бути створення першого тривіального додатку, як не дивно написаного мовою Java. Зробити його треба публічним, додати до свого портфоліо на github.com або gitlab.com, а потім соромитися дивлячись на нього через роки. Але без цього кроку ніяк, як казав Reid Hoffman «If you’re not embarrassed by the first version of your product, you’ve launched too late». А на допомогу для виконання цього завдання будуть корисними наступні ресурси.

Офлайн-курс з Java-Android

Наскільки мені відомо то групових офлайнових-курсів із вивчення андроїд на котліні майже не існує. Зазвичай пропонують андроїд курси на Java, не зважаючи на це, краще скористатися пропозицією, пройти навчання, познайомитись із майбутніми колегами по роботі та почати робити свої перші кроки в Android Studio під пильним наглядом куратора.

Онлайн курс з Java-Android

Для того, щоби розробка додатків здавалася дитячою забавкою на «udacity.com» є серія курсів присвячених плавному зануренню студента в робочі моменти, пройшовши які, буде вже не так страшно переходити до дійсно серйозних речей.

Є також туторіали для початківців із більш ніж зрозумілим поясненням, навіть складних тем на сайті codinginflow.com.

З онлайн-курсів також дуже часто радять сайт «startandroid.ru» (https://startandroid.ru/en/lessons.html), але відверто кажучи складається враження, що з моменту створення сайту уроки на ньому ніколи не оновлювалися, а тому втратили свою актуальність.

А от інший, не такий популярний сайт, " developer.alexanderklimov.ru/android«, на відміну від попереднього, досить живий та більш зрозумілий для новачків.

Книжка з Java-Android

«Head First Android Development: A Brain-Friendly Guide» написана DAVID GRIFFITHS, Dawn Griffiths (http://coolt.ch/notizen/wp-content/uploads/2016/02/Head-First-Android-Development-2015.pdf).

Бази даних

Онлайн курси з баз даних

Тут лише основи. На практиці в андроїд розробці зазвичай використовують так звані «бібліотеки» Room та Realm. Але перед тим як почати їх вивчати краще ознайомитися з тим як усе працює під капотом.

Kotlin

Нарешті.

Онлайн курси по Kotlin

Книжки по Kotlin

По котліну найкориснішою вважається книжка написана одним із творців мови, Dmitrii Zhiemierov, називається «Kotlin in Action». Але інформація надана в ній на стільки сухо, що я залишився не в захваті.
Мені особисто сподобалась «Head First Kotlin: A Brain-Friendly Guide» написана DAVID GRIFFITHS та Dawn Griffiths (https://1drv.ms/u/s!AuJrOEfAudvDwEbP-awJNN2DTBuR).

Kotlin-Android

Подивившись на всі підпункти, перелічені перед цим, аж не віриться, що для того, щоби створити свій перший простенький додаток на Kotlin треба пройти такий довгий шлях. Але, як би там не було можна тішитися хоча б із того, що у фронтендерів цей шлях ще довший. Тож на допомогу для створення другого проєкту в портфоліо (на цей раз на Kotlin) буде корисним зробити таке.

Онлайн курси з Kotlin-Android

З простеньких курсів можу порадити «Developing Android Apps with Kotlin» на все тому ж сайті «udacity.com» (https://www.udacity.com/course/developing-android-apps-with-kotlin—ud9012).
Інші онлайн-курси я ще не проходив, тому радити поки не буду, але простим пошуком у гуглі їх можна знайти безліч.

Ментор

Оскільки ні шкіл ні курсів із розробки андроїд додатків на Котлін майже не має, виходом із ситуації є залучення підтримки ментора. Він відполірує всі знання, що на цей момент є, відкорегує, розповість секрети розробки якими він користується сам, та доведе до того стану, коли студента вже можна брати на серйозні проєкти.
На цьому етапі фронтендерам значно легше, бо їх часто беруть на роботу ще «зеленими» та надають їм можливість навчатися та ставити питання ментору вже будучи на роботі. Водночас Андроїд розробників зазвичай наймають уже з досвідом.
Висновок очевидний, або студенту повезе і він знайде компанію, яка погодиться інвестувати в його розвиток, або не повезе і студент буде інвестувати власні кошти на приватні уроки з викладачем.

Перша робота

Останній етап, можливо, найважчий, принаймні психологічно. Тут кроки для успіху досить очевидні.

Подавати заявки на позицію Trainee Android Developer

Шукати вакансію з вимогами які б відповідали наявним на цьому етапі навичками й досвідом марно. Зазвичай вакансії виглядають таким чином:

Agilie team is looking for Strong Junior (!!!) / Middle Android Developer to join Dnepr team on a full-time basis.
Main requirements: — 1,5+ years (!!!) of experience in developing high-quality code for Android...

Тобто, щоб отримати посаду Джуніор Андроїд розробника треба вже мати досвід не менше півтори року (я вже мовчу про продовження вакансії, я її просто обрізав, щоби не вбити бажання працювати на цій посаді). А до цього треба працювати й заробляти цей досвід де прийдеться, паралельно надсилаючи своє резюме в компанії в яких хотіли б працювати, а не чекати, що хтось відкриє вакансію з відповідними вимогами.

Пройти тестове завдання від роботодавця

Не зважаючи на те, що трейні андроїд розробники нікому не потрібні, а вакансії немає навіть для сеньйора, компанії зазвичай охоче надсилають у відповідь тестове завдання. Ці тестові завдання і є першим справжнім випробуванням студента, яке допомагає розуміти прогалини в знаннях, та напрямок, у якому треба продовжувати розвиватися. Не зважаючи ні на що, одного дня тестове завдання вдасться виконати й запрошення на роботу буде отримане.

Працювати у якості Trainee Android Developer допоки не станеш Junior Android Developer

На цьому етапі є великий шанс, що зарплати не буде взагалі, або, якщо вона буде, то скоріш за все вона буде відрізнятися від тої суми, яку прийнято називати «зарплата програміста». Але це має турбувати найменше, адже головне в цей момент — це якість комерційних проєктів над якими дозволяють працювати, саме вони в перспективі й будують кар’єру розробнику.

Працювати у якості Junior Android Developer допоки не станеш Android Developer

Bingo!

Ви офіційно пропрацювали два роки над крутими проєктами, які не соромно показати, використовуючи найсучасніші підходи, обираючи найоптимальніші рішення для виконання задач та демонструючи широту своїх знань.

Тепер Ви можете сміливо назвати себе Android Developer.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
це обов’язково має бути HP, Dell або MacBook Pro(не Air)

Пишите уже ценник сразу, чего стесняться))
А вообще интересно конечно, за что это HP и Dell удостоились места рядом с MakBook Pro (и даже не Air)? Чтобы прямо так «без розбіжностей». Прямо заинтриговали...

Согласен, макбуку не место рядом с XPS)

В 2013-м году я перестал называться джуном и у меня впервые появились деньги на нормальный ноутбук. Бюджет был 1500$.
За эти деньги можно было купить тогда по-моему, самый дешёвый МакБук про. Я решил посмотреть, что за эти деньги есть у других производителей. И купил Dell Inspiron 5523 15z с тачскрином, 256ГБ (сейчас апгрейднул до 1056) SSD, 8 (теперь уже 16) ГБ оперативки и Core i7.
В общем, выбор даже не стоял.
На нём ещё даже многие тогдашние игры шли на не самых плохих настройках благодаря дискретной Nvidia GeForce на 2 гига видеопамяти.
На маке про них можно было бы забыть.

хорошо, что я не андроид разработчик, поэтому купил себе леново

Я думал вы за C++ и Qt топите. C++ кстати просел.

C, C++, какая в опу разница :)

какая в опу разница :)

какая в оопу разница :)

Сейчас вечный студент из соседней темы тихо плачет в углу, но как же это так 48-летний язык никак не умрёт, а как же модерновые пыхыпых технологии?

Пихпих вже давно не модно. Модно жисжис жжжжж.

пыхпых теперь олдскул, знать пыхпых теперь почётно )

В вузьких колах рубистів-бісексуалів.

А оно имеет сейчас смысл? Создается впечатление что сильно перегретый рынок ПО. Апликух на любой вкус, правда и говна полно.

Мне кажется для этого и нужен интернет, чтобы делится своими знаниями и опытом.

А в вэб имеет смысл?
Вэб сервисов на любой вкус полно. Зачем делать ещё один?

Є в мережі onlinecorrector. Навіть безкоштовна версія знаходить в цьому тексті близько сотні помилок. Раджу використовувати усім перед оприлюдненням статей. По виходить кумедний текст замість серйозного.

Дякую. Я не чув про цей редактор. Я потестив його і зрозумів про що ви кажете.

лише грубі помилки:

ні як
на осліп
усі ресурси переліковані вище
не буде складати особливих труднощів
Курси по легше
підкорегує

і git — git-scm.com/book/uk/v2

Просто ще один текст для вивчення git.

без вміння писати на осліп про програмування можна взагалі забути.

то есть, код, написанный двумя пальцами, компилиться не будет?))

А якщо ще й мишку використовував, то взагалі компілятор не запуститься.

Вам ніхто не казав, що жарт повторений двічи не дуже смішний?
Ви ж далеко не перший критикуєте «необхідність писати наосліп».
В контексті статті мова йде про «швидкість навчання».
Коли ти замість тримання змінних в голові тримаєш букви на клавіатурі «про вивчення програмування можна забути».
І вкотре повторюю, про що взагалі йде мова, якщо навчитись писати наосліп можна за місяць і це вміння входить в базову програму початкової школи.

писати наосліп
це вміння входить в базову програму початкової школи.

Что это за бред? Поясни, будь добр.

Вам пояснити як навчитися писати наосліп за місяць замість того, щоб все життя писати двома пальцями та критикувати необхідність цієї навички?

Для особо талантливых перефразирую: при чем здесь школа с базовой программой?

При тому, що деякі речі треба просто знати і вміти, як таблицю множення наприклад, замість того щоб розповідати, що без цього знання

компилиться не будет

Я эту чушь не понимаю, здесь явно нужно быть на одной волне с тобой. Просто сольюсь.

Коли ти замість тримання змінних в голові тримаєш букви на клавіатурі «про вивчення програмування можна забути».

А якщо я не тримаю букви на клавіатурі в голові і пишу двома пальцями напівосліп, лише дивлячись де починається і поміж? От прямо тепер не дивлячись на клаву. Можна мені стати програмістом?

у автора статті для нас з тобою дуже погані новини...

я взагалі дивлюсь на клавіатуру коли пишу. 9 років в галузі, ще жодного разу не було, щоб код через це не запустився ))

замість тримання змінних в голові тримаєш букви на клавіатурі

лол, я якраз для того на неї і дивлюсь, щоб не тримати розкладку в голові

я взагалі не розумію, навіщо

тримання змінних в голові

так само, як і розкладки))

ну але ж треба якось собі уявляти алгоритм? наприклад, коли я пишу тіло циклу, то в мене десь у моїй «оперативній пам’яті» висить, що «і» — це лічильник, змінюється від нуля до розміру масиву «а» мінус один ну і т.д. я правда не дуже знаю, що мав на увазі під цією фразою ТС.

а, ну тут мабуть краще нормально називати змінні, ніж тримати в голові, що таке «а», «і» ...))

i, j, k — стандартні назви

A common identifier naming convention is for the loop counter to use the variable names i, j, and k (and so on if needed), where i would be the most outer loop, j the next inner loop, etc. The reverse order is also used by some programmers. This style is generally agreed to have originated from the early programming of FORTRAN[citation needed], where these variable names beginning with these letters were implicitly declared as having an integer type, and so were obvious choices for loop counters that were only temporarily required.

Когда мне пришлось заниматься портированием софта в огромных количествах, то пришлось у себя завести привычку называть эти переменные как it, jt, kt, иначе пересечения были ужасные с кодом, далеко не все придерживаются этого стандарта де-факто.

згоден, але якщо людині треба зусилля, щоб втримати це в голові, то мабуть був дарма втрачений місяць на навчання друкувати наосліп...

якщо грубо то так. Справа не просто в назві, а в тому що часом бувають задачки по складніше циклу з трьома змінними.

Навіщо тримати розкладку в голові?) Це не так працює.

Ви ж далеко не перший критикуєте «необхідність писати наосліп».

Критикую, потому что это далеко не обязательно для изучения программирования. Согласен, что определённый буст при наборе текста в блокноте он может дать, но мы говорим про андроид разработку, соответственно мы понимаем, что набирать код мы будем в Android Studio, где отлично работает автокомплит и навык слепой печати совсем не нужен.
Но вы же это пишете новичкам на полном серъёзе

без вміння писати на осліп про програмування можна взагалі забути.

что является полной ахинеей, то не обижайтесь, но как жеж тут не поязвить чуток))
То же самое касается и школьного курса математики — у вас оно на 1-м месте, хотя это никак не относится к вхождению в андроид-разработку.
Лично моё мнение, что нельзя новичку читать эту статью, если он вообще когда-либо хочет стать андроид-разработчиком.

Результат статті написаної джуном. Джун попав в Айті, і помилково вважає що він попав, бо мав кокретні якості, які у нього є. І що тепер кожному потрібні такі ж якості аби увійти. Це як совецькі батьки прожили життя в «таборі», і своїм дітям розказували, що якщо вони не будуть виконувати ті інструкції, по яким жили, то діти себе в житті не знайдуть. Є лише один правильним шлях!

Вузьке мислення у всій красі, коротше.

Якщо ви не втомилися гнути свою лінію і намагаєтеся максимально ігнорувати (або просто не читали) вступну частину статті, мені не важко ще раз повторити

Усі перераховані нижче ресурси придумав не я, а були рекомендовані незнайомими між собою менторами, з якими я займався під час навчання. Тобто, незалежно від того хто був моїм вчителем, усі вони радили приблизно одне й те саме. Я роблю лише короткий опис і суб’єктивні коментарі до цих порад.

Яка ваша позиція? «Якщо хочеш стати програмістом то можна писати двома пальцями і не знати таблицю множення»?

і не знати таблицю множення

Лол, вы ещё с букваря начните)) давайте не будем вдаваться в крайности уровня детского сада.
Моя позиция такая, что для успешного старта нужно сначала изучить необходимые языки (Java, Kotlin), потом Android SDK, хотя бы на базовом уровне ознакомиться с архитектурными паттернами и стеком библиотек, которые встречаются чуть ли не в каждой вакансии андроид-разработчика). Вот, что должно быть на первых местах. Для меня в своё время отличным стартом было участие в разработке реального проекта в качестве trainee и с хорошим ментором.
А насчёт важности слепой печати в программировании я уже высказался. Безусловно полезный навык и основной для журналистов и наборщиков рефератов, но для программиста он опционален.

вы ещё с букваря начните)) давайте не будем вдаваться в крайности уровня детского сада.

похоже, ТС писал эту статью не для ДОУ, а для чего-то типа KinderGardenComputers... ну и сгустил краски для эффекта :)

В каких задачах в Андроид-разработке тебе понадобится знание таблицы умножения или навыки ручного письма?;)

А на Kotlin є якісь кросплатформені рішення під iOS також?

Kotlin — это jvm-совместимый язык.
Чтобы совсем понятно — это обычная Java, только с улучшенным синтаксисом. Он компилируется в обычный джавовский байт-код и запускается на обычной джвовской виртуальной машине.
Мобильная кроссплатформенность — это не про него.

Вообще, кроссплатформенная разработка мобильных приложений — то же самое, что складной велосипед.
Ложить в багажник машины такой велосипед удобно и в кладовке мало места занимает. Но как велосипед — шлак полный.

Частково погоджуюсь, але знаю кількох Flutter-фанів, що не дуже параяться через «складний ровер»... і замовлень в них вистачає... і не тільки під мобайл...
«Dart & Flutter — ковток свіжого повітря» — казали вони мені... ))

И я знавал чудиков, у которых складной велосипед был «глотком свежего воздуха». А я в это время катался на шоссере. Каждому своё.

как там у них интеграция с с++ поживает?
как по мне дарт — это qml вид сбоку

Я когда узнал, что там джсон надо парсить ручками, потому как GSON там невозможен ввиду отсутствия рефлексии, мне реально поплохело.
Я лучше уйду в бэкенд, если нативная разработка накроется медным тазом.

Где Json парсить надо руками? В Flutter?

Там не нужно парсить руками.
Там есть генератор кода, который парсит исходники и генерирует соответствующий код.
В Android SDK так примерно доступ к ресурсам идет. Там ведь тоже автогенератор для этого.

Я про json.
На Флаттере есть библиотеки наподобие GSON для его парсинга?

Да, просто они основаны не на рефлексии, а на автогенерации кода.
Студия это подхватывает.

Я не сильно в темі, але вони досить розслаблено себе почувають... щоки не дують... роблять те, що дозволяє платформа... не всім же колупатися в нетрях... є ще багато цікавинок в житті;))
Не хардкором єдиним, я так розумію... ;))

как там у них интеграция с с++ поживает?

-как-то есть — flutter.dev/...​orm-integration/c-interop

Та все норм под свои задачи, если тонкий клиент не перегружен логикой, просто дергает rest и что-то там рисует — то флаттер отлично зайдет. Если же кучу железок планируется использовать типа gps, camera etc, то все это рискует быстро скатится в лютый мазохизм с кучей плагинов, нативными костылями и фиксами простых багов по 2-3 дня. В принципе это же справедливо и для RN с Xamarin, но флаттер все же самый приятный как по мне.

Попробую написать в одну строчку

Kotlin

это не совсем джава, но без старья...

Ну или так.
Я к тому, что это — не язык кроссплатформенной разработки.

Kotlin — это jvm-совместимый язык.
Чтобы совсем понятно — это обычная Java, только с улучшенным синтаксисом. Он компилируется в обычный джавовский байт-код и запускается на обычной джвовской виртуальной машине.
Мобильная кроссплатформенность — это не про него.

— нет, он умеет и в иос, и в js, не только JVM.

Есть Kotlin Multiplaform, можно писать с ним бизнес логику и шарить с ios, android, например.

можно писать с ним бизнес логику и шарить с ios, android, например.

Для этого вначале нужно заставить мобильных разработчиков отделить бизнес-логику от представления и модели представления.
Как показывает мой опыт, 95% мобильных разработчиков так не могут.
Даже JetPack Architecture Components от Гугла не помогают наставить их на путь истинный.

Вы имеете в виду концепцию PVVM?

MVVM.
Очень многие искренне не понимают, что первое M значит и почему не нужно во вью-модели обрабатывать данные и писать логику.

шё вы краски сгущаете , все знают шё логику надо в контроллерах обрабатывать.Я имел ввиду VIPER View, Interactor, Presenter, Entity, и Router. Хотя когда нам на обучении рассказывали про MVVM, то говорили PVVM Present View ViewModel-в чём отличие кто знает?

шё вы краски сгущаете , все знают шё логику надо в контроллерах обрабатывать

Где в MVVM буковка К?
Нет никаких контроллеров.

Present View ViewModel-в чём отличие кто знает?

Что такое Present?

Да тут дело не конкретно в мобильных разработчиках, в целом такая тенденция, что много «инженеров» особо не шарят и не разбираются в своей же песочнице, копи-паст и простенькие задачки делают без вообще какого-либо понятия о SOLID и архитектуре.

в целом такая тенденция, что много «инженеров» особо не шарят и не разбираются в своей же песочнице, копи-паст и простенькие задачки делают без вообще какого-либо понятия о SOLID и архитектуре

Главное, они шарят как задачки с литкода решать.
А все эти паттерны и солиды — «для джунов».

Краще б шарили апі нормальні писати і документацію до них. Але то не важливо. Сьогодні одне робиш, завтра інше. Тижінжинір. І то не гівнокод, а щось інше.

документацию, вы имеете ввиду комменты. 30% кода?

Ні, я про публічну, до клауду. Інтегрував гмейл і це ппць якийсь. А їх сдк під старий нет, в корі не завелося. Прийшлося прямі рест запити робити. А документація якась обривиста, неповна. Треба по купі лінків ходити аби зрозуміти. Наприклад про те що їх base64 респонс не можна одразу годувати десеріалізатору бо то по якомусь стандарту, і треба руками деякі символи заміняти, дінався лише по екзамплу коду на одній з купи сторінок. Це був треш якийсь.

В таких случаях лучше делать нативную реализацию.Всегда работает...

Та конечно можно, под него даже для атмел пишут...

Як стати андроїд розробником з нуля, на пальцях

1) Открываем раздел «Вакансии» и категорию Андроид

jobs.dou.ua/...​cancies/?category=Android

2) Для большей «мотивации» фильтруем количество вакансий на ведро по своему городу.
jobs.dou.ua/...​ity=Киев&category=Android

3) Можем сравнить, к примеру, с нодой.
jobs.dou.ua/...​cancies/?category=Node.js

опять-таки сравниваем со своим городом
jobs.dou.ua/...​ity=Киев&category=Node.js

4) Закрываем данный топик и идем учить JS/Net/Java

Я хотел бы освоить Голанг.
Можешь посоветовать учебник для старта?

t.me/goproglib
З’явилося свіже видання Джей Макгаврен «Head First изучаем Go» від O`Reilly... там коротко, саме для початку..;))

4) Закрываем данный топик и идем учить JS/Net/Java

Так для Андроида и так Java надо учить

Работу для новичков лучше искать на других ресурсах, например, rabota.ua и work.ua.

Согласен. Логика в этом есть. Только это оффтоп. В самом начале было написано что статья для тех кто уже определился с языком и направлением.

В самом начале было написано что статья для тех кто уже определился с языком и направлением.

Ничто не мешает им встать на путь истинный)

Ты знаешь, есть такое понятие — интерес, не только количество вакансий важно. Чем хорош мобайл, и Андроид в частности — там тебе и бд, и фронтенд, и железо, и логика, и графика.

100%. Часть народа относится Mobile как еще одному типа фронтенда.

На самом деле Mobile ближе к Desktop, на iOS еще более видно.

То что в многих проектах не раскрывается потенциал платформы это проблема проектов.

Ты знаешь, есть такое понятие — интерес, не только количество вакансий важно.

очень разумный подход, особенно во время кризиса.

Про логику на мобайле, спасибо, поржал.
99% логики на мобильных апках содержится на бекенде (если он есть)
Как минимум, чтобы эту логику шарить между разными клиентами, а не писать и тестировать на яблоке и ведре отдельно (если мы не говорим о кроссплатформе ).

Це правда. Товсті клієнти ненужни. Як по причині дублювання, так і по секюрним міркуванням. Свій сервер ти контролюєш, а от мобайл апку можна за реверс інжерити. Сюди і спа сайти. Був хайп що всьо, тепер пишемо все на фронті. Наче попустило людей.

Це правда. Товсті клієнти ненужни.

Вы уже себе ChromeOS поставили?

. Як по причині дублювання.

Ну так если уже обсудили, сейчас есть просто куча возможностей написать общий код для обоих платформ.
В любом случае надо смотреть конкретно задачу, можно привести доводы за и против.
Надо смотреть задачу, а не что лучше бекенд или клиент.

так і по секюрним міркуванням

Что нужно защищать? От кого?
Бекенд тоже можно взломать.

Уникальный алгоритм? Я вас прошу.

Вы уже себе ChromeOS поставили?

Окей, не завжди ненужни.

Что нужно защищать? От кого?
Бекенд тоже можно взломать.

Уникальный алгоритм? Я вас прошу.

Так, бізнес логіку потрібно захищати. Ми ж не про лібу якусь, а про продукт. Ви увесь клієнтський код в публічних репозиторіях тримаєте?

Ви увесь клієнтський код в публічних репозиторіях тримаєте?

Ну вы и сравнили.
Публичный репозиторий и бинарник.

Так в чому проблема? Унікальний алгоритм? Я вас прошу.

Ну в отличии от логики на бекенде, логика в приложении будет работать когда интернета нет.
Я не топлю, за всякий бред в стиле: ServerLess, я лишь все-таки за конструктив и рациональное распределение обязанностей.

Все таки хотелось что бы телефон был чем-то больше чем браузер.
Это я как пользователь скажу.
Учитывая что они все мощнее и мощнее.

А надо ли? ))

кстати сейчас можно зайти на бекенд на Go?
Имею ввиду без опыта в PHP/Node?

Ну если реально посмотреть на рынок.

Якщо дивитись на вакансіі DOU, то наче норм все... кількість не суттєво зменшилась: з 32-35 до 25-28...(Android/iOS — з 90-100 до 43-47)
А от по скілам — нічого не можу сказати...
Я контрактор... це треба питати когось з укрогалери...))

Докер на Го написаний. Моя повага Го.

А от по скілам — нічого не можу сказати...
Я контрактор... це треба питати когось з укрогалери...))

напишіть свою історію успіху)
з задоволенням почитаємо

Що саме цікавить?

як перейшли в контрактори і позбулися/оминули галерні кайдани?
який техстек/досвід крім Go?

Якщо коротко то:
Finance -> Upwork (iOS, Python, Go) -> Long contract (Go) Denmark -> Co-founder IT-RAT Denmark (Cloud/Go/Kubernetes)

Все-таки у Вас крім Go ще Python)

Та я ж і не про себе писав;))
Думаю, зараз, із зростанням навантаження на стрімінг-сервіси та хмарну інфраструктуру, відбувається певне зростання попиту на Go інженерів різної кваліфікації, DevOps та Cloud інженерів також... Що, власне, й показує мій LinkedIn останнім часом...

Хороший пост.
Всё описанное — только часть фундамента знаний Андроид- девелопера.
Выучив это, потом придётся постоянно доучиваться, выбрасывая старые знания.

это не подводка к рекламе курсов Аджайл коучей?
Вайтишник прочтёт, ужаснётся и начнёт искать что-то попроще

...сатиру не коментирую, а вот касательно

постоянно доучиваться

это хорошее замечание, часто об этом думаю...
А вообще есть направление в программировании, где не надо постоянно доучиваться?

ирония понятна

Да, учёба — это наша вторая работа.

О Xamarin почему ни слова???

Потому что тред о нативной разработке.

И про Kivy ни слова!

мати можливість надсилати комусь всі некмітливі запитання

Що таке некмітливі запитання? Я це навіть реверсом через російську не можу зрозуміти.

Дякую за відповідь Вам і Vlad Stelmahovsky. Залишилось лише одне питання. Що таке некмітливі запитання?

смотря для какого языка программирования...

В принципі вам в коменти написали непогані приклади таких запитань, також можна ще додати увесь перелік запитань в форматі «що означає помилка в logcat...» .
А якщо вас цікавило тлумачення слова, то я мав наувазі «запитання з досить очевидною відповіддю».

Дякую за пояснення. Але прикладів не зрозумів, взагалі. І головне, залишилось незрозумілим, що таке «некмітливі питання», що взагалі це словосполучення означає?

«запитання з досить очевидною відповіддю».

тобто тупе запитання?
Я коли побачив цю фразу «некмітливі питання», то вирішив, що це кривий переклад якоїсь російської фрази, але не зміг вирахувати якої саме.

В ресурсах выше есть информация по созданию синглтон врапера для контекста?

В ресурсах выше есть достаточно базовых знаний которые помогут решить частные задачи с помощью гугла, а в крайних случаях там есть упоминание того, что ментор вам поможет найти всё что нужно.

А чисто из любопытства:
Для каких целей вам нужен такой синглтон?
Чем он должен отличатся от популярного доступа к контексту через ApplicationClass?
Похоже ли это на то о чём вы спрашиваете:

class ContextUtil private constructor() {
companion object {
private var context: Context? = null

fun init(context: Context) {
Companion.context = context.applicationContext
}

/**
* ApplicationContext
* @return ApplicationContext
*/
fun getContext(): Context? {
if (context != null) return context
throw NullPointerException("u should init first")
}
}

init {
throw UnsupportedOperationException("u can’t instantiate me...")
}
}

и инициализация в апликейшн классе
ContextUtil.init(this)

?

Это что вообще за ужас такой?

class ContextUtil private constructor()
init {
throw UnsupportedOperationException("u can’t instantiate me...")
}

Решается просто как:

object ContextUtil

а тут

fun getContext(): Context?

Почему возвращаемый тип нуллабл если метод швырнет NPE?

И вообще на любом более-менее серьезном проекте это должно решаться на уровне внедрения зависимостей с DI или сервис локатор фреймворком.

Это не моё, просто первое, что я нагуглил. Я же написал, что просто интерестно.
Мне пока в проектах было достаточно апконтекста.

Это в твоем репо. В смысле не твое?

А в вашем личном репозитории нет кусков кода, которые вы позаимствовали?
Это из либы github.com/...​erhelper/utils/Utils.java

Я же написал, что просто интерестно.

В двух словах — это нужно для юнит тестов.
Нужна возможность мокать контекст, т.к. тесты ничего не знают ни о каком Андроиде, соответственно, никакой контекст не соберут.
Поэтому нужен класс, который просто предоставит ресурсы (строки, например).
Приложение будет брать их из контекста. А тесты — просто хардкодить, подменяя провайдер.
Надеюсь, понятно описал.

Предполагаю что наличие контекста в местах, которые покрываются юнитами весьма не хорошо.

Во ViewModel тебе нужны ресурсы, которые ты будешь биндить на форму. Они получаются из контекста. Вью модель должна в то же время, покрываться тестами.

VM не должен возвращать конкретные строки из ресурсов, он должен возвращать состояние в виде enum, int, ну или на крайний случай ресурс в виде R.string.... А активити или фрагмент уже биндят это состояние в конкретную строку. И необходимость врапера отпадает автоматически

И не контекста, а класса, предоставляющего ресурсы. Который может брать их как из контекста, так и из самодельного ресурс провайдера. Для аппы он будет брать контекст, для тестов — мокаться.

И тут в ты попадаешь на проект с NDK))

На первой работе ты попадёшь туда куда возьмут , и только на то что ты умеешь, ни больше не меньше.
Просто интерестно, чем по вашему мнению должен отличаться путь к разработке андроид приложений с нуля от версии описанной выше?

На першій роботі ти потрапиш туди куди візьмуть, і тільки на те що ти вмієш

Що до куди візьмуть, правда. Щодо на те що вмієш, ні.
Мене жодного разу не брали на роботу яку я вмів. Всі рази брали на мови і технології, про які я до того навіть не чув, або вивчав дуже давно і все давно забув. Вивчав С++ — взяли на 1С, вивчав Java — взяли на iOS, потім на Андроїд, а після закінчення проекту Андроїд поставили на проект на С++, потім після довгих спроб влаштуватись в Aндроїд розробку знову взяли в iOS. А потім старість. Ще брали на С та C#, але там я зразу зрозумів, що в предметній області не розберусь, враховуючи, що по суті я сам мав придумати концепцію програмного продукту в непростій предметній області і реалізувати.

А це просто брак впевненості і занижена самооцінка. Що попадаєш на рандомні проекти по рандомним технологіям, замість того щоб рухатися в одному напрямку.

А потім старість

Вперед на Апворк. Там нема такого критерію.

Вперед на Апворк. Там нема такого критерію.

Ток сперва я б советовал увеличить чуть самооценку.
А то будет работать fixed price 100$ в год и еще и с «refound» в конце.

Я б це порекомендував і собі)) Та в дупу фіксед якщо щось більше за два дня роботи.

Тему на обсуждения отдельного топика. Не хочу в оффтоп.
На практике fix-price ставят клиенты с низкими бюджетами(Хотя это не всегда так, есть вменяемые случаи).
И 50% усилий тратишь потом на переговоры что бы увеличить бюджет. Спрыгнуть с такого клиента тоже небольшой квест.
Целое поле для практики: «Тяжелых переговоров», «манипуляций», «тестировании перка на удаление плохого отзыва».

Це в першу чергу показник що клієнт або повний нуб(вперше наймає дева), а це проблеми, або мудак, що хоче те що дорого, отримати задешево, а це також проблеми.

І 50% зусиль витрачаєш потім на переговори щоб збільшити бюджет. Зістрибнути з такого клієнта теж невеликий квест.
Ціле поле для практики: «Важких переговорів», «маніпуляцій», «тестуванні перка на видалення поганого відгуку».

Це означає, що у мене там не було б шансів і на піку можливостей. Мене з вантажників виганяли, бо я не міг зрозуміти з пояснень начальника, що і куди грузити.

Это когда недовольный работой клиент просит вернуть деньги. Не сталкивался.

Якого критерію? Я втратив можливість працювати програмістом. В 45 років і 1 місяць настала старість, і у мене різко, в один день продуктивність впала в 5 разів. В такому стані я не зможу навіть теоретично зацікавити роботодавця.
Апворк не для новачків, а з України нема законного способу там працювати. Всі статті на цю тему пишуть: «це законно, головне не попадатись».

Якого критерію? Я втратив можливість працювати програмістом. В 45 років і 1 місяць настала старість, і у мене різко, в один день продуктивність впала в 5 разів. В такому стані я не зможу навіть теоретично зацікавити роботодавця.

Ну так это проблема вашего здоровья, и ее нужно решать отдельно.

Апворк не для новачків

Ну вы ж не новичок

а з України нема законного способу там працювати. Всі статті на цю тему пишуть: «це законно, головне не попадатись».

Может когда-то так и было.
Уже 2-3 года есть возможность законно через ФОП выводить деньги.
То вы читали статьи 5-ти летней давности.

Ну так це проблема вашого здоров’я, і її потрібно вирішувати окремо.

Старість не лікується.

Ну ви ж не новачок

А хто? Хоча, може й так. Ще навіть не новачок. До новачка ще треба зуміти дорости.

то вы читали статьи 5-ти летней давности.

Саме так, уже 5 років, я цією темою не цікавився. Мені нема, що там запропонувати. Та й в найкращі часи, не було. Фріланс — то робота для бізнесменів і чотких пацанів, а не ботанів.

Уже 2-3 года есть возможность законно через ФОП выводить деньги.
То вы читали статьи 5-ти летней давности.

А от і не правда.
з обговорення тут dou.ua/...​rums/topic/30461/#1848301 і dou.ua/...​rums/topic/30461/#1846458 зробив висновок, що нічого не змінилось.
Принцип «головне не попадатись ментам, а так усе законно» залишається в дії.

С Upwork как раз сейчас все четко. Я даже Payoneer не использую, делаю прямые выплаты на предпринимательский счет(Банальное выгоднее).
Банку достаточно просто заявки на договор-оферту с ссылкой на профиль с апворка:), и инвойсы без подписей от заказчика и печатей.

А в том комментарии описан какой-то «стремный» заказчик который боится светится в своей стране, не в нашей.
Кстати проблему оплаты легальной оплаты такого заказчика можно решить тем же Upwork.

До речі так. В апворку навіть зявидася фіча дірект клаєнт, коли за невеликий відсоток ти приводиш свого клієнта і працюєш з ним через платформу. В такому разі також можна документи для податкової брати у апворка.

А податки як платите? Через ФОП? І податкова не вимагає актів виконаних робіт?

Все через ФОП.

Для международных контрактов с 2017-го года официально достаточно инвойса, акты выполненных работ не нужны.

Через ФОП работать на много удобнее. Чем потом бегать по-банкоматам и снимать кэш.
Мало того комиссии от Payoneer, банков и их курс сожрут те же ~ 5%.

Некоторые используют Payonner что бы платить 2% при выводе на ФОП, а не 30$.
Но опять таки, с определенного этапа это тоже лишается смысла.

Банкам достатньо, податківцям ні. А ФОП то дуже накладно і небезпечно, фактично, реєструючись як ФОП, ви відмовляєтесь від половини громадянських і прав і прав людини.

Банкам достатньо, податківцям ні.

Вообще-то достаточно.
jurliga.ligazakon.net/...​yazany-ispolzovat-pechati

Более того, представителей власти ожидает административная ответственность за требование печати или отказ принимать документы без ее оттиска. Штраф в размере от 50 до 100 НМДГ ожидает должностных лиц и за требование нотариального удостоверения документов, которое не предусмотрено законом. Рассматривать дела о привлечении представителей власти к административной ответственности будут местные суды.

А ФОП то дуже накладно і небезпечно,

А что накладного? Оформлять доход с фриланса как доход физ-лица и платить 20%?

відмовляєтесь від половини громадянських і прав і прав людини

Это от каких прав я отказываюсь?

Давайте ток не сгущайте краски, все проблемы что вы описали надуманы.

Це від яких прав я відмовляюся?

Наприклад не впускати в житло різних перевіряльників без ордера на обшук.

Ха, уже работают над этим: dou.ua/forums/topic/30638

Ну это компромис между адекватным доходом и работой за копейки.
Я уверен с какого-то уровня при работе через пионерку будут проблемы.

А налоговикам гонять единщиков-фрилансеров это геммор без адекватного выхлопа еще и по-квартирам. В которых они по-факту могут и не жить. Тем более ИТ-шиков что бы шума было на всю страну.

Пускай лучше будет возможность решать проблемы чем работать за копейки.

Просто у вас варианты:
* Как скрываться от государства и играть по-правилам где заведомо проиграл
* Или работать за копейки

А идеальных законов нету нигде.
В Германии к примеру если я по-вечерам пилю для себя проект, то должен получить письменное разрешение от работодателя.

Що попадаєш на рандомні проекти по рандомним технологіям, замість того щоб рухатися в одному напрямку.

Відмовлятись від першої пропозиції за кілька років — дурість. Тим більше дурість, звільнятись з фірми, де пропрацював півроку, через те, що в новий проект вимагає змінити профіль чи стать.

фулстек розробник без роботи

фулстек розробник

Це Ви про кого?

Ну по моему мнению путь у всех разный и отличатся может очень сильно да и андроид разработка несколько шире того что описано в целом)). «только на то что умеешь» — это политика постсоветских галер, если у человека есть разговорный английский, то вполне реально и «на то что не умеешь сейчас» если видят в нем перспективу ... даже с нуля.

то вполне реально и «на то что не умеешь сейчас» если видят в нем перспективу ... даже с нуля.

Видывал я что пишут такие кадры.
Такой проект проще пристрелить, чтоб не мучался.

вы еще реальных проектов не видели, у вас там наверное очень вылизанная монолитка энтерпрайзного толка...

очень вылизанная монолитка

Эти ваши микросервисы могут существовать только на бэкенде.
Когда такой кадр с бэкенда переходит на мобайл и начинает играться в микросервисы, разбивая проект на 100500 модулей, вместо того, чтобы просто правильно организовать пакеты, таки не хватает костров инквизиции в офисе.

Это у вас там в энтепрайзе всё гуд, у нас шё есть, остальное исправляем по мере возможности...Вы работали с индейцами, китайцами, вьетнамцами, бангладешцами, еврейцами?

С еврейцами и индейцами.
Первые — больш меньш норм.
Вторые — тяжело. Они в архитектуру не умеют. Совсем. Ну может процентов 5 из них могут объяснить что и от чего должно зависеть и почему. Остальные — катают неструктурированные простыни, в которых сами путаются.

Программисторожденный довакин детектед )

хлопцы про Flutter не написали ничего , а зря. Не упомянули про функциональщину в Андроиде, наверное тоже зря...

Вы предлагаете с нуля сразу начать с флаттера?

Это никак не поможет тебе в изучении разработки под Андроид.

Смотря какой джун или трейни...

Вне зависимости.
Знания, полученные при изучении Флаттера, потом никак не применить в нативной разработке. И наоборот, вне зависимости от опыта в нативной разработке, на Флаттере придётся изучать всё с нуля.

Но если сильный джун в любом случае это лишним не будет...

Разумнее концентрировать усилия в одном направлении.

усилия в одном направлении.

C++

Это выходит за рамки мобильной разработки.
И не относится к данному топику.

Это выходит за рамки мобильной разработки.

у меня от фейспалмов лицо болит уже

вы шё хлопцы плюсы уже уходят...

при чем каждый год всё уходят и уходят...

На плюсах пишут библиотеки, а не приложения.
Потому к мобильной разработке они отношение имеют такое же, как создание видеоконтента для мобильного приложения, которое будет этот контент воспроизводить.

А как же приложения на Qt, у которых из жабокода только прокладка между андроидом и JNI

А можно и на Kivy писать.

Это архаичный мусор.
Имеет смысл только, если есть приложение на сях, которое надо адаптировать для Android, а денег нанять нативных разработчиков нет.
Я даже сравнивать не буду скорость разработки одного и того же приложения на Kotlin и C++.
Новые приложения никто в здравом уме писать на Qt не будет.

А про Rust что скажите? это тоже невозможно?

Меня мало волнует, на чём написаны библиотеки. Я приложения создаю, а не библиотеки.

Спеки за меня напишите, все библиотеки за меня напишите, алгоритмы знать не нужно, про операционные системы знать не нужно, а в чём тогда твоё синьорство заключается, в формошлёпанье? )

Спеки за меня напишите

Я не бизнес аналитик.

все библиотеки за меня напишите

Уже написаны. Назло тратить время на написание велосипедов?

про операционные системы знать не нужно

Нужно конечно знать application layer и Java API framework.
Всё остальное не влияет на твою способность писать приложение.

в чём тогда твоё синьорство заключается

В способности быстро и качественно делать свою работу. А не в способности заменять собой всю команду, включая БА, QA, PM.

Т.е. за пределы роли винтика в машине ты выйти не можешь? Если галеры закроются или дружно забанят тебя, вариант самостоятельно создавать приложения и размещать их в плеймаркетах даже не рассматривается?

за пределы роли винтика в машине ты выйти не можешь?

Есть такая штука в жизни. Столик для собеседований.
У него 2 стороны. Соискатель и наниматель.
Обе имеют свои плюсы и минусы. Я для себя ещё лет 10-15 назад всё взвесил и причин для пересмотра не вижу.

Если галеры закроются или дружно забанят тебя,

Ни того ни другого практически не может произойти со всеми галерами одновременно.

вариант самостоятельно создавать приложения и размещать их в плеймаркетах даже не рассматривается?

Мне чужды интересы пользователей совершенно плевать на потребности рынка и не доставляет никакого удовольствия их изучение. Мне интересны в айти только технологии, позволяющие быстро закрывать таски. Это для меня как спорт. Никакой утилитарной пользы в этом я не вижу. Просто улучшаю время на круге. Это отлично ложится на интересы галер и их клиентов. Им обычно и нужно быстро и качественно.

Мне интересны в айти только технологии, позволяющие быстро закрывать таски.

типичный вайтиайтишник

Мне чужды интересы пользователей совершенно плевать на потребности рынка и не доставляет никакого удовольствия их изучение.

Музыкант:
«Мне сказали бренчать, я и бренчу. Ну и что не в тему?
Ноты? Кому нужны эти ноты? кто их сейчас использует? Концепция нот устарела — сейчас рулят аккорды. Ноты нужны только производителям аккордов. Слушатели? Плевал я на слушателей, мне главное както отбренчать и домой»

Wrong.
Я «бренчу» лишь по нотам. И без «нот» «брынчать» отказываюсь. Зрители мне не нужны. Есть — хорошо. Нет — ещё лучше.

А если велосипед писать придется?

багато цепепе не осілятори раста чисто з релігійних причин (аля КОБОЛ форева)

Это архаичный мусор.
Новые приложения никто в здравом уме писать на Qt не будет.

вы, из вашего андроид-окопа вообще нихрена не видите

На плюсах пишут библиотеки

На плюсах еще пишут сам андроид и не только.

Потому к мобильной разработке они отношение имеют такое же, как создание видеоконтента

Любое серьезное приложение включает в себя часть, написанную на плюсах. Примеры — слэк, ютуб, телеграм, фейсбук, инстаграм, скайп и тд. Не разбираться в части кода зависимостей своего приложения — это нонсенс. Как ты сможешь просмотреть библиотеку на наличие бэкдоров/уязвимостей, пофиксить какой-то баг в ней, если не умеешь читать/писать на этом языке?

На плюсах еще пишут сам андроид

Данный топик рассматривает разработку приложений под Android. А не разработку Android.
Это как сравнить строительство дорог и вождение автомобиля.

Любое серьезное приложение включает в себя часть, написанную на плюсах.

Нет.

Примеры — слэк, ютуб, телеграм, фейсбук, инстаграм, скайп и тд.

Всё это относится к продуктовой разработке.
Поскольку форум украинский, предлагаю сфокусироваться на аутсорсе. Мы тут не в гуглах работаем.

Как ты сможешь просмотреть библиотеку на наличие бэкдоров/уязвимостей, пофиксить какой-то баг в ней, если не умеешь читать/писать на этом языке?

Забота о безопасности приложения — не моя головная боль. Это головная боль разработчиков оси.
От меня в этом смысле требуется только недопустить использование приложения с рутованного девайса, больше ничем пользователю не помочь.

Линуха это программирование на сях...

Андроид — это НЕ линуха.
От линухи там только ядро. Приложения о нём ничего не знают.

Я тоже потроллю.

Андроид — это НЕ линуха.
От линухи там только ядро.

Linux — это и есть ядро.
Операционка это к примеру: GNU/Linux.

Приложения о нём ничего не знают.

Приложениям в userspace в любом случае доступен системный вызов(sysenter/syscall, etc.).

Это низкоуровневый интерфейс для взаимодействия с ядром в userspace. Те же библиотеки должны как-то с ОС взаимодействовать, они ж не в kernel space.

Это низкоуровневый интерфейс для взаимодействия с ядром в userspace

Разработчику приложений доступен только Java Framework API.
Уже этот слой взаимодействует с Android Runtime и Native C++ libraries.
И уже они с Hardware abstraction layer и Linux Kernel или что там в следующую версию Андроида засунут.

Приложениям в userspace в любом случае доступен системный вызов(sysenter/syscall, etc.).

А разработчику приложений — не доступен.

А разработчику приложений — не доступен.

доступен. через НДК. но вы, товарищщ сеньер об этом не догадываетесь

Давно нет уже. Там уже давно весь стандартный и не стандартный зоопарк резвится. А у С или С++ там те же узкие ниши, как и на других осях.

Забота о безопасности приложения — не моя головная боль.

facepalm. То есть кража токенов, паролей аккаунтов и тд. через вредоносную библиотеку — от этого должен защитить разработчик ОС? Как же он защитит от этого, если моб. разрабы сами вставляют сторонний код, который отправляет все содержимое папки data/ приложения на левый сервак?

Приложениям в userspace в любом случае доступен системный вызов(sysenter/syscall, etc.).
А разработчику приложений — не доступен.

Еще как доступен.

Для С — www.geeksforgeeks.org/...​te-open-close-read-write

jameshfisher.com/...​2/19/how-to-syscall-in-c

Для asm — jumpnowtek.com/...​-arm-shellcode-part1.html

На плюсах пишут библиотеки, а не приложения.

да шо ви такое говорите?
а пацаны то и не знают

www.tiobe.com/tiobe-index
CPP го даун
Apr 2020 Apr 2019 Change Programming Language Ratings Change
1 1 Java 16.73% +1.69%
2 2 C 16.72% +2.64%
3 4 change Python 9.31% +1.15%
4 3 change C++ 6.78% -2.06%

CPP го даун

вот абсолютно начхать. чесно
у мениа сейчас такие проекты, в которых только C/C++ и на мой век их хватит

я тут вже писав про СРР як нью КОБОЛ

ты можешь сколько угодно повторять эту мантру, но сейчас практически все внутренности чего бы ни было написаны или на си или на плюсах. а вот руст както не взлетает. упс

до чого тут С до С++,
це як Паскаль і Дельфі,
С якраз іде то першим то другим, по популярності,
а С++ чахне.

А С++, который С с классами живее всех живых.

Вот же блин поганый язык. В 70-м году на нем чего написали и до сих пор работает.

це ж скільки роботи вкрали кляті буржуіни в майбутніх поколінь мальчішів кібальчишів

з с++ ще той хоррор, ні АBI ні FFI ...

Ага, самый противоречивый язык тянущий за собой все наследние компьютерной области за собой.

Пытающийся совместить кучу концепций таким себе универсальным инструментом.
В итоге:
* Имеем кучу версий языка и кучу компиляторов которые не полностью их поддерживают стандарты;
* Просто адовые конструкции;
* Нарушение концепций ООП
* Нету адекватного менеджера зависимостей;
* Адовый Boost;
* И самое главное: удорожание разработки.

Вы думаете вы знаете C++?
Вы думаете что знаете.

Даже Линус Торвальдс критикует этот язык.

Имеем кучу версий языка и кучу компиляторов которые не полностью их поддерживают стандарты

gcc/clang. остальное идет лесом

Просто адовые конструкции;

ты думаешь, я не видел котлин? или руст?

Нарушение концепций ООП

все переходят на смаллток!

Нету адекватного менеджера зависимостей;

c++20 modules

Адовый Boost;

в топку

И самое главное: удорожание разработки.

ага. потому, чт хомячки не могут запомнить malloc->free

Даже Линус Торвальдс критикует этот язык.

еще бы. он столько навернул в ядре, чтобы си стал похож на плюсы :)

Просто адовые конструкции;
ты думаешь, я не видел котлин? или руст?

ИМХО, это просто вкусовщина — одному не нравятся конструкции С++, а другому не нравятся конструкции в каком-нибудь другом языке (в котлине, расте, хаскеле, бейсике, етс.).

еще бы. он столько навернул в ядре, чтобы си стал похож на плюсы :)

Т.е. попросту сделал из сишки условный «с++ под себя». Типа мне не нравится как Страуструп сделал из си плюсы — я сделаю свой вариант! :-)

gcc/clang. остальное идет лесом

iсс отличен.

ага. потому, чт хомячки не могут запомнить malloc->free

+100500, в точку.

Даже Линус Торвальдс критикует этот язык.
еще бы. он столько навернул в ядре, чтобы си стал похож на плюсы :)

+100500

Пытающийся совместить кучу концепций таким себе универсальным инструментом.

Это и есть универсальный кроссплатформенный инструмент для всего что хочешь. Если рассматривать мобайл, то на С++ (в большей степени) написаны операционные системы, компиляторы, виртуальные машины, движки (для браузера и не только), важные библиотеки и тд.
Большинство перечисленных недостатков можно отнести к любым языкам.

* Нарушение концепций ООП
Даже Линус Торвальдс критикует этот язык.

Зато в любимой Линусом сишечке так много «правильного» ООП по сравнению с С++ :)

И самый главный вопрос, на чем тогда писать особо важные модули (типа вирт. машин, компонентов ОС и тд.)?
На го? Тут бэкендеры жалуются, что на нем особо большие и сложные системы не напишешь.
На Расте? Перспективный язык, но пока ситуация с memory corruption уязвимостями там еще хуже чем в С++ и Си.
На Си? Ну как бы не совсем ООП вариант, да и синтаксического сахара как в других языках там нет... Если нынешним хипстерам С++ не зашел, то что уже говорить про Си.

Загрузчик: Assembler
Для ядра и модулей ОС: «С».
Для базовых либ: «С»
Для UI и прочего пользовательского энвайромента виртуальная машина с вменяемым SDK.
Возможность использования модулей на «С» для приложений я б оставил для задач требующих высокой производительности.

Ну и дать возможность невменяемым писать UI на «C++» через бриджы, прямые пути для UI либы я б им запретил.

В целом такая схема работает и сейчас.

В целом такая схема работает и сейчас.

Но не в мобайле. iOS и android в большей степени написаны на С++ и С, лишь малая часть ОС на Objective-C/Java.

А чистый Си — это

как бы не совсем ООП вариант, да и синтаксического сахара как в других языках там нет... Если нынешним хипстерам С++ не зашел, то что уже говорить про Си.

Почему-то никто не спешит писать на Си всякие webrtc, компиляторы Swift-а и его рантаймы, виртуальные машины для джавы и тд.

Загрузчик: Assembler

Вообще-то С иногда со вставками на асме.

пока ситуация с memory corruption уязвимостями там еще хуже чем в С++ и Си.

ггг, рилі?

Пытающийся совместить кучу концепций таким себе универсальным инструментом.

Я бы сказал, что в него впихнули все, что можно (за исключением пожалуй функциональщины, и то из ФП в плюсах наверное тоже уже что-то есть), чтобы сделать его языком для всего.

* Имеем кучу версий языка и кучу компиляторов которые не полностью их поддерживают стандарты;

По-моему, на данный момент общепризнанным основным компилятором для плюсов является gcc. Впрочем он же является основным компилятором для Си, если не ошибаюсь (правда мне как компилятор для сишечки больше нравится Tiny C Compiler).

* Нарушение концепций ООП

ИМХО, единственный язык. в котором ООП ничем не было «испорчено» — это Smalltalk. :-)

в конце давать обзорно...Не сказать про него это с моей точки зрения будет выглядеть не современно...

До публікації статті я чесно вважав що написав забагато і налякаю бажаючих вчитися в цьому напрямі...
Якщо проскролите тред під статтею, то побачите, що з цієї точки зору треба було не топік постити , а мануал... і обзорно тоді не лише про флаттер, але й про купу інших мов та фреймворків писати. Але мені здається що не треба намагатися охватити все, треба обрати щось своє і рухатися в цьому напрямі. Базу, з якою можна влаштуватися я написав і покищо не побачив аргументів, як цей шлях можна було б скоротити.
Месседж статті такий «Якщо ти засвоїш це ти потягнеш і все інше», а якщо не потягнеш і цього, то «обзорно» тобі до лампочки...

Як стати андроїд розробником з нуля, на пальцях

Дуже рекомендую прочитати цей коментар

dou.ua/...​rums/topic/28058/#1644493

Рекомендую не тратить время на мнение фуллстеков о мобайле.

Почему? Я думал что их бесценный опыт как минимум достоин внимания.

Их взгляд на то, что такое «хорошо» и что такое «плохо» сформирован вэбом. Потому любые их оценочные суждения того, что происходит в мобайле — нерелевантны.

мобайл — это путь боли и страдания.
Посмотрите на количество вакансий под Андроид и сравните с нодой например.
Все вопросы отпадут сами.

Вакансий на ноду больше чем на весь нативный мобайл разом.

Хоч коментар написаний на тюремній мові, але правда в ньогму є, повністю погоджуюсь, дуже багато конфліктів на різних версіях, та постійні оновлення.
Але якщо на то пішло, я писав дисклаймер про те, що ця стаття для тих хто вже визначився з мовою програмування та напрямом. трохи не по темі

Это вы еще ReactNative не видели.

Там если к месяц-два к проекту не подходить, то не соберете уже.

* Поменяется API
* Какую-то либу обязательно удалят с репозитория или она не совместима с чем-то другим
* Нужно брать открывать нативные проекты в Android Studio, Xcode и вручную их править.
* Ошибки в нативных модулях
* Где-то будут нарушены кросс-зависимости между пакетами.

И это проект на 4 экрана и пуш нотификациями.

По живому режешь, в одном пет-проекте надо раз в 2 месяца какую-то мелочь менять — задача на пару дней

Математика
Часто так буває коли вчиш математику в школі, то з голови не йде одна думка «Не вже дійсно я буду це використовувати на практиці, коли стану дорослий?» і на це запитання навіть деякі вчителі відповідають «НІ!». А правда така, що саме математика, як така не так часто потрібна під час розробки, але володіння нею привчає наш мозок вирішувати задачі особливим чином. Ті хто лише починають вивчати програмування будуть постійно чути нагадування про «особливості нашого мозку».

Нужно для работы с графикой. Самый простой случай это отрисовка кастомных контролов. Но там не нужна сложная математика.

Но там не нужна сложная математика.

Арифметика 3-5 класса средней школы.
Базовые арифметические действия и пропорции.
Это и математикой-то назвать сложно.

А если контролы ещё вдруг вращать понадобится, но внезапно тригонометрия это слишком сложно? )

Для анимации вращения тригонометрия не нужна:)
Она задаётся через конфиг параметрами angle (угол) и duration.

там же про кастомные контролы говорилось

ква...ква..кватернионы. 2d интрефейсы на 3д модели...итд итп

Та я вообще по-лайтовому прошел.
Там народ народ в комментах ассемблер предлагает учить.

Как будто тот ассемблер сложнее жаба-фреймворков

Там народ народ в комментах ассемблер предлагает учить.

— да то упоротые почти деды, святоверящие, что они особенные, если пишут на C/C++.

они особенные, если пишут на C/C++

так оно и получается. C/C++ не учат в силу сложности, значит те, кто их осилил — особенные :)

C/C++ не учат в силу сложности

В силу высокого входного порога, а не сложности. То разные вещи.

В силу высокого входного порога,

от чего, по твоему, зависит входнй порог?

От количества вещей, которые нужно освоить для решения элементарных задач.

это и называется сложность

Главный минус сей не в этом.
А в низкой велосити разработки.
Бада была хорошей мобильной платформой, например. Но умерла потому, что языком разработки приложений у неё был C++.
То, что команда C++ девов под Баду будет делать целый спринт, я запилю сам под Андроид за пару дней и пойду катосить на мотоцикле.

А в низкой велосити разработки.

это у вас

То, что команда C++ девов под Баду будет делать целый спринт, я запилю сам под Андроид за пару дней и пойду катосить на мотоцикле.

то, что команда разработчиков на андроиде будет клепать 2 дня з запилю на QML+Qt C++ за день и пойду кататься на велике

что было на ренджровере?

крутуй розробник, покодив (на ПХП чи ноді) і на рейнджровер кататься
в той час один ніщеброд

я запилю сам под Андроид за пару дней и пойду катосить на мотоцикле.

другий, ще більший

запилю на QML+Qt C++ за день и пойду кататься на велике

Хватіт тролить беззахисних сішників.

нафига мне ренжровер? у меня есть другая машина не хуже
да и мне до работы 3 минуты пешком

то, что команда разработчиков на андроиде будет клепать 2 дня з запилю на QML+Qt C++ за день и пойду кататься на велике

Спасибо, посмеялся.

так оно и получается. C/C++ не учат в силу сложности,

 — с чего ты взял? Ну и что там сложного? Его, что не люди сделали?

Ну и что там сложного?

спроси у сиплюсплюсных неосиляторов

Мля, да оно мне нах не нужно, это ж ты заливаешь о силе плюсов.

Ну и что там сложного?
Мля, да оно мне нах не нужно

шиза

Походу у тебя, на фоне C++. Давай ещё разок, накинь там про Qt, ну как ты это обычно делаешь.

бесишься от бессилия и зависти?

бесишься
Не, просто ору

я же говорю — шиза

Да я уже понял, что с тобой, зачем уточняешь.

Лично я никогда не учил ни С, ни С++.
И на данный момент по-прежнему не хочу.
Почему не учил?
Выбрал в качестве первого языка джаву. Потому что с ней проще найти работу и на ней проще написать что-то чуть сложнее хеллоуворда. Не надо думать о памяти, например.
Почему сейчас не хочу?
С++ не позволит мне быстрее писать приложения для Андроид. И не упростит их поддержку.

це++ может и не позволит а вот растик это да.Язык це все изучают в университетах, у вас не программерский вуз был?

Я не программист по образованию.

Не надо думать о памяти, например.

типичная ошибка новичка

ніт, є поняття «ефективність»:
потратити 100500 часів на дві мови: С С++ і получать 30 тугріков в час
потратити 50500 часів на РНР і получать 25 тугріків в час

До пхп ще жабоскрипт треба. Хоча є і бекендові позиції. Скільки це сот часів до пхп вею? І чому до плюсів треьа ще звичайний С? Я не в курсі.

патамушта «С++ надстройка над С» как то так

До пхп ще жабоскрипт треба

це для фулстека (повногрудого)
ладно, заміним пхп на жабу або питона (я тільки шо поняв сакральний смисл фрази «іпала жаба гадюку»)

А до цього треба працювати і заробляти цей досвід де прийдеться, паралельно надсилаючи своє резюме в компанії в яких хотіли б працювати, а не чекати, що хтось відкриє вакансію з відповідними вимогами.

Розкрийте будь-ласка цей пункт. Куди саме відправляти резюме, якщо в компанії нема відкритої вакансії з відповідними вимогами? Просто слати безадресно на адреси HR-відділів компанії — це найкоротший шлях дописати свою адресу до антиспам списків.
Плюс робота «де прийдеться» — це така робота, котру роботодавці як правило відмовляються ввжати досвідом. Питання «який у Вас досвід?» зазвичай задається у формі — «Дайте посилання на ваші комерційні проекти і їхній код».

Навмисно скоротив останні етапи, по перше бо текст і так задовгий вийшов, а по друге, на цьому етапі дуже багато варіантів може бути, що далі робити... Наприклад багато людей потрапляють на стажування або трейні программи від компаній які пропонують влаштувати на роботу, якщо ті пройдуть їх курс по навчанню нової мови.

дописати свою адресу до антиспам списків

якщо чесно я не знаю таких випадків. Мені траплялися лише ечари які були дуже раді ініціативності і обіцяли мати наувазі в гіршому випадку, а в кращому присилали тестове завдання.

роботодавці як правило відмовляються ввжати досвідом

У мене лише пів року досвіду, але ще ніхто не казав, що він не рахується.

Дайте посилання на ваші комерційні проекти і їхній код

По логіці мало б бути так, але на практиці зазвичай треба підписати «Договір про нерозголошення комерційної таємниці» і лише на словах розповідати що ти робив. Беруть на роботу, дивляться і якщо не тягнеш, то прощаються.
Або якщо ви бетмен і у вас окрім роботи залишався час, робити якийсь свій проект, для таких випадків.

Те, що я написав — це мої спостереження по результатам 20 річного «досвіду» (ненавиджу це слово!!!) моїх спроб влаштуватись.

По логіці мало б бути так, але на практиці зазвичай треба підписати «Договір про нерозголошення комерційної таємниці» і лише на словах розповідати що ти робив.

Намагався на співбесідах розповісти на словах або показати свої хеловорлди. Одразу переривали словами: «Не можете показати свої комерційні проекти — значить, немає досвіду. Не витрачайте наш час!»
«Договір про нерозголошення комерційної таємниці» як правило має пункти, нікому не повідомляти, про факт праці в даній фірмі, про проекти, про технології і мови програмування, що використовувались, і найголовніше — ніколи, ніде, за жодних обставин, нікому, ніколи, ніколи, ніколи (я не забув написати, що НІКОЛИ?), не повідомляти про факт підписання цього договору. Я підписував такий договір у одній фірмі, коли працював на Андроїд. Термін того договору закінчився 5 років тому, але, про всяк випадок фірму називати не буду, лише натякну, назва тої фірми закінчувалась на «віжин», а починалась з «сайбер». Звісно, що після цього потрапити в іншу фірму на Андроїд розробку більше не вдалось.

Якщо ви не бачите цього коменту, значить найкращі люди планети, що працюють на цьому найкращому в світі форумі — модератори, дай Неіснуючий їм здоров’я і довголіття, угледіли в ньому якісь порушення правил і видалили.

Вы по-трудовой работали или как ФОП?

А, яка різниця? © Зе. Десь по трудовій, десь як ФОП, десь без оформлення. Там де, ніби то по трудовій, не завжди в трудову писали, вертали в такому ж вигляді як забрали. Якщо Ви про ту роботу, де був «договір про нерозголошення», то як ФОП.

Ну вы могли написать что работали в какой-то компании(не называя имени), указать что был Андроид.
Есть фриланс в конце концов.

Просто с моей стороны ваш рассказ выглядит как рассказ из параллельной мрачной вселенной.
А то что нельзя указывать галеру в которой работаешь вообще вызывает много вопросов.
Мне когда-то такое «заряжали» в гос. компании когда работал в начале карьеры.

Я думаю вы себе поставили каких-то кучу мнимых ограничений.

Ну ви могли написати що працювали в якійсь компанії (не називаючи імені), вказати що був Андроїд.

Я власне так і робив, хоч це і порушує підписку, але всі співробітники фірми так робили, ще й керівник проекту, дав мені рекомендацію, на linkedin, в якій було вказано місце роботи. Власне, аби не ця рекомендація, я б не згадував цю роботу в резюме.
Тому на співбесідах нічого не приховував, крім назви проекту і, що проект був для Майкрософт. Але співбесіди далі вимоги дати посилання на проекти не йшли.

Куди саме відправляти резюме, якщо в компанії нема відкритої вакансії з відповідними вимогами?

ось це

Наприклад багато людей потрапляють на стажування або трейні программи від компаній які пропонують влаштувати на роботу, якщо ті пройдуть їх курс по навчанню нової мови.

про те коли така вакансія є.
Чи ось це

Мені траплялися лише ечари які були дуже раді ініціативності і обіцяли мати наувазі в гіршому випадку, а в кращому присилали тестове завдання.

і є відповідь? ЇЇ можна трактувати як пораду: «Посилай своє резюме на кожну вакансію, незалежно від вимог у ній.»?
Мої більшість ігнорували. Десяток присилали прохання не спамити. І раз викликали на співбесіду, аби у очі сказати: «Припини спамити! Хто дав тобі право закидувати нас своїми листами, та ще й називати себе програмістом? Ти не програміст. Нема досвіду значить не програміст. Програміст — це той хто десь працював програмістом, а не той хто прочитав книжку по програмуванню.».

Програміст — це той хто десь працював програмістом

Я навіть більше скажу, в андроїд розробці ти станеш джуном(!!!) лише після того як десь пропрацюєш півтори року(!!!) виконуючи комерційні завдання.
Не гарно) Погоджуюсь. Це на стільки не справедливо, що я навіть вирішив це написати в статті, щоб всі були до цього готові.
Я не знаю що вам відповісти, в мене не було проблем з пошуком роботи... точніше не так, проблеми звісно були і потоку пропозицій я не отримував, і шикарних гонорарів мені як я бачу ще довго не бачити, але навіть взагалі без досвіду роботи раз на місяць мені пропонували працювати «за хліб» , доволі відверто.... але на такому етапі я не бачу сенсу перебирати харчами де отримати перший реальний досвід.
Моя теорія така: якщо у вас є якийсь код, який ви написали сам (який би більш менш був схожий на реальний проект), у вас є англійська, у вас є резюме на всіх майданчиках, в якому відверто написано, що зарплата вас не цікавить, то вас рано чи пізно знайдуть і не треба буде навіть розсилати резюме.
Але я б радив все ж таки слати резюме в ті компанії де хотілося б працювати, в незалежності від наявності вакансії.
Чесно кажучи вперше чую про ейчарів які погрожують не присилати резюме, але якщо все ж таки такі випадки бувають не бачу в цьому проблеми, ци ви їм потрібні, а не вони вам і треба завжди дивитись на це з цієї точки зору.

Я не знаю що вам відповісти, в мене не було проблем з пошуком роботи... точніше не так, проблеми звісно були і потоку пропозицій я не отримував, і шикарних гонорарів мені як я бачу ще довго не бачити, але навіть взагалі без досвіду роботи раз на місяць мені пропонували працювати «за хліб» , доволі відверто.... але на такому етапі я не бачу сенсу перебирати харчами де отримати перший реальний досвід.

Можливо Ви щось таке знаєте, і вмієте, навіть не усвідомлюючи цього, з так званих софт скілів, котрі мені не доступні. Наприклад відповідати не на задане питання, а так аби видати більше потрібної Вам інформації.
Наприклад, менти питають: «За що Ви вбили сусіда?», а Ви замість того аби назвати причину, відповідаєте: «Я його не вбивав!». Вас же не про це питали, цю відповідь треба давати на питання: «Це Ви вбили сусіда?».
От я так не вмію. Запитали «Який у Вас реальний досвід в Андроїд розробці», відповідаю: «Приблизно 4 місяці.» Вони — «Але ж у Вас в резюме сказано, що Ви в секретній фірмі працювали в андроїд розробці 9 місяців», я — «Не 9 а 8, там вказані місяці початку і закінчення, але почав я в кінці місяця а закінчив на початку, і половину цього строку я займався такою фігнею, що досвідом не вважаю і не рахую. Тому реального досвіду 4 місяці.», «А можете дати посилання на Ваші комерційні проекти?», «Ні.»

Моя теорія така: якщо у вас є якийсь код, який ви написали сам (який би більш менш був схожий на реальний проект), у вас є англійська, у вас є резюме на всіх майданчиках, в якому відверто написано, що зарплата вас не цікавить, то вас рано чи пізно знайдуть і не треба буде навіть розсилати резюме.

Ну, можна сказати, що Ваша теорія вірна, я за 15 років майже вліз в IT. А до того ще двічі я думав, що вже там. Якби старість настала років на 2 пізніше, то через рік (а при певному нахабстві і через півроку) після тієї трагічної для мене дати 20 серпня 2015 року, я міг би в резюме писати омріяний пункт «Досвід роботи — 2 роки» і переді мною відкрилися б сотні вакансій, на які я міг би претендувати.

у вас є англійська

У мене є поганенький підручник з технічної англійської. Рахується?
А от спілкуватись нею не можу (та, я ж, навіть, українською і російською не можу), хоч в половині книжок по програмуванню не зустрічаю жодного незнайомого слова, і можу успішно пройти 60% тестів на продвинутий рівень, правда на початковий рівень, також приблизно стільки ж.

Не гарно) Погоджуюсь. Це на стільки не справедливо, що я навіть вирішив це написати в статті, щоб всі були до цього готові.

Це не несправедливо а нереально. Перш ніж потрапити на першу роботу треба півтора роки попрацювати на якійсь роботі. Хоча це IT, тут рахують не з 1 а з 0.

якщо у вас є якийсь код, який ви написали сам (який би більш менш був схожий на реальний проект)

Ну там де мені казали, щоб я не спамив і що я не програміст, це був рік 2007, чи раніше, і то була фірма що займалась J2ME — і я був готовий показати це: github.com/...​sovets/J2ME_Demo_Examples і ще десяток хеловорлдів. Вони були в мене на телефоні і код з собою на диску. Але оскільки я не програміст, мені не дали шансу.

гонорарів мені як я бачу ще довго не бачити, але навіть взагалі без досвіду роботи раз на місяць мені пропонували працювати «за хліб» , доволі відверто.... але на такому етапі я не бачу сенсу перебирати харчами де отримати перший реальний досвід.

У тому резюме, у мене було сказано, що на перший рік мене влаштує 1000 грн на місяць, це тоді було 200$ з безкоштовним випробувальним терміном, за що мені також від них тоді прилетіло «Вы еще смеете требовать зарплату 1000 грн! Да у нас студенты и те за 200 долларов работают, а они хотя бы екзамены сдавали.», ця фраза супроводжувалась жестом, який нагадував чи то тасування карт, чи то перерахунок куюпюр.

Діди якісь тут розказують про асемблі. Вже вебасемблі пора вчити. Та так щоб свій компілятор написати. І потім, можливо можна братися за формочки в андроіді.

вебассемблер имеет такоеже отношение к ассемблеру как морская свинка к морю

Зате він скоро революцію зробить йопта.

Морська свинка має прямий стосунок до моря. Її предків з-за моря привезли, на морських кораблях. І її дівоче прізвище Заморська.

дада, а коды вебассемблера в конце концов транслируются в ассемблерные команды цпу

От. Так що, більше не робіть таких безвідповідальних заяв. Сюди ж джуни заходять, а вони як діти, вірять у все написане тут.

Тут нічого додати, без вміння писати на осліп про програмування можна взагалі забути.

А вы современные IDE вообще видели?
Программирование уже давно мало связано с набором текста.
Особенно, под Андроид.

«Trainee Android Developer»

Це ж трейні. Життя ще не бачив. Учить як вміє.

Поправочка. Я нікого не вчу, про що неодноразово писав. Це лише список порад, які я отримував від менторів на свому шляху.

Малось на увазі швидкість навчання.
Якщо відволікаєшся на пошук букви на клавіатурі, то перші задачі будуть вирішуватися вічно.

Оце трешак. Швидкість навчання залежить від швидкості друку на клавіатурі...

Чи мова йде про 50 річних бабусь які компом користуватися почали лише рік назад і друкують по 2 символи в секунду?

Не те щоб від швидкості, скільки від уваги.
І взагалі про що ми сперечаємося? В чому проблема вміти писати наосліп? Це взагаліто займає від силу місяць і входить в базові навички початкової школи.

Ну, если ты минуту будешь букву на клавиатуре искать, то да:)
В остальных случаях — вряд ли существенно повлияет на скорость обучения.
Как только процесс поиска клавиши становится подсознательным, уже не важно, смотришь ты на клаву, или нет.

Кстати, на своем опыте заметил, что когда медленнее и меньше пишу задача решается не только быстрее но и качественнее)

без вміння писати на осліп про програмування можна взагалі забути.

Ну это ты загнул, конечно.
Я хоть и сам посмеиваюсь над людьми, которые не умеют в слепой набор и искренне считаю, что они теряют в производительности от этого, но сказать, что это как-то существенно влияет на их карьеру и квалификацию у меня язык не повернётся.

Можно быть офигенно крутым программистом вообще не имея рук. Будешь набирать текст движением глаз, как Хокинг. Просто ты будешь офигенно крутым и офигенно медленным программистом, вот и все. Закладывай +n часов на каждую задачу и profit.

Работал в проектной организации, в отделе разработчиков, с чуваком уже примерно пенсионного возраста, он кодил не то чтобы шустро.
У него и травма руки еще благодаря нашему заботливому государству, которое всегда чистит тротуары зимой или посыпает заледенелые тротуары гранитной крошкой, он на таком расчищенном и посыпанном гранитной крошкой тротуаре и получил травмы. Вроде бы, и рука, и бедро пострадали.
Но с ним постоянно консультировались люди из других отделов и приходили за его кодерской помощью.

Чим вища кваліфікація тим менше значення відіграє швидкість набору. Плюс швидко друкувати можна і двома пальцями.

Можно быть офигенно крутым программистом вообще не имея рук.

Полностью поддерживаю.
Но статься не для профи, а для тех, кто только начинает. Представьте себе студента, который учатся программированию залипая на клавиатуру? Мне их лично искренне жаль. Это просто убийство времени.
Когда сосредотачиваешься на решении задачи, отвлекаться на поиск необходимой буквы очень притормозит обучение.

Хлопцы у меня такое запытанячко...А кто уже на Rust мобильные пишет есть такие?

Ніфіга собі на пальцях — 100500 лінків по 100500 часу на кожен. Гадаю інструкція як життя прожити виглядає коротше.
А книжка типу не треба... насмішив.

Я написав книжку яку мені радили на кожний етап, як можна це узагальнити до коменту

книжка типу не треба

?
Окремо я просто зазначив, що мені особисто книжки не допомогли в навчанні.

Про котлин вы вообще не сказали, а многие на нем пишут. .. Хлопцы, кто такое уже юзал? mozilla.github.io/...​9-21-rust-on-android.html

Це жарт? Якщо вам влом читати не залишайте коменти будьласка.
Уся стаття про те що нічого окрім котліну не згодиться під час роботи андроїд розробником.

Уся стаття про те що нічого окрім котліну не згодиться під час роботи андроїд розробником.

До того момента, когда придётся писать что-то более сложное. Видео стриминг, аудио/видео звонки, продвинутая работа с графикой и тд. — это все C/C++.

Повністю підтримую.
Але з нуля стрибати у це просто немає сенсу. Стаття не про

что-то более сложное

, а про те з чого почати і отримати першу роботу.

аудио/видео звонки

Для этого есть API предоставленный системой, API для Java и Kotlin.

продвинутая работа с графикой

Что подразумеваете под продвинутой работой с графикой?
Для обработки есть Vulkan и OpenGL. Нету смысла на CPU это делать. А тут от C++ толку 0.

Видео стриминг

на мобилках есть родное API к аппаратному кодеку. Нужна либа для потоков, на GitHub есть реализации на Swift/Java/Kotlin для этого.

Swift для iOS вообще умеет с C либами напрямую без бриджей работать.

Для этого есть API предоставленный системой, API для Java и Kotlin.

на мобилках есть родное API к аппаратному кодеку. Нужна либа для потоков, на GitHub есть реализации на Swift/Java/Kotlin для этого.

Даже тот же webrtc иногда приходится модифицировать: добавлять новые фичи и тд. А все либы для потокового аудио/видео написаны в основном на сях. Приходится и дебажить. А как дебажить то, что не можешь прочитать? Правильно, поэтому знакомство с С и С++ обязательно.

Что подразумеваете под продвинутой работой с графикой?
Для обработки есть Vulkan и OpenGL. Нету смысла на CPU это делать. А тут от C++ толку 0.

Большинство движков для рендеринга, куча давным давно реализованных алгоритмов для графики и тд. — они все на С++, особенно если это 3d. Нет смысла переписывать это на свифт и котлин. Тоже самое со стримингом/звонками.

Swift для iOS вообще умеет с C либами напрямую без бриджей работать.

Кстати, свифт медленный, добавляет кучу лишнего в скомпилированный бинарь. Эти бесячие конвертации типа DarwinBool — ObjcBool — SwiftBool (которые съедают производительность в особо критических местах). А потом некоторые удивляются, что код на C++ или Objective-C работает быстрее.

В любом случае — если придется кастомизировать какую-то штуку написанную на С/С++ (а их много) — без знания этих языков не обойтись. А формошлепить за миску риса всегда можно успеть.

Большинство движков для рендеринга, куча давным давно реализованных алгоритмов для графики и тд. — они все на С++, особенно если это 3d. Нет смысла переписывать это на свифт и котлин. Тоже самое со стримингом/звонками.

Геймдев это отдельная тема. Тут подымается тема разработки приложений.

В любом случае — если придется кастомизировать какую-то штуку написанную на С/С++ (а их много) — без знания этих языков не обойтись.

Сталкивался, но это нишевая задача для мобайла.

Я могу так же сказать что нужно учить JavaScript + ReactNative так как есть задачи на нем.

А формошлепить за миску риса всегда можно успеть.

Доход зависит от того как выйдет себя продать, а не от технологии.

Есть люди что могут 1k$ за день подымать на WordPress разработке.

Геймдев это отдельная тема. Тут подымается тема разработки приложений.

Превьюшка 3д модельки в приложении, разные свистоперделки в виде 3д анимаций — это еще не геймдев. А тащить весь рантайм unity3d из за такой мелочи — совсем не стоит.

Сталкивался, но это нишевая задача для мобайла.

Не стоит судить мобайл только по укр. аутсорсу.

Доход зависит от того как выйдет себя продать, а не от технологии.
Есть люди что могут 1k$ за день подымать на WordPress разработке.

Ну ютубер, который жрет на камеру чебуреки — может и больше зарабатывать. Но не все, кто ест чебуреки на камеру, зарабатывают столько. Поэтому я имел в виду среднюю по палате зп.

Не стоит судить мобайл только по укр. аутсорсу.

В США он такой же.
И в Германии — тоже.

Превьюшка 3д модельки в приложении, разные свистоперделки в виде 3д анимаций — это еще не геймдев. А тащить весь рантайм unity3d из за такой мелочи — совсем не стоит.

Это не повод тащить C++ в проект, особенно для такой простой задачи.

тащить C++ в проект

в андроиде любой проект — надстройка над ц++ для людей не осиливших мемори менеджмент

Мне всегда нравились плюсовики, преподносящие механическую работу создание и удаление созданных ресурсов как свех-скилл.
Если можно что-то оптимизировать то почему этого не сделать?
Похвастайтесь что вы еще свой аллокатор писали.

По-этому фраза так и звучит: «тащить C++» в проект.

А любой C++ это надстройка над ассемблером. Давайте все на нем писать.

Мне всегда нравились плюсовики, преподносящие механическую работу создание и удаление созданных ресурсов как свех-скилл.
Если можно что-то оптимизировать то почему этого не сделать?

для ментально ограниченных давно придумали смартпоинтеры

Ну если вам нравится boiler-plate то никто ж не запрещает.

Я предпочту удобные инструменты.

boiler-plate

это ваш нулевой опыт в ц++ подсказал вам, что смартпоинтеры bolierplate?

удобные инструменты

какие, например?

это ваш нулевой опыт в ц++ подсказал вам, что смартпоинтеры bolierplate?

Я ручное управление памятью оставил в 2016-м. Пережиток прошлого.
Даже при том что в моем Objective-C это было в разы удобнее.
Там это убрали, без сборщика мусора кстати.

какие, например?

Там где не нужно писать лишнего утилитарного кода.

ам где не нужно писать лишнего утилитарного кода.

и какой же лишний утилитарный код в случае с смартпоинтером?
чецм он хуже безумия с !? в котлине и свифте?

создание и удаление созданных ресурсов как свех-скилл

а чим ще хвалитися, якщо більше нема чим,
«я маг пойнтерів 80левела» — угагага

unity3d
....
Это не повод тащить C++ в проект, особенно для такой простой задачи.

Простая задачка, что лучше для пользователя:

1) добавить С++ либу для 3д графики (типа Assimp) — это плюс до 1 МB опер. памяти и плюс несколько мегабайт к весу самого приложения.

2) добавить unity3d — это плюс десятки мегабайт оперативной памяти на сам 3д движок вместе с С# рантаймом и плюс примерно столько же к весу самого приложения. А, кстати, unity3d не совсем бесплатная.

Помогите Даше найти нужное решение.

Для Андроида:
Sceneform

Для iOS:
SceneKit

Ведь про простые 3д сцены говорим.

Как загрузить FBX и другие популярные 3д форматы в SceneKit? Никак.

Ну если сцена такая простая, то почему нельзя подготовить соответствующие ресурсы?

Потому что оно грузится с сервака и показывается динамически.
Когда бэкендеру скажешь чтобы он конвертировал на сервере модельки в родной для SceneKit формат специально для любимой ios — он пошлёт моб. разраба в одно место.

Ну так эту проблему можно еще решить политически.

Можно еще поискать реализации в репозитории менеджера зависимости пакетов.

Как поступать лучше, решать каждому.

Приходится и дебажить. А как дебажить то, что не можешь прочитать?

За 8 лет один раз пришлось дебажить. Как раз WebRTC. В сях опыта ноль, даже не изучал. Нагуглил, что исправить, поиском по текстовому файлу нашёл и исправил.

они все на С++, особенно если это 3d. Нет смысла переписывать это на свифт и котлин. Тоже самое со стримингом/звонками

Всё это просто подключается как зависимость к проекту в виде сошника и дальше всё общение с ним через Котлин.

В любом случае — если придется кастомизировать какую-то штуку написанную на С/С++ (а их много) — без знания этих языков не обойтись.

Практически 100%, что не придётся.
Если только не работать в новомодном стартапе, где к лицу собачьи ушки в видеочате пририсовываются. Но это единичный случай.
И я там работать никому не пожелаю, там такие понятия как «простота кода», «архитектура», «масштабируемость» — пустые звуки. Там главное — Пресвятой продукт.

У меня ситуация была противоположная.

Когда работал еще в аутсорсе, соседней команде надо было делать приложение для видеозвонков. У них была задача модифицировать сам webrtc, чтобы можно было пушить свои аудио буфферы в стрим.
Короче «гуру» формошлеп мобайл разработки пытались месяц (!) только скомпилировать сам webrtc без всяких правок. Они предложили переписать сам webrtc на swift, чтобы «было легче поддерживать и вносить правки» (!), потому что никто не знал сишку и связанные с ней билд системы. Короче кастомеру назвали примерный срок в год. Он их на*** уволил. Взяли других.
Представляю, как эти клоуны бы переписывали его с нуля :)

Они предложили переписать сам webrtc на swift

facepalm

А я, хлопцы подобную задачу видеочата писал на родном red5+flex...О так то!

Короче «гуру» формошлеп мобайл разработки пытались месяц (!) только скомпилировать сам webrtc без всяких правок. Они предложили переписать сам webrtc на swift,

Ну мне постоянно попадались backend разработчики что не знают REST, не знают что такое pagination.
Это не означает что все такие?.

Сейчас как-то лучше стало, в 1-ю половину 201х это был просто ужас какой-то.

Слабаки, я за неделю WebRTC собрал из сорьцов :)

За 8 лет один раз пришлось дебажить. Как раз WebRTC. В сях опыта ноль, даже не изучал. Нагуглил, что исправить, поиском по текстовому файлу нашёл и исправил.

stackoverflow driven development.

Якщо ви пишете, що у вас немає досвіду «в сях», як тоді ви перекомпілили WebRTC, не знаючи cmake/ninja, та дебажили, не знаючи lldb? Напевно ви дебажили лише тільки java-враппери до WebRTC.

як тоді ви перекомпілили WebRTC

Была хорошая статья где-то, где всё это было хорошо разжевано. Фактически, мануал.

та дебажили

Я его не дебажил.
Я просто загуглил проблему, нашёл на известном ресурсе решение и через обычный текстовый редактор нашёл и изменил значение нужных полей, после чего, перекомпилил заново.

Если только не работать в новомодном стартапе, где к лицу собачьи ушки в видеочате пририсовываются. Но это единичный случай.

Тут тоже под вопросом необходимость C++.
Все эти эффекты это GPU (шейдера) включая реализации Object Detection.
Необходимость и выгода здесь C++ сомнительная.

Ведь весь C/C++ останется в либе для стриминга(Я видел реализации для RTMP на Android и iOS которые реально используют).

Все эти эффекты это GPU (шейдера) включая реализации Object Detection.

есть линк на обжект детекшин на шейдерах? CUDA/OpenCL не предлагать

ну т.е. это CUDA от эппла

Ну Apple позиционирует Metal как замену и CUDA и OpenGL.
Они обьявили OpenGL как legacy на своей платформе и не рекомендуют его использовать.

Сильно упрощено все у вас.У каждого свой путь в программирование...Вот еще книжка только русскоязычный вариант. Чарльз Петцольд | Код. Тайный язык информатики (2019) [PDF]

Повністю підтримую, у кожного свій шлях, але якщо б було більше прописаних шляхів, то ними було б легше йти ;)
Складніше написати не хотів, бо було б просто не читабельно.
До речі ви радите ту саму книжку що і я в статті, просто іншою іноземною мовою. Якщо вже на то пішло і російська більше легка для засвоєння нової інформації, то кожну з книжок яку я порадив можна знайти російською мовою, не лише цю.

На русском потому, что начинающий разработчик редко когда английский хорошё знает...В нормальном переводе, там еще всё разжевано хорошё...

Не існує жодного сучасного американсього блокбастеру про хакерів, в яких би програмісти писали код двома пальцями дивлячись на клавіатуру. Тут нічого додати, без вміння писати на осліп про програмування можна взагалі забути.

омг. как я это пропустил!

печататель двумя пальцами возгорелся, несите огнетушитель :)

Напевне, це найбільше мене дратувало в програмістах, коли вони навіть набрати текст не можуть нормально. Якщо задуматися, то лютий сотона, коли людина 10 років професійно працює з інструментом і не може його освоїти навіть на самому елементарному рівні.

NDK тру гуру в андроиде не используют. ага

Скиньте будьласка посилання на статтю про «шлях як стати андроїд розробником з нуля» з вашої точки зору.

asm->C->C++ только так, только хардкор

после этого писать под андроид не захочется

Стаття направлена на повних нулів у програмуванні, ви вважаєте після прочитання вашого

asm->C->C++

хтось зрозуміє як стати андроїд розробником?
Я попросив посилання на покрокову інструкцію як стати андроїд розробником з нуля «вашим шляхом», а не обгрунтування вашої правоти, для тих хто розуміє про що мова.

для тих хто розуміє про що мова.

андроид немного побольше, чем JVM

Не можливо стартувати з Unity та одразу будувати ігри.
Треба з чогось починати.
Моя стаття це лише те, що мені радили успішні андроїд розробники, нічого свого.

но матчасть знать надо. невозможно стать хорошим андроид разработчиком, не понимая, из чего оно состоит. я не говорю, что нужно углублятся в кернел девелопмент, но что там под капотом знать обязательно. у Вас же об этом ни слова

Того що я написав достатньо, щоб почати працювати і заробляти перші гроші. І я не бачу ваш шлях більш швидким для цієї цілі.
Після того як є якийсь стабільний дохід можна абгрейдити себе у будьякому напрямі... хоч С, хоч Реакт, хоч Свіфт, хоч Флаттер... короче напрямів просто безліч.
Але якщо грошей нема, то це навчання дуже швидко набридне і захочеться піти на якусь іншу роботу де не потрібно так багато навчатись.

Тут скорее имелось ввиду что инженерная подготовка не нужна...

Можно развернутый ответ, как знания ассемблера помогут в мобильной разработке.
Со ссылками литературы, инструментария и желательно из 2010-х, а не из конца 90-х.

хлопцы, вы шё какой ассемблер, в крайнем случае из це можно ассемблерные ссылки делать...Ну вы даете!!!

Особенно в контексте мобайла, где у вас могут быть разные CPU.

разные CPU

прикинь, и с этим тоже приходится заморачиваться

любых, связанных с реалтайм обработкой данных — графика, аудио ид итп

Звучит как масло-масленное.
Я тоже обрабатывал графику и звук на мобайле. И Machine Learning использовал.

В мобайле это все равно сейчас на GPU выносят.
Максимум для чего сейчас C нужен, это подключить какую-то либу.

Та и таких задач не так уж и много, а в контексте данного топика вредно.

В мобайле это все равно сейчас на GPU выносят.

особенно звук

Ok, со звуком не выйдет.

Хотя бы потому что звук нужно в фоне обрабатывать, а там GPU не будет.

Я со звуком в iOS работал.
Я не сталкивался что бы мне не хватало перформанса и нужно было использовать C ради перформанса.

Использовал C только из-за ffmpeg.

Максимум для чего сейчас C нужен, это подключить какую-то либу.

а эти либы кто-то должен написать

1.написать это сложновато наверное, а вот править под себя, это да. 2. Язык це — маст хев для прогеров. его во всех универах учить заставляют

Ответ в контексте мобайл разработке. И нужно ли учить новичку C для мобайла.

Неужели в мире уже существуют и написаны все библиотеки на С, которые могут понадобиться для мобильной разработки? И в них нет багов и их не надо обновлять?

По-моему это оффтоп.

Еще раз, ответ был в контексте мобильной разработки под Андроид для новичка.

Пример:
Вот в 2011-м году. Я пилил свою игру на C++.
Я решил ее сделать кросс-платформенной.
Я сделал все нативные инициализаторы для настройки OpenGL.
Где нужно «обмазал» код define-нами.
Естественно поддержку андроида тоже запилил. Сделал JNI бриджы.
Сделал кучу настроек что бы это все собиралось с дополнительными либами.

В итоге это все собрал.
Было проделанное мер знает сколько работы. На игру потом забил.

В итоге к Андроиду вернулся в году 2017м.
С нулевыми знаниями.

Тут топик про Андроид для начинающего.
Вопрос: зачем начинающему Андроид разработчику тратить время на ассемблер и C.
Если это время можно потратить на ООП, паттерны, изучение нативного фреймворка.

С необходимостью этих знаний ведь человек столкнется 100%.

Неужели в мире уже существуют и написаны все библиотеки на С, которые могут понадобиться для мобильной разработки?

В 9 из 10 проектов в мобильной разработке эти библиотеки вообще не нужны.
Их прерогатива — видеочаты и общение с внешним железом. Чтобы слать джсон на сервер и парсить ответ, никакой С не нужен.

И в них нет багов и их не надо обновлять?

Это делают те, кто их написал. Обычно это просто другой отдел той же компании.
Обычному мобайл разработчику заморачиваться этим мусором, который пригодится ему раз в 5 лет по ошибке вообще нет смысла.

Чтобы слать джсон на сервер и парсить ответ, никакой С не нужен.

а я всегда это на json-c делал почему-то

всегда это на json-c делал почему-то

Откройте для себя GSON и больше этой ересью не страдайте.
Подключать NDK для парсинга джсона — это лечить зубы через задний проход.

Gson (also known as Google Gson) is an open-source Java library to serialize and deserialize Java objects to (and from) JSON.

Jackson гораздо популярнее gson. Если производительность маршалинга и демаршалинга в большинстве очень важна, тогда выбирайте библиотеку с API SAX-типа, для серьезных джейсон файлов. Использование gson для генерирования json тоже не очень хорошая идея т.к. всех его богатых возможностей кастомизации оказалось недостаточно, и может уперется в конечном итоге в ограниченные возможности JsonWriter: String там, как и положено в json, всегда в кавычках и с соответствующим escaping’ом. Так шё хлопцы решайте сами...

Открою страшную тайну.
Уже лет как 5 для Андроид разработки используется Retrofit, который может и в сеть ходить, и в отдельные потоки запросы выносить, и джсон распарсить в объект. Какой конкретно библиотекой он это будет делать, решается просто выбором конвертера при его конфигурации.
Но ни разу за 8 лет я не увидел, чтобы длительность парсинга любого джсона превысила 1% от длительности ожидания ответа от сервера.
Посему, рассуждения о производительности в этом контексте считаю чем-то наподобие вылизыванием до блеска бляхи ремня в армии. И если на собеседовании задаются подобные вопросы, я сразу понимаю, что собеседующий — просто j2ee дев, которого попросили пособеседовать на Андроид кандидатов и он накануне что-то почитал.

Хорошо тогда скажите мне как вашим gson использовать для создания джейсона при условии, что он должен содержать внутренний javascipt//
Согласен что для реста можно заюзать Retrofit. После того как один раз создан и настроен Retrofit клиент, добавление еще одного запроса к Api займет всего пару строк кода и несколько минут. Кроме того можно не заботиться еще об асинхронности самостоятельно (в андроид нельзя выполнять запросы к сети из главного (UI) потока), а без сторонних библиотек это требует много усилий и нервов . Хлопцы меня так просто не возьмешь! Я на Андроиде диплом писал...

для создания джейсона при условии, что он должен содержать внутренний javascipt//

Завязывайте с тяжёлыми наркотиками:)

шё вы сразу за наркотики, просто задача была генерировать почти-json (json, расширенный тем, что значения некоторых полей были бы кусочком кода на js).GSON с его кастомизацией не зашёл... , так как задача была более узкая (генерация json подобного input’а для конкретной библиотеки), то это оказалось вполне не затратно-писать ручками, к сожалению...

json, расширенный тем, что значения некоторых полей были бы кусочком кода на js

Зачем приложению под Андроид JS-код?

это оказалось вполне не затратно-писать ручками, к сожалению...

Это не то, чтобы очень затратно.
Я на заре карьеры успел попарсить json ручками. Я про увлекательность и интересность этого занятия. Оно же бестолковое, как, не знаю, ручное управление механизмом газораспределения на двигателе автомобиля.

Зачем приложению под Андроид JS-код? Там вычислялась агрегатная функция и значения передавались в эти поля.Я смотрю вы мужчина серьезный, написали бы вы как реализовывали эту задачу, если бы она перед вами стояла...

Я смотрю вы мужчина серьезный, написали бы вы как реализовывали эту задачу, если бы она перед вами стояла...

Я бы предложил генерировать этот JS-код на сервере. А с Андроид-клиента слать только переменные параметры безо всякого JS

вы предлагаете node.js тудой закинуть?

Разумеется.
Это лучше, чем пытаться запихнуть его в Андроид-клиент, где ему вообще не место.

Обычному мобайл разработчику заморачиваться этим мусором, который пригодится ему раз в 5 лет по ошибке вообще нет смысла.

Мусор — это весь ваш андроид целиком, который в сегодняшний исторический момент есть, а завтра его нету.

который в сегодняшний исторический момент есть, а завтра его нету.

Этот исторический момент длится с 2008 года и пока конца ему не видно.

Выбросите телефон и купите кнопочную звонилку)

Я только кнопочной звонилкой и пользуюсь. Не, ну один смартфон лежит на полке на случай крайней необходимости в мобильной разработке, иногда возникает.

Я только кнопочной звонилкой и пользуюсь.

Вот когда несколько миллиардов пользователей смартфонов решат также, тогда и поговорим о бесполезности мобильной разработки.
А то я тоже могу сказать, что автомобиль — бесполезная штука лишь на основании того, что я его не купил себе.

Ну мобильная разработка как явление никуда не денется конечно, но конкретная платформа может неоднократно поменяться.

А какая область разработки стабильная?

Ну кроме 1С и J2EE.

но конкретная платформа может неоднократно поменяться.

Возможно.
Я бы даже сказал, вероятно.
Но аппликейшн лейер никто переписывать не будет. Перенесут тот, что есть и адаптируют, поменяв лишь ядро оси.
Я, например, не замечу, если следующий Андроид будет уже не на ядре Линукса базироваться.

Много ли апликейшен лейеров перенесли с Symbian, Windows Mobile, Palm OS и прочих?

Symbian OS — всего жила 14 лет. Последние 2 года умирал.

Palm OS — жила 11 лет.

Windows Mobile — жила 10 лет.

Все эти ОС в последние годы жизни стагнировали. И разработаны были в времена очень слабых мобильных устройств.

Современные телефоны это достаточно мощные девайсы. Это UMPC со звонилкой.
iOS и Android уже живут по 12 лет. И стагнации этих платформ нету.

Они перешагнули время жизненного цикла Мобильных ОС предыдущего поколения.
Их адаптировали к телевизорам, авто и часам.

Идеи iOS к примеру переносят на Десктоп. Идеи Декстопа на iOS (iPadOS).

Это все добро уже так просто не выбросить.
Учитывая что полно уже мобильных проектов с длиной жизни более чем 6 лет.

Много ли было под них приложений, которых на момент их смерти не было под Android и iOS?
Было ли ради чего переносить аппликейшн лейер с них на Android, например?

Много ли апликейшен лейеров перенесли с Symbian,

Qt :)

ну тогда ладно, засчитывается )

Или вот даже JavaME приложения, можно ли их на современном андроиде запустить

Или вот даже MS-DOS приложения. Можно ли их на современном Windows 10 запустить?

Fixed.

Если поставите эмулятор то запустите.

Ну виндовс не мобильная платформа, и поэтому можно )

То есть, Вы допускаете, что может появиться мобильная платформа, телефон с которой Вы купите, несмотря на то, что там нет ни Скайпа, ни Телеграм, ни Фейсбука, ни Вайбера, ни нормальных современных игр?
Зачем?

Скайп в оригинале был десктопным приложением, а фейсбук посещался через браузер.

Но телефон без Скайпа на сегодня — это какой то бред, не находите?
Фейсбук через браузер с телефона — это очень неудобно и медленно.
Браузер рендерит весь этот сраный HTML с CSS, а ещё и пытается сраный JS запускать. В то время, как мобильная аппликуха на лету мэппит данные с джсона на нативную форму.

Скайп в оригинале был десктопным приложением

был написан на Qt, и не жрал 100% цпу

А нужно ли?
Им нет альтернативы под современный Андроид?

Добре що в веб фронті все стабільніше.

Ага, раз в полгода новый фреймворк :)

если ты не понимаешь, зачем мобильному девайсу оптимизация, то любые слова и ссылки тут бесполезны

Я попросил развернутый ответ, а не что бы мне по-хамовитому тыкали. Если вы не можете ответить значит вы такой себе специалист-балабол.

Вот зачем оптимизация на ассемблере для приложения 90% которого это UI, а 10% это вызовы web-сервиса.

Именно такие задачи дадут новичку.

Я попросил развернутый ответ

ваше величесто, развернутый ответ нужен тем, кто и так уже понял 50% проблемы

зачем мобильному девайсу оптимизаци

Девайсу, или приложению?

Андроид это линуха, все цешные извращения приветствуются...

a сколько «трушных» андроид программистов чиста на котлине это знают?

может и не знают но догадываются...

Шё вы такое говорите, на нем все игры почти нормальные делаются...

это не ко мне. это к аффтару

Подписаться на комментарии