“Android спеціалізація зараз дуже популярна. Останні 4-5 років вона впевнено тримає цей показник, адже майже кожен продукт має свій мобільний додаток. Також є продукти, які спершу запускають саме мобільну версію, той же Instagam чи Tik Tok. Крім того, у країнах, які розвиваються, люди перестрибнули рівень купівлі комп’ютера і там серед користувачів переважають смартфони. Якщо аналізувати тамтешню специфіку додатків, то в таких країнах, буде чимало мобільних банкінгів.
Крім того, Android додає популярності Android Automotive OS. Цю розробку у 2019-му анонсував Google. Це версія Android, але для автомобілів. Я до речі, працюю на проєкті, який займається такою розробкою”. Так Роман, Senior Mobile Engineer в Intellias, пояснює популярність та затребуваність Android розробників.
Свого часу Роман закінчив факультет комп’ютерної інженерії у НУ “Львівська політехніка”. Згодом пройшов Java курси при одній з ІТ компаній і там же влаштувався на першу роботу у сфері Android розробки. Сьогодні Роман у професії уже 10 років.
На те, щоб вирости з Trainee до Junior Android розробника за словами Романа знадобиться 1 рік. Шлях з Junior до Middle займе ще 2 роки, а з Middle до Senior рівня ще 2-3 роки. Хоча Роман наголошує, що все індивідуально і залежить, як він розробника, так і від компанії, у якій він працює.
На Junior рівні розробник буде багато вчитись, основною його задачею буде написання коду, основні рішення по проєкту будуть приймати досвідченіші колеги Senior або Tech Lead рівня, а джуніор буде тільки реалізовувати ці рішення і отримуватиме поради від своїх колег. Також зазвичай він отримуватиме простіші задачі, які є менш критичними для продукту. Зазвичай на цьому рівні є мінімум спілкування з клієнтом, оскільки основну комунікацію проводитимуть колеги з більшим досвідом.
Розробник Middle рівня уже буде приймати набагато більше участі в прийнятті рішень, дизайні архітектури і спілкуванні з клієнтом. За рахунок більшого досвіду розробник зможе приймати рішення, який підхід буде краще працювати в конкретному випадку. Також Middle розробники можуть приймати участь в онбордингу і менторстві нових працівників.
Якщо ви Senior розробник, то окрім написання коду, вам довірятимуть ще й спілкування з клієнтом. До прикладу, замовник хоче, аби при розробці рішення ми враховували певні бізнес-потреби. Він надсилає команді свій перелік вимог, описаних з точки зору бізнесу. Я його аналізую та описую, що і як можна чи не можна реалізувати на Android. Потім ми продумуємо архітектуру майбутнього рішення і звісно ж пишемо код. Також Senior менторить нових колег, перевіряє та дає фідбек на код молодших за рівнем спеціалістів.
Список технічних вимог на всіх трьох рівнях дуже схожий, основна відмінність – глибина знань. Якщо на Junior рівні розробнику достатньо буде знати, що є такий патерн як MVVM і як його реалізувати, то на Senior рівні потрібно знати, які є альтернативи, наприклад MVP, MVI: їхні переваги, недоліки, що краще та в якому випадку використати. Ось ще кілька чек-листів:
Junior:
– Kotlin/Java language knowledge
– Android SDK knowledge
– OOP knowledge
– OOD basic knowledge
– Design and architectural patterns basic knowledge
– Networking basic knowledge
– DB basic knowledge
Middle:
– Kotlin/Java good language knowledge
– Android SDK good knowledge
– OOP knowledge
– OOD good knowledge
– Design and architectural patterns good knowledge
– Networking good knowledge
– DB good knowledge
Senior:
– Kotlin/Java excellent language and implementations details knowledge
– Android SDK excellent knowledge
– OOP knowledge
– OOD excellent knowledge
– Excellent knowledge of design and architectural patterns, their pros and cons, and best practices for usage
– Networking excellent knowledge
– DB excellent knowledge of multiple Storage options on Android
Questions:
What are the four basic principles of OOP?
What are DRY, KISS?
Describe the structure of Collection in Java
What is an abstract class?
What is the difference between ArrayList and LinkedList?
What are checked/unchecked exceptions in Java?
What are Android Components?
Name the types of intents in Android
Data class and Sealed class in Kotlin
View Lifecycle
Questions:
Explain Any, Nothing, Unit in Kotlin.
Null safety in Kotlin.
What is DI and why do you need it?
Garbage collection
Inheritance vs Composition.
What is SOLID?
High order functions.
Multithreading (mutex, semaphore, thread synchronization in java)
Difference between launch and async.
What are extension functions in Kotlin?
What is “suspend” in Kotlin coroutine?
What is infix in Kotlin?
What is doze mode in Android?
git merge vs rebase.
AIDL and IPC in Android.
Bind Service and its lifecycle.
What is Foreground Service in Android?
How to properly handle screen orientation change?
Difference between MVP and MVVM? MVVI?
Inline fun\reifined.
How would you implement clean architecture in Android?
GPU overdraw
Unit testing
Questions:
– Explain what is JNI and how to integrate the native C++ library using Java/Kotlin?
– Generics, in, out in Kotlin.
– SDLC (The systems development life cycle (SDLC), also referred to as the application development lifecycle)
– Type erasure in Java.
– Describe what code do you consider non-testable and how it can be fixed.
– What is Delegate in Kotlin?
– What is structured concurrency?
– Does Kotlin has checked exceptions?
– What are extension functions in Kotlin and what is their implementation under the hood?
– What are value classes in Kotlin?
– What is “inline” and what is its implementation under the hood?
– What Dispatcher is used if the context does not have any dispatcher nor any other ContinuationInterceptor?
– What is “scoped storage” in Android?
Завершити матеріал пропонуємо списком корисних ресурсів, якими свого часу користувався чи досі користується Роман.
Список корисних ресурсів на тему
Дайджест новин про Android розробку
Effective Java. Одна за найкращих книжок для Java розробників, хоча принципи описані в книжці будуть корисні і для Kotlin розробників.
Algorithms, Part I. Один з найкращих безкоштовних курсів по алгоритмах.
Head First Design Patterns, 2nd Edition. З цієї книжки варто почати вивчення дизайн патернів
The best vacancies, are waiting for you!
We picked vacancies that suit your skills!