What I Wish I Knew as a Fresher about Building iOS App From Scratch
My experience as a fresher was not a walk on the red carpet it was different, I was put in the position to do Hotfixes, Integrations, Conversion projects and whatnot starting new projects from scratch. Looking back now I felt overwhelmed by how people trusted me and I'm grateful for the opportunities I got as a fresher.
So I decided to help out or maybe give some confidence to freshers or anyone who is struggling to build an app from scratch.
- Understand the Domain and existing apps that are available in the market and be a consumer of them. This gives you a consumer perspective.
- Go through the document/ If they didn’t make it, Push them for a requirement Docs.
- Brainstorm with the team to understand their ideas, once done do mind mapping and come to a common conclusion.
As this blog is dedicated to iOS, I’m cutting off to iOS Side, If you want for other tech stacks, feel free to comment and will make a blog for sure.
So what a mobile developer should focus on?
- Review the design: Get an Invision and mock it in an app to understand the flow and possibility in iOS. Ask for theme support and build based on that. (Take care of notch, Theme, orientations and Device support).
- Choose the Architecture: Your app should be scalable and needs to be faster and cleaner in future developments too.
- API: Most projects kick off at the same time so you may not have access to it, I suggest making API work first so the delay can be avoided. Build your contracts, and review them. Never agree to a localhost review. Try in staging/ dev environment.
- Certificates/Profiles: Get all development certificates from clients and provisioning profiles and check you have access to testFlight. Also, get the minimum target version from the client
- Choose a Theme: The theme or colour code must be a common component and should be able to change the entire theme in one single change. (Cuz that’s what clients do at end of each sprint)
- Common Components: Try to make components so they can be re-usable and expanded in future.
- Module Based: Build a Module based application so it can be scaled in future and is loosely coupled from a high level and tightly coupled from a low level.
- TestCases: Not every company can follow TDD (Test Driven Development), but I suggest adding Unit test cases at least. Make sure to add story points covering that.
- Appstore Guidelines: Learn Appstore Guidelines and don’t complicate it by doing anything that affects it. It may lead to app rejection and extended-release.
- Identify Frameworks: You can use pods/Carthage or SPM but be clear with what can be used and try to make it simpler and don't add pods for simple things that can be achieved by you.
- Languages: Ask what are languages the app has to support and I suggest the use of localizable.
- Analytics: Check which analytics and Crashlytics are you going to use and get access to it. If they are not suggested to use it.
- Git: Setup your git account and repo ready with gitIgnore and readme and follow the practices of branching and PR.
- Iterations: Never go for the current Iteration. Build deliverables in T minus delivery date.
- Never compare: Don't ever compare the delivery time/Story points of android and iOS and don't let anyone do that too. Each has different complications and answers this straightforward No.
Questions for Client when your in the inception or discovery calls :
- If there is a previous version of project, Ask for hands on experience of existing App and do it before project kickoff.
- Ask about delivery cycle, what happens if we didn’t deliver on time in sprint wise because not all clients would chill on progress few expects results too in shorter time.
- Enquire about the process we are going to follow in this project like Ways of working, Working hours and how are we gonna compensate on it.
- What are the code practices the client company is following and what ‘s the expectation from us
- Ask if your company does pair Programming / TDD, If yes how are we going to manage the delivery on time
- Ask about Architecture, Use case diagram of the existing app before we kick off the project, also a KT would be good if they wish to have a high level understanding of the project.
- Is there a separate time allotted for building the base of the project or do they have a starter app that we can use.
- Ask for shadowing with client developers to understand the way they are working.
Follow me on other social networks too.
LinkedIn: https://www.linkedin.com/in/shreethaanu-raveendran-7a6275b2/
Github : https://github.com/shreethaanu
Instagram : https://www.instagram.com/shreethaanu_blogs/
Portfolio : https://strlabz.com
Patreon : https://www.patreon.com/shreethaanu
If you like my post and wanna see more support me ☕️