I developed too many software projects including websites, Android apps and desktop programs. I used different ways to create software; sometimes I use a spec sheet with all features and technologies of the software, or following the techlead, or even copying the same software another company created, .. etc.
I think the best way to develop your own software is to consider your own experience. Think how you want to use this software? which is the easiest way to use this software? Is it really easy to use or not? Is it useful to you? Is it accurate in the job it supposed to do?
After thinking, re-iterate the idea, implementation and design to best suit your user experience (UX). If you can call your project a easy to use, funny to use, accurate and suitable for its job then you can share it publicly and publish it marketing it for all targeted audience.
That is what I learned when I developed OCRit app. OCRit is an Android application which help users convert image to text using OCR technology. I needed it to be offline, so I made it so. I wanted it to be accurate, so I iterate until achieving the 98% accuracy. I wanted it to be less than 5 Megabytes, so I made it less than 2 Megabytes in size. I wanted it to be efficient and performant, so I re-architect the app to perform well. I want it to work on all my Android smartphones, so I make it work on all Android versions from Android 4 to Android 10.
I will use this simple iteration method to improve all my own software projects with my own user experience. Because people loved all my software projects which I made using my own user experience technique.
If you are interested, give me your feedback on this OCRit Android app.