/100DaysOfCode

The purpose of this repository to get you from the internship state to mid level with the help of awesome mentors.

Android developer track.

This track is a comperhensive track, to start your career as an Android developer with a solid understanding of the software enineering.

The track will Consist of Two categories.

  • Technical skills
  • Soft skills Each category include related topics as follow:

Technical skills:

  • Kotlin
  • Software engineering fundmentals
  • Android development
  • Portifolio Projects

Soft skills:

  • Problem solving / critical thinking skills
  • Communication skills
  • Collaboration / Teamwork skills
  • interviewing skills
  • Time management

We recommend to take this track in order as descriped.

Kotlin

Software engineering

Topic Resources Progress
SOLID SOLID articles series
Design Patterns Learn Design-patterns in kotlin
practice Design-patterns
refactoring gur
it would be great if you practice all of the patters, you can start with these
Factory, Adapter, Builder, Composite, Decorator, Listener, Observer, Singleton, Strategy
Data Structures / Algorithms Data structure Playlist
It would be awesome if you finish the whole playlist with practice,
but you can just learn the first 18 videos then from 24 to 37 as a start.
Clean Code Clean code freeCodeCamp
it would be great if you can purchase Clean code book by Uncle bob
Clean Architecture Intro
Clean Architecture Tutorial for Android
Database Design Database Design by Dr. Elmasry
Read ch1, ch2, ch3, ch4, ch7, ch8, ch9, and of course the more you read the more you will understand complex topics, but as a start you need to understand these chapters mentioned.
UML Class Diagrams
Use case Digrams
Sequence Diagrams
SQLite SQLite
Git pro Git book
Docs
GitFlow Git flow
Have a look over Trunk-based development

How we will accomplish that ?

we will pick a topic (Room) for example and the responsible mentor about that topic will:

  • guide you with tutorials and estimated time for it (tow days) for example.
  • then will be a live session to discuss the topic from a senior prospective with best practice and security.
  • demonstrate live example from a real project.
  • discuss some interview questions about that topic.
  • Task with code review.

Fundumental

  • FP
  • Github
  • TDD
  • CI / CD

Android

  • IDE
  • Gradle (Groovy & KotlinDSL)
  • Lint
  • Unit test
  • DP / SP
  • Resources Qualifiers
  • Strings / Dimentions / Colors / Fonts / Menus
  • Layouts
  • Support different screen sizes
  • Handle Landscape
  • Drawables / Shapes / Vectors / Icons
  • Layout Directions
  • Localization
  • Styles
  • Theme
  • Animation
  • Compound Components / Extending Views / Custom Views
  • Translat design into code (complex examples)
  • Communicattion with UI/Ux designers
  • Accessibility
  • Activity Lifecycle
  • Fragment Lifecycle
  • Intent / Intent Filtter
  • Navigation Component
  • UI test
  • Permissions
  • SharedPreferences / DataStore
  • Content Provider
  • Room
  • Room vs ContentProvider vs DataStore
  • Broadcast Reciver
  • Services
  • Work Manager
  • Networking
  • Authentication vs Authorization
  • Communicattion with Back-end
  • Postman
  • threading
  • Reactive Programming
  • Kotlin coroutines
  • RESTFULL API / Reetorfit
  • MVP / MVVM / MVI
  • Multi Module
  • WebView
  • Maps / Places
  • Dagger / Hilt / Koin (DI / Service Locator)
  • Gradle buid
  • Get Apk ready for production

Portifolio Projects

  • Project with All learned topics from scratch with design and back-end
  • Project with update plan to demonstrate a real company's project
  • Refactoring an old project with the learned topics