Where I’m at
What happened in the last week?
Again - Outsystems has fooled me. Too expensive. I thought there’s a magic bullet out there but it’s not.
A week spent on trying to figure out what looked is too good to be true really.
What I learnt
Planning & Requirements
You’ve got a good handle on the features and the long-term vision of your project. Keeping these in a documented form is always beneficial. Remember, having many features isn’t a problem; it’s about prioritizing them. Start small, build a core feature set, and then expand based on user feedback and necessity.
Development Environment & Project Structure
It seems like you’ve set this up, which is great. Regularly push your work to a version control system like Git to ensure you have backups and can track changes.
Backend Decision
Firebase is an excellent choice for many reasons:
- Quick Setup: Firebase offers many services out-of-the-box, such as authentication, Firestore (database), storage, etc.
- Scalability: It scales as your user base grows.
- Integrations: Many Flutter packages are available to integrate Firebase services.
State Management: GetX
You’re considering GetX, which is known for its simplicity. Start with it, and as you become comfortable, you can decide to stick with it or explore other options.
UI/UX Development
For the parts you’re struggling with:
- Sketches/Mockups: If you’re unsure about any UI logic, annotate your sketches. For instance, if a button should lead to another screen when pressed, make a note. If a field should display dynamic data, indicate what that data might be.
- Logic Decisions: Building logic is iterative. Begin with the basic functionality, and you’ll find that the logic will evolve as you develop. Don’t worry about optimizing everything right away. First, make it work, then make it better.
Testing
It’s essential to know that you don’t have to write tests for every line of code. Focus on:
- Critical Path: The core functionalities that your app can’t do without.
- Regression: After you fix a bug, write a test to ensure it doesn’t happen again.
For learning:
- Unit Testing: The official Flutter documentation is a good starting point.
- Debugging: Learn about using breakpoints in your IDE, which can help you understand the flow of your program and diagnose issues.
Optimization vs. Development
A common principle in software development is: “Make it work, make it right, make it fast.”
- First, focus on making your feature work, even if it’s not the most optimal or clean.
- Once it’s working, you can refactor and clean up.
- Lastly, optimize if you find any performance issues.
Deployment
If you’re looking for internal business distribution for iOS apps, consider using Apple’s Enterprise Program. For Android, consider using Managed Google Play.
Feedback & Iteration
Having a feedback mechanism is excellent. This will be invaluable as you continue to develop and refine your app.
Mindset & Focus
Given the vastness of your project, it’s essential to break it down. Focus on one feature or a subset of features. Develop them to completion, then move to the next. Celebrate small victories, as they’ll keep you motivated. Lastly, remember that every developer, regardless of experience, faces challenges. It’s part of the growth process. It’s okay to feel overwhelmed, but don’t let it deter you. Seek help when needed, and remember to enjoy the journey of building something new!
Remember all of that!
Might be worth saving this to the key wisdom.
Using Draw.io is a good resource for sketch-ups including logic points
Surprised how much it’s clarified the requirements of the application.
It’s helped to break things down more clearly, and understand what information I want and need displayed.