Everything you need to know about Mobile Engineering!!!
Choose the platform you want to develop for. This could be iOS, Android, or both.
Learn Programming concepts, the programming languages, and technologies required to develop for your chosen platform. For iOS, this typically involves learning Swift or Objective-C, and for Android, it involves learning Java or Kotlin
Develop your coding skills by building simple apps and experimenting with different features and technologies
Learn how to use an IDE
Learn how to use GitHub
Complete journey guide to becoming an Android developer
https://roadmap.sh/android
Team is your best asset.
https://handbook.tts.gsa.gov/18f/how-18f-works/one-on-ones/
https://www.coursera.org/articles/android-app-developer
Teach
Core Quality
https://developer.android.com/docs/quality-guidelines/core-app-quality
Architecture
https://medium.com/androiddevelopers/introducing-the-architecture-templates-3151323e4e34
https://github.com/android/architecture-templates
Android Resources
https://www.raywenderlich.com/4936497-your-first-kotlin-android-app
https://www.udacity.com/course/kotlin-for-android-developers--ud888
https://www.udacity.com/course/new-android-fundamentals–ud851
https://www.udacity.com/course/how-to-create-anything-in-android--ud802
https://www.udacity.com/course/material-design-for-android-developers--ud862
https://www.udacity.com/course/advanced-android-app-development--ud855
https://www.udacity.com/course/android-basics-user-interface--ud834
https://www.udacity.com/course/gradle-for-android-and-java--ud867
https://www.coursera.org/professional-certificates/meta-android-developer
https://www.coursera.org/articles/ios-app-developer
Swift Basics (How this will be achieved using this course:
https://books.apple.com/book/ap-computer-science-principles-with-swift/id1456795905?l=en
https://books.apple.com/us/book/intro-to-app-development-with-swift/id1118575552
https://books.apple.com/us/book/intro-to-app-development-with-swift-teacher-guide/id1118577558 d. https://books.apple.com/us/book/ap-computer-science-principles-with-swift/id1456795905
Design Guidelines https://developer.apple.com/design/human-interface-guidelines/
Accessibility https://developer.apple.com/accessibility/
Tutorials
https://www.raywenderlich.com/28797163-your-first-ios-swiftui-app-an-app-from-scratch
100 Days of Swift https://www.hackingwithswift.com/100
100 Days of Swift UI https://www.hackingwithswift.com/100/swiftui
Swift Knowledge Base https://www.hackingwithswift.com/example-code
Swift unit testing tutorial https://www.raywenderlich.com/21020457-ios-unit-testing-and-ui-testing-tutorial
UI testing
Objective C to Swift https://www.hackingwithswift.com/articles/114/objective-c-to-swift-conversion-cheat-sheet
https://www.coursera.org/professional-certificates/meta-ios-developer
Basic courses from Google - CS/SE/programming
Software Architecture
Computer science
OOP (Object Oriented Programming)
Data Structures and Algorithms
https://www.udacity.com/course/data-structures-and-algorithms-in-swift–ud1011
https://www.youtube.com/watch?v=8hly31xKli0
Software Debugging
Software Development Process
Software Testing
GIT
Patterns used in Mobile app : MVC, MVP, MVVM and VIPER
https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.ba5863nnx
https://betterprogramming.pub/the-real-clean-architecture-in-android-part-1-s-o-l-i-d-6a661b103451
https://medium.com/bytebytego-system-design-alliance/the-architects-blueprint-understanding-software-styles-and-patterns-with-cheatsheet-5c1f5fd55bbd
Mobile app design patterns are commonly used solutions to recurring design problems in mobile app development. These patterns provide a consistent approach to solving specific design challenges and can be used as a starting point for designing a mobile app. Some examples of mobile app design patterns include:
Navigation: This pattern is used to design the navigation structure of a mobile app. It includes patterns for navigation between screens, such as tab bars, side menus, and stacks.
List-Detail: This pattern is used to display a list of items and allows users to view more details about a specific item when tapped.
Master-Detail: This pattern is used to display a list of items on one screen and allows users to view more details about a specific item on another screen.
Onboarding: This pattern is used to guide users through the app's key features and functionalities when they first launch the app.
Empty states: This pattern is used to design the visual and interactive elements that should be displayed when a user performs an action that returns no results.
Search: This pattern is used to design the search functionality in the app
Form: This pattern is used to design forms in the app, where users can submit information or data.
Settings: This pattern is used to design the settings or preferences section of the app.
Push notifications: This pattern is used to design the way push notifications are displayed and handled in the app.
The "home screen" pattern, which is a central hub that provides access to the app's most important features and functionality.
The "navigation drawer" pattern, which is a panel that slides out from the side of the screen and allows users to access different sections of the app.
The "swipe to refresh" pattern, which allows users to refresh the content of a screen by swiping down on it.
The "bottom navigation" pattern, which places a bar of navigation options at the bottom of the screen, making them easily accessible with the user's thumb.
The "card" pattern, which presents information in a compact, easy-to-digest format that can be easily swiped or scrolled through.
These patterns are not definitive solutions and can be combined and modified to fit the specific requirements of an app, but they provide a good starting point for designing a mobile app that is easy to use and understand for users.
Mobile app architecture refers to the way in which a mobile app is designed and structured. This includes the different components and modules that make up the app, as well as the relationships and interactions between those components and modules.
A good mobile app architecture is important because it helps to ensure that the app is scalable, maintainable, and easy to develop and test. It also helps to ensure that the app is performant and provides a good user experience.
There are many different approaches to mobile app architecture, and the best approach will depend on the specific requirements and constraints of the app. Some common architectural patterns for mobile apps include the following:
Client-server architecture: In this architecture, the mobile app acts as a client that sends requests to a server over the network. The server processes the requests and sends back responses, which the mobile app then uses to update its user interface.
Layered architecture: In this architecture, the mobile app is divided into different layers, with each layer responsible for a specific set of functionality. For example, the presentation layer might be responsible for the user interface, while the data access layer might be responsible for accessing data from a database.
Model-view-controller (MVC) architecture: In this architecture, the mobile app is divided into three main components: the model, which represents the data and business logic of the app; the view, which represents the user interface of the app; and the controller, which coordinates the interaction between the model and the view.
Overall, the best approach to mobile app architecture will depend on the specific requirements and constraints of the app, as well as the preferences of the development team.
Write a short summary of what problem the article will solve. Use step-by-step instructions to help people solve the issue.
UX Design for Mobile Developers
A mobile app CMS (content management system) is a software platform that is used to manage and publish content for mobile apps. It provides a user-friendly interface that allows non-technical users to create, edit, and publish content for mobile apps without needing to have any coding knowledge.
A mobile app CMS typically includes features such as a content editor, a media library for managing images and other media assets, and tools for managing users and permissions. It may also include integrations with other systems, such as a CRM or e-commerce platform, to allow for easy management of customer data and transactions.
Mobile app CMS platforms can be a useful tool for organizations that need to publish a lot of content for their mobile apps, such as news organizations, e-commerce companies, and educational institutions. By using a mobile app CMS, these organizations can save time and resources and make it easier for their content teams to publish and update content for their mobile apps.
https://medium.com/@dfs.techblog/server-driven-ui-concept-db07d7946e94
Team is your best asset.
API Design Guide https://cloud.google.com/apis/design
https://medium.com/sahibinden-technology/benchmarking-rest-vs-grpc-5d4b34360911
Service Design and Change of Systems: Human-Centered Approaches to Implementing and Spreading Service Design
http://www.ijdesign.org/index.php/IJDesign/article/view/928/348
Without API you cannot build a mobile app. The majority of the application require data from the server.
AWS, Azure, GCP
Firebase, AWS Amplify
Mobile app monitoring is the process of tracking and analyzing various metrics and other data related to a mobile app, in order to identify problems, optimize performance, and improve the user experience.
To perform mobile app monitoring, you will need to use a combination of tools and techniques, including the following:
App analytics: Use app analytics tools to track key metrics such as user acquisition, engagement, retention, and revenue. These tools can help you understand how users are interacting with your app and identify areas for improvement.
Crash reporting: Use crash reporting tools to identify and diagnose any problems or bugs that are causing the app to crash or malfunction. This will help you fix issues quickly and improve the app's stability.
Performance monitoring: Use performance monitoring tools to track the app's performance, including its memory usage, battery consumption, and network usage. This will help you identify any bottlenecks or inefficiencies that are impacting the app's performance.
User feedback: Collect and analyze user feedback through surveys, reviews, or other feedback mechanisms. This will help you understand how users are feeling about the app, and identify any areas where they are having problems or where they would like to see improvements.
Overall, mobile app monitoring is an ongoing process that involves using a variety of tools and techniques to track and analyze the performance and behavior of your app. By regularly monitoring your app, you can identify and fix problems, optimize its performance, and improve the user experience.
Automate, Automate and Automate. Anything you are going more than 2 times, Automate it. No Discussions.
Continuous Integration and Delivery
https://www.mobile.dev/
https://www.coursera.org/learn/uva-darden-continous-delivery-devops
Code Documentation
Static code analyses
Unit Testing
UI Automation
App Publishing
Architecture
A mock server for a mobile app is a simulated version of a server that is used for testing and development purposes. It is typically used to simulate the behavior of a real server without the need for an actual server to be up and running.
The mock server can be used to test various aspects of the mobile app, such as its ability to handle different types of network connections and different types of data input. It can also be used to simulate different server responses, such as error messages or delays, to test how the mobile app handles these scenarios.
There are various tools and frameworks available to create mock servers for mobile apps, such as WireMock, Nock, and json-server. These tools allow developers to easily create and configure a mock server, and can be integrated into the app development workflow.
It can be beneficial in testing the mobile app's functionality and performance in a controlled environment, where developers can easily simulate different scenarios and test the app's behavior without having to rely on an actual server.
https://github.com/abhivaikar/howtheytest/
There are many different key metrics that can be used to measure the success and performance of a mobile app. Some common examples include:
Downloads: The number of times the app has been downloaded from an app store or other online marketplace.
User acquisition: The number of users who have downloaded and installed the app, as well as the rate at which new users are acquired over time.
User engagement: The level of engagement and interaction that users have with the app, including how often they use it, how long they spend using it, and what features they use the most.
User retention: The percentage of users who continue to use the app over time, and the rate at which users are lost or churn.
User satisfaction: The level of satisfaction that users have with the app, as measured through surveys, reviews, or other feedback mechanisms.
Revenue: The amount of money that the app generates through in-app purchases, subscriptions, or other monetization strategies.
Cost per acquisition: The cost of acquiring a new user for the app, including marketing and other expenses.
Overall, these are just a few examples of the many key metrics that can be used to measure the success and performance of a mobile app. The specific metrics that are most important will depend on the goals and objectives of the app and its business model.
Measure Metrics (AARRR)
ACQUISITION - Users downloading the app from play and app stores
ACTIVATION - users enjoying the app - First impression
RETENTION - Users coming back and using the app multiple times
REFERRAL - Users love the app and refer others to download it
REVENUE - Users completing actions on the app that you see monetizing or adding value to the enterprise
Deployment frequency
Lead time for changes
Time to restore service
Change failure rate
To build a mobile library, SDK, or framework, you will need to follow a series of steps that will involve both technical and non-technical tasks. Here is a general overview of the process you might follow:
Identify the purpose and goals of your mobile library, SDK, or framework. This will help you determine the key features and functionality that you want to include, as well as the target audience for your project.
Research existing mobile libraries, SDKs, and frameworks to identify any similar projects that are already available, and determine how your project will be different or unique.
Develop a detailed plan or blueprint for your mobile library, SDK, or framework. This should include information about the user interface, the core functionality, and the technical implementation details.
Begin coding your mobile library, SDK, or framework. This will involve creating the necessary classes, functions, and other code elements that will make up your project.
Test your mobile library, SDK, or framework to ensure that it is working correctly and meeting all of your project's goals and requirements. This will involve both manual testing and automated testing.
Document your mobile library, SDK, or framework, including instructions on how to use it, how to integrate it with other projects, and any known limitations or issues.
Release your mobile library, SDK, or framework to the public, either through an online repository or as a standalone package. This will make it available for other developers to use and build upon.
Overall, building a mobile library, SDK, or framework is a complex process that will require a combination of technical skills, project management skills, and attention to detail. But with careful planning and execution, you can create a valuable tool that will be useful to other mobile app developers.
Here are a few tips to help you decide if you should make something a library/SDK/framework or not.
1. Close more sales
The biggest reason to create a mobile SDK is to help sales and business development staffs close key deals faster. The SDK does this by helping move the process of integrating services along more quickly.
2. Speed up deployment
Time is a critical cost factor because the integration services are performed by mobile engineers with highly valued skill sets. Having an SDK can help them simplify their projects and enable the integration of APIs that require complex use cases that are complemented by standard on-client processing for mobile devices. A SDK greatly simplifies this integration effort.
3. Increase security
Security may be a critical issue. In the case of large ad networks, SDKs are often required in order to reduce programmatic fraud. SDKs can be used to encrypt portions of the user interface (UI) to secure data quality. Mobile payments processing requires PCI compliance and some platforms may have specific requirements for storing passwords, etc. A SDK can help provide that needed security.
4. Reduce bad code & ensure best development practices
Developers are rarely perfect. Even the best can make mistakes. Errors in how data is passed to back end services can cause critical issues and delays that impact the entire business. Inefficient code by a single developer can take down services for across the enterprise. The SDK can go a long way to reducing bad or inefficient code and its impact on critical systems. The right SDK can further insure the right business rules and practices are in place across their entire publisher network.
5. Control over your brand
Control over your brand with the UI of the publisher’s app may be critical to your business. Developers aren't designers; an SDK will allow you to lock down critical portions of the interface while retaining analytics needed to see how the users interact with your service within the publisher’s application.
6. Do you have another place to use the functionality?
Do you have another place to use the functionality. Whether we’re talking about custom widgets in your UI or utilities to help you accomplish certain tasks, it’s important to make sure you have another place to use the functionality before you spend the extra time extracting the code into a library.
If you don’t have another place to use the functionality, don’t worry, just write it for the purpose at hand and you can always extract it later if something else comes up. This also has the added benefit of letting you use it in practice to learn the best way to consume your code.
7. Is there something else out there?
Is there some other open source library that accomplishes what you need? Do your research to make sure you aren’t just reinventing a wheel someone else has created. If you come across a quality library that solves your problem, then you’ve just saved yourself all of the time it would have taken you to write it in the first place.
If you find some open source code that comes close to solving your problem but isn’t quite there, get in touch with the maintainers to see how you can contribute. Perhaps your missing feature is something that they’ve been looking for but haven’t had the time to implement. In that case, the open source community would welcome your contribution.
8. Is the feature truly custom?
Sometimes the feature you’re working on seems like it could be used in many other places, but each implementation is quite different from the last. This type of custom implementation is how us consultancies make it, and shouldn’t be overlooked.
If you were to use a library and would have to customize most parts of the implementation or alter the library code to make it work in different scenarios, then it probably doesn’t make much sense to spend the time making a library out of it.
SDK Best Practices:
1. Easy to use and integrate
2. Performance
3. Consistent Architecture across all Coca-cola SDK 4. Minimum use of resources
5. Maximum compatible
6. Provides own UI
The entire SDK consists of:
The API libraries and their reference documentation
Concepts/Developers Guide
Build/Deploy Guide. Describes how to build an app that uses the API, how to test it, how to deploy it to devices in both test and production. Training: Tutorials/Online Lessons
Sample code
Registration and API Key web site.
Development and Testing tools. This part differentiates an SDK from an API. Developers need tools for analyzing and testing every aspect of their software, including debuggers, performance testers, unit test frameworks, test harnesses, build environments, and (for software that runs on particular devices) test devices or test units.
Mobile SDK - API/Backend Expectations
Pre-requisite
1) Need a API specification which is well defined.
Endpoint(DEV/QA/PROD) Header parameters
Input
Output
Error messages
Sample input and output for testing the Api’s
2) What mechanism will be used for securing API’s? So that someone cannot create bots and overload the api’s.
3) API endpoint follows the rest style if possible. Specially the versioning. It is very important so that Mobile Clients keep working even there is new
release of API available.
4) Naming specification should be same across the all interfaces which are grouped together in SDK. It doesn’t matter which naming convention API team chooses, just need to make sure it is consistent.
5) Unit test – This is optional but hope API team does.
6) Any change in specification contract, should be notified to SDK team and others concerned teams.
7) Define who is responsible for the Test data since Mobile app team needed and it is better to be documented.
8) Make Postman available for the API’s so that the whole team can use the same. This will help save time in troubleshooting.
9) Document the timeline when first version of the specification will be available so that SDK team can start with the implementation.
10) Notify the team when endpoint goes down for maintenance etc.
11) All team members should have kick off in the beginning of the work to have common understanding of the api’s.
API
SDK
Mobile App Client QA if there any.
12) Define working. A working API would be just developed or working with various output like success and failure. This would ensure we can correctly design the API to be exposed from the SDK
Expectations of the current style of work
Rework because of no spec finalization
Changes in API after completion because of no involvement during design phase
Unit test cannot be written if the design is iterative, it will be done only post finalization
Unstable possibly because of no test data to test out the SDK
Time to ship for SDK is different from API because of various steps involved
Not finalized SDK documentation till the time spec are finalized
If SDK team is not involved during design discussion, we would not be accountable for design queries at the later stage.
SDK Development Process
How much SDK team takes to deliver one line of code change when there is a change in Client interface?
Time : Approx takes 8 hours.
How much SDK team takes to deliver when there is a change such as input in Backend API?
Time: 8 hours per platform.
How much SDK team takes to deliver when there is a new Backend API?
Time: 8 hours per platform when design discussion required. If SDK team already have complete understanding of the new api, then it will take 6 hours per platform.
What is in SDK packaging/Delivery?
1. Binaries
2. Dependencies
3. SDK Client interface Documentation
4. How to SDK Integration Guides (Read Me) 5. Sample Application Binary
6. Sample Application source code
7. Unit Test Cases
Steps for Building Mobile SDK
As we are getting into building new SDK's and asking third party developers/agencies to provide us the SDK for Android and iOS. It will be good to provide set of requirements and set the expectations from the beginning.
Requirement gathering
Why we need SDK? What particular problem it solves? How it will benefit the clients? Conduct interviews with business owner and Client app developers.
Review 1. Do we need a Mobile SDK? checklist.
Analysis
Analyse requirements to ensure extensibility and maintainability.
Design
If you are writing new SDK from scratch please discuss with Coca-Cola mobile team for the Client Interface which will be consumed by Mobile apps.
Develop/Implementation Requirements
1. Manager
2. Client Interface
3. Versioning
4. Ability to turn on/off logging
5. Code documentation
6. SDK Documentation should be in format of Java doc or apple style. So that you can run doxygen etc.
7. Ability to change API Endpoint without updating the SDK. There should be method for configuring Endpoint from application.
8. Various OS architecture support
1) Android : Should support all device architectures. 2) iOS:
a. We need FAT/Universal framework(simulator/all device architectures) b. Swift Packages
i. Swift Packages
ii. Creating a Standalone Swift Package
iii. Binary Frameworks as Swift Packages
9. Designed for consuming less runtime memory
10. Internal classes should be marked appropriately.
Unit Test and Code Coverage(75% above)
1. Test cases
2. SDK Interfaces
Delivery
1. Binaries
2. SDK dependencies
3. SDK Documentation
4. How to integrate SDK guide step by step?
5. Sample app binary and source code
6. Packaging options for Android AAR vs JAR
7. Proguard and Obfuscation, provide a list of proguard if it is enabled on sample app.
SDK Release plans/Roadmap
1. Internal vs external
2. How often you release your SDK?
3. How much time it takes a fix a showstopper?
Sample SDK and Sample app
It will be nice to share the sample code with the clients.
Usage of Third Party Libraries
As much as possible avoid the usage of any third party libraries. If required confirm it before using it. Propose why is it required and why it cannot be avoided.
SDK Size
1) Make sure your sdk size is very optimal and no extra assets in the sdk which is temporary.
2) https://github.com/google/cocoapods-size
3) https://github.com/firebase/firebase-android-sdk/tree/master/health-metrics/apk-size#readme
4) https://firebase.google.com/docs/android/sdk-metrics
https://square.github.io/retrofit/
https://github.com/devicekit/DeviceKit
There are many different mobile app frameworks available for building mobile apps. Some of the most popular ones include:
Android: Android is an open-source mobile app framework developed by Google that is used for building apps for Android devices.
iOS: iOS is a proprietary mobile app framework developed by Apple Inc. that is used for building apps for Apple devices, such as the iPhone and iPad.
React Native: React Native is a popular mobile app framework that allows developers to build native apps using the React JavaScript framework.
Flutter: Flutter is an open-source mobile app framework developed by Google that allows developers to build native apps for both Android and iOS using a single codebase.
Xamarin: Xamarin is a cross-platform mobile app framework that allows developers to build native apps for multiple platforms, including Android, iOS, and Windows, using a single codebase.
Each of these frameworks has its own unique features and capabilities, so the best one for you will depend on your specific needs and preferences.
Here are some key differences between some of the most popular mobile app frameworks:
Android vs. iOS: Android and iOS are two of the most popular mobile app frameworks, and they are used for building apps for different types of devices. Android is used for building apps for Android devices, while iOS is used for building apps for Apple devices. One key difference between the two is that Android is an open-source framework, while iOS is a proprietary framework. This means that Android is free to use and developers have more flexibility when building apps with it, while iOS is only available to registered developers and may be more restrictive in terms of what can be built with it.
React Native vs. Flutter: React Native and Flutter are both popular frameworks for building cross-platform mobile apps, which means that they allow developers to build apps that can run on multiple platforms, such as Android and iOS, using a single codebase. One key difference between the two is that React Native uses the React JavaScript framework, while Flutter uses the Dart programming language. This means that developers who are familiar with React may find it easier to use React Native, while those who are familiar with Dart may find it easier to use Flutter.
Xamarin vs. other frameworks: Xamarin is a cross-platform mobile app framework that allows developers to build native apps for multiple platforms using a single codebase. This is similar to React Native and Flutter, but one key difference is that Xamarin uses the C# programming language, while React Native and Flutter use JavaScript and Dart, respectively. This means that developers who are familiar with C# may find it easier to use Xamarin, while those who are familiar with JavaScript or Dart may prefer to use React Native or Flutter.
Ultimately, the best mobile app framework for you will depend on your specific needs and preferences. It is important to consider factors such as the platform you want to build for, the programming languages you are familiar with, and the specific features and capabilities that you need in your app.
React Native vs Flutter
It is difficult to say which mobile app framework is better, as the best one for you will depend on your specific needs and preferences. Both React Native and Flutter are popular frameworks for building cross-platform mobile apps, but they have some key differences that may make one a better fit for your project than the other.
One key difference between the two frameworks is the programming language they use. React Native uses the React JavaScript framework, while Flutter uses the Dart programming language. This means that developers who are familiar with React may find it easier to use React Native, while those who are familiar with Dart may find it easier to use Flutter.
Another key difference is the level of support and community support each framework has. React Native has been around for longer and has a larger community, which means there is a greater wealth of resources and support available for developers who are using it. Flutter, on the other hand, is a newer framework and has a smaller community, which means there may be fewer resources and support available for developers who are using it.
Overall, both React Native and Flutter are powerful tools for building cross-platform mobile apps, and either one could be a good choice for your project. The best approach is to evaluate your specific needs and preferences and choose the framework that best meets those needs.
https://www.sitepoint.com/flutter-vs-react-native/
https://backendless.com/flutter-vs-react-native-which-is-better-in-2023/
Here is a list of engineering blogs of well-known large companies and startups.
Atlassian: https://developer.atlassian.com/blog
Bittorrent: http://engineering.bittorrent.com
Cloudera: https://blog.cloudera.com
Docker: https://blog.docker.com
Dropbox: https://blogs.dropbox.com/tech
Facebook: https://code.facebook.com/posts
GitHub: https://githubengineering.com
Groupon: https://engineering.groupon.com
Highscalability: http://highscalability.com
Instacart: https://tech.instacart.com
Instagram: https://engineering.instagram.com
Linkedin: https://engineering.linkedin.com/blog
Mixpanel: https://mixpanel.com/blog
Netflix: https://medium.com/netflix-techblog
Nextdoor: https://engblog.nextdoor.com
Pinterest: https://engineering.pinterest.com
Reddit: https://redditblog.com
Salesforce: https://developer.salesforce.com/blogs/engineering
Shopify: https://engineering.shopify.com
Slack: https://slack.engineering
Soundcloud: https://developers.soundcloud.com/blog
Spotify: https://labs.spotify.com
System design primer: https://github.com/donnemartin/system-design-primer
Thumbtack: https://www.thumbtack.com/engineering
Uber: http://eng.uber.com
Yahoo: https://yahooeng.tumblr.com
A blueprint is a detailed plan or design that outlines the structure and function of a mobile app. It typically includes information about the app's user interface, navigation, and other key features.
The exact contents of a mobile app blueprint will vary depending on the specific app, but it might include things like:
A description of the app's overall purpose and goals
A list of the app's key features and functions
Screenshots or wireframes of the app's user interface, showing how users will interact with the app
Detailed descriptions of each screen or page in the app, including the content and functionality that will be included
A description of the app's navigation system, including how users will move between different screens and access different features
Information about the app's data storage and retrieval mechanisms, including how it will handle user data and how it will interact with external APIs or services
Any other relevant details, such as performance requirements or technical constraints.
Overall, a mobile app blueprint is a crucial document that helps app developers and designers understand the vision for the app and ensure that it is built in a way that meets the needs of its users.
https://engineering.18f.gov/workflow/
A mature mobile app team is one that has a high level of experience working on similar projects, and is able to efficiently and effectively handle all aspects of app development, from concept to launch and beyond.
There are several key indicators of team maturity that can be used to assess the level of experience and skill within a mobile app team. These include:
The number of years of experience that the team members have working on mobile app projects
The number of successful mobile app projects that the team has completed
The level of specialized expertise that the team members have in different areas of mobile app development, such as user experience design, coding, or project management
The level of collaboration and communication within the team, and the ability of team members to work together effectively
The ability of the team to handle complex challenges and adapt to changing requirements during the app development process.
Overall, a mature mobile app team is one that has a high level of experience, expertise, and efficiency, and is able to deliver high-quality mobile app projects on time and on budget.
Your best friend.
The Goal: A Process of Ongoing Improvement https://www.amazon.com/Goal-Process-Ongoing-Improvement-ebook
https://gist.github.com/rahmonov/d7ea448d377c82096a16638dd1448343
https://methods.18f.gov/
https://github.com/charlax/professional-programming?tab=readme-ov-file#must-read-books
Team is your best asset.
Debugging Teams https://book.debuggingteams.com/#introduction
https://handbook.tts.gsa.gov/18f/how-18f-works/one-on-ones/
https://www.microsoft.com/en-us/research/publication/the-best-of-both-worlds-unlocking-the-potential-of-hybrid-work-for-software-engineers/
https://www.microsoft.com/en-us/research/uploads/prod/2023/05/BestOfBothWorlds.pdf
https://www.microsoft.com/en-us/research/group/developer-experience-lab/
https://www.microsoft.com/en-us/research/group/developer-experience-lab/publications/
https://www.microsoft.com/en-us/research/uploads/prod/2023/03/PICSE-BrittanyJohnson-ICSESEIP2023.pdf
https://queue.acm.org/detail.cfm?id=3595878 What drives developer productivity
https://github.com/kdeldycke/awesome-engineering-team-management
https://blog.pragmaticengineer.com/mobile-platform-teams/
https://circleci.com/blog/what-is-platform-engineering
https://samnewman.io/blog/2023/02/08/dont-call-it-a-platform/
https://circleci.com/blog/platform-engineering-devops-at-scale/
https://www.gartner.com/en/articles/what-is-platform-engineering
https://platformengineering.org/blog/what-is-platform-engineering
https://bytebytego.com/courses/system-design-interview/foreword
https://www.designgurus.io/course/grokking-the-system-design-interview
At any level, it’s important for a mobile app developer to be:
Patient
Flexible
Organized
Self-driven
Able to communicate well
Able to work well under pressure
Once you grow in size — customers, engineers, codebase, and features — everything becomes more complex, more bloated, and harder to understand and modify, including the mobile codebase.
https://engineering.teknasyon.com/modularization-of-mobile-applications-at-scale-df57815ff19a
How to grow from a developer to a Mobile Engineering manager.
https://www.mobileatscale.com/growing.html
Observability in the context of software systems refers to the ability to gain insights and understand the internal state and behavior of the system by analyzing its outputs or external signals. It involves collecting, analyzing, and visualizing various metrics, logs, and traces to gain a comprehensive understanding of how the system is performing, identify issues, and facilitate effective troubleshooting.
Observability goes beyond traditional monitoring, which typically focuses on basic health checks and availability. Instead, it emphasizes understanding the system's internals, including its interactions, dependencies, and performance characteristics. It helps answer questions like "What is happening inside the system?", "Why is it happening?", and "How can we improve it?".
The key pillars of observability include:
1. Metrics: Collecting and analyzing quantitative data about the system's behavior and performance. This may include CPU and memory utilization, response times, error rates, and throughput. Metrics provide a high-level view of the system's health and performance over time.
2. Logs: Capturing and analyzing detailed event-level information generated by the system. Logs provide a chronological record of actions, errors, and other important events within the system. They are useful for debugging issues, understanding user behavior, and tracking system activities.
3. Traces: Tracing the path of individual requests or transactions as they flow through the system. Traces capture detailed information about the latency and execution flow of each request, helping to identify bottlenecks and performance issues across different components.
4. Distributed Tracing: Extending trace information across multiple services or microservices in a distributed system. Distributed tracing helps in understanding the end-to-end flow of requests, identifying dependencies, and pinpointing performance problems within a distributed architecture.
Observability often involves leveraging tools and technologies such as monitoring systems, log aggregators, time-series databases, distributed tracing frameworks, and visualization tools. These tools assist in collecting, storing, analyzing, and presenting the data in a meaningful and actionable manner.
By implementing observability practices, software teams can gain valuable insights into system behavior, proactively identify and address issues, optimize performance, and enhance the overall reliability and user experience of their applications.
App Check helps protect your API resources from abuse by preventing unauthorized clients from accessing your backend resources
https://firebase.google.com/docs/app-check
From Technical Debt to Technical Health with HealthCheck
https://mikaelvesavuori.medium.com/from-technical-debt-to-technical-health-with-healthcheck-3e7fdc132f58
https://youtu.be/dP8NmcEkxJI
https://blog.planview.com/how-the-flow-framework-maximizes-your-wins-from-safe/
https://truestimates.pressbin.com/
Team is your best asset.
https://handbook.tts.gsa.gov/18f/how-18f-works/one-on-ones/
Always be ready with the latest resume in your hand!!!
https://github.com/yangshun/tech-interview-handbook
Be ready with your own technical roadmap
https://radar.thoughtworks.com/
https://www.thoughtworks.com/radar/byor