I starting an projects which will use Agile approach, I am creating my road map, the first release with its features. The things is that an app that that one of the developers created by himself already has some of the features required, this was before this whole project was formalized and I was assigned as PM. I know this is an advantage, since part of the scope for the first release is already done, but how do I implement he work already done with this release, should I create my release around the existence of this tool or create my features and user stories as if the app is non-existent and based of this mark as done what is already done?
To determine which approach to use you need to dig into the implemented product architecture (not by yourself but with the team) and try to map its relevance with product's roadmap.
In case you understand that architecture and technologies used for the implementation are still relevant for the further product growth:
should I create my release around the existence
Yes, you need to cover only work to be done in your plan from the place you are currently standing (functionality that is already implemented)
create my features and user stories as if the app is non-existent and based of this mark as done what is already done?
There is no value of doing that as far as it won't change anything around product/project. It's already happened.
In case current implementation approach is not an option for the product progression it could be effort-cheaper to start with the new solution to comply with future changes/new features. Yes, you will lose some time at the initial phase, but it'll be worth it.
Agile is an approach to doing development that has a number of values such as responding to change over following a plan.
It doesn't define how you do your release plans or how you handle product scope. As such, I don't think you will find a definitive 'Agile' answer to your question.
My suggestion would be to evaluate the benefits and disadvantages of both approaches.
For example, creating a release around the existing tool might:
- Save time by using existing code
- Help you to get early feedback by showing your customers what has been done already
- Allow you to leverage the technology used in the existing code to speed up your development
Alternatively, you may decide to ignore the existing tool if:
- The quality of the existing tool is low and so a lot of re-work may be needed
- The technologies or architecture used in the existing tool is not what you plan for the new product