I just developed my first non-trivial android app. It was a complete nightmare. I came up with an idea, build the app, changed my idea, and implemented a lot of input from others on new features. All in all my app took 10 times longer than I think that it should have, it is almost impossible to look the source code and tell what’s going on with the classes, and may or may not have unused methods that I’ll never be able to find…
So I would like an opinion from those of you with experience on how to plan out my designs for the future. I created a flow chart (pencil drawn) of a plan:
I would like constructive criticism.
The biggest step you’re missing is a refactor step. As soon as you don’t use a method anymore, delete it. As soon as you can’t follow the flow of a class, refactor it. The first time you have to figure out again why you did something a certain way, document it. Always be on the lookout for opportunities to improve the code, and take them before it gets out of hand. It will save you time in the long run.
2
What you have experienced is quite normal. The estimations when you are a junior developer (based on your text I assume this) differs largely from a good and experienced senior developer. A senior developer will find pitfalls already in architecture phase of a project and takes this into accountance in his estimation.
Next point you mentioned is that a project with a new technology will take more time than a project where there technology is already known.
Next is refactoring. As Karl already mentioned refactoring is needed. For your question about how often must be refactored: Refactor the application when it is needed (the code smells). I personally refactor about one third (more or less) of the time. And I do this immediately if it is needed.
I hope that this insights help you (at least with your next project).
2