Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Make Your App Production Ready

Make Your App Production Ready

A brief synopsis of the session:
1. How to scale production apps
2. How to maintain a good architecture and manage the states
3. How to write clean code and follow Solid principles
4. What mistakes to avoid when writing code for a feature
5. How to not lose calm when Adhoc tasks come up
6. How to balance working in a team and progress towards leadership and ownership
7. Roadmap to becoming a better developer

Session Link : https://www.youtube.com/watch?v=OuafF5Q_qUg&t=426s&ab_channel=KotlinKolkata

Niharika Arora

November 28, 2020
Tweet

More Decks by Niharika Arora

Other Decks in Technology

Transcript

  1. Agenda Process & Execution Mistakes to Avoid Architecture & Maintenance

    01 03 04 02 05 Error Handling Team work & Balance 06 Best Practices
  2. A plan that describes a set of aspects and decisions

    that are important to a software.
  3. Why is Software architecture important? • A Basis for Communication

    • Early Design Decisions • Transferability of the model
  4. — App architecture Placement of classes in the system and

    how they communicate. We draw an overview of roles and responsibilities of these classes while grouping them
  5. Few things to better understand it !! • Language &

    Platform Agnostic Clean Code & S.O.L.I.D Principles
  6. S.O.L.I.D Principles • Single Responsibility Principle • Open/Closed Principle •

    Liskov Substitution Principle • Interface Segregation Principle
  7. S.O.L.I.D Principles • Single Responsibility Principle • Open/Closed Principle •

    Liskov Substitution Principle • Interface Segregation Principle
  8. S.O.L.I.D Principles • Single Responsibility Principle • Open/Closed Principle •

    Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle
  9. S.O.L.I.D Principles • Single Responsibility Principle • Open/Closed Principle •

    Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle Bad Code
  10. S.O.L.I.D Principles • Single Responsibility Principle • Open/Closed Principle •

    Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle
  11. S.O.L.I.D Principles • Single Responsibility Principle • Open/Closed Principle •

    Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle Good Code
  12. Few things to better understand it !! • Language &

    Platform Agnostic • Improves Changeability
  13. Few things to better understand it !! • Language &

    Platform Agnostic • Improves Changeability • Learn when it is important and essential both.
  14. —Robert C.Martin The Goal of an architecture is to minimize

    the human resources required to build and maintain the required system
  15. Few things to keep in mind • Make & Test

    for a variety of devices • Keep your early apps with minimal features
  16. Few things to keep in mind • Make & Test

    for a variety of devices • Keep your early apps with minimal features • Proguard Rules
  17. Few things to keep in mind • Make & Test

    for a variety of devices • Keep your early apps with minimal features • Proguard Rules • Different Production and Pre-Production environments.
  18. Few things to keep in mind • Make & Test

    for a variety of devices • Keep your early apps with minimal features • Proguard Rules • Different Production and Pre-Production environments. • Be careful with what you declare in Manifest.
  19. Few things to keep in mind • Make & Test

    for a variety of devices • Keep your early apps with minimal features • Proguard Rules • Different Production and Pre-Production environments. • Be careful with what you declare in Manifest. • Keystore : Own it, secure it.
  20. Few things to keep in mind • Make & Test

    for a variety of devices • Keep your early apps with minimal features • Proguard Rules • Different Production and Pre-Production environments. • Be careful with what you declare in Manifest. • Keystore : Own it, secure it. • Cover your business logic in Unit Tests.
  21. Learn Unit Testing • Slides : https://speakerdeck.com/niharika28/unit-testing-what-why-and-how • Source Code

    : https://github.com/niharika2810/UnitTesting-MVVM-Kotlin-Koin-Coroutines-Sample • Blog : https://medium.com/1mgofficial/unit-testing-in-mvvm-kotlin-databinding-ba3d4ea08f0e
  22. Error Handling • Explain what went wrong with a meaningful

    message. • No message is bad. • Show messages elegantly.
  23. Key points to consider: • Test thoroughly • Beta testing.

    • Use what’s already there. • Handle No- Internet cases.
  24. Key points to consider: • Test thoroughly • Beta testing.

    • Use what’s already there. • Handle No- Internet cases. • Keep your splash screen with minimal overhead
  25. Key points to consider: • Test thoroughly • Beta testing.

    • Use what’s already there. • Handle No- Internet cases. • Keep your splash screen with minimal overhead • Use Play store Rollout feature
  26. Key points to consider: • Test thoroughly • Beta testing.

    • Use what’s already there. • Handle No- Internet cases. • Keep your splash screen with minimal overhead • Use Play store Rollout feature • Keep releasing patch for major fixes.
  27. Key points to consider: • Test thoroughly • Beta testing.

    • Use what’s already there. • Handle No- Internet cases. • Keep your splash screen with minimal overhead • Use Play store Rollout feature • Keep releasing patch for major fixes. • Develop for multiple platforms after analyzing user behavior only.
  28. Key points to consider: • Test thoroughly • Beta testing.

    • Use what’s already there. • Handle No- Internet cases. • Keep your splash screen with minimal overhead • Use Play store Rollout feature • Keep releasing patch for major fixes. • Develop for multiple platforms after analyzing user behavior only. • Many more….
  29. Team Work & Balance 05 How to work in a

    team & progress towards leadership and ownership?
  30. Team Work • Know and respect other team member’s work

    • Avoid criticism. • Communicate everyday, everyway.
  31. Team Work • Know and respect other team member’s work

    • Avoid criticism. • Communicate everyday, everyway. • Avoid conflicts.
  32. Team Work • Know and respect other team member’s work

    • Avoid criticism. • Communicate everyday, everyway. • Avoid conflicts. • Creativity and innovations are the norms.
  33. Team Work • Know and respect other team member’s work

    • Avoid criticism. • Communicate everyday, everyway. • Avoid conflicts. • Creativity and innovations are the norms. • Show gratitude.
  34. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code
  35. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code • Don’t try to include everything just because it's in trend.
  36. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code • Don’t try to include everything just because it's in trend. • Use Third party libraries wisely.
  37. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code • Don’t try to include everything just because it's in trend. • Use Third party libraries wisely. • Handle Configuration changes
  38. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code • Don’t try to include everything just because it's in trend. • Use Third party libraries wisely. • Handle Configuration changes • Keep buffer for ad-hoc tasks
  39. Ad-hoc tasks Is all the work feasible? Redirect from your

    leaders. Know the impact and weightage. Retrospect
  40. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code • Don’t try to include everything just because it's in trend. • Use Third party libraries wisely. • Handle Configuration changes • Keep buffer for ad-hoc tasks • Try to implement Unit tests and CICD
  41. Suggestions • Try to keep your app size small, Learn

    App bundles • Keep committing code • Don’t try to include everything just because it's in trend. • Use Third party libraries wisely. • Handle Configuration changes • Keep buffer for ad-hoc tasks • Try to implement Unit tests and CICD • Handle security decision on server side if possible.
  42. Just writing the code is not enough, Writing in an

    efficient way is the real challenge. Do mistakes & learn.
  43. Let’s Catch up • Github : https://medium.com/@nik.arora8059 • Medium :

    https://medium.com/@nik.arora8059 • LinkedIn : https://www.linkedin.com/in/thedroidlady/ • Twitter : https://twitter.com/theDroidLady • Portfolio : https://thedroidlady.com/
  44. CREDITS: This presentation template was created by Slidesgo, including icons

    by Flaticon, and infographics & images by Freepik. Thank You [email protected] @theDroidLady Do you have any questions?