Stakeholders and Goals
We will start our job with identifying all stakeholders we can. Then, depending on how close to the project they are, we will get to know them and find out their goals.
A stakeholder is someone, either an individual or a group of people, that has either some interest in our project, or some concern about it.
This is a major part of our work, as stakeholder's objectives will be our requirements and constraints, or at the very least, should we compromise not to pursue some, we will know which, why and what impact it will have.
Stakeholder list
Here is what I came up with. Feel free to add yours, and send me feedback if I missed some.
-
Users
- End users: people who will use Cryptomate for their daily trading.
- Dev users: people who will use the Cryptomate engine to build trading tools.
-
Team
- Developers: us, when working on Cryptomate.
-
Third Parties
- Market data providers: run services we will extract data from. For simplicity, we will groups the diverse stakeholders (shareholders and teams) under a single group.
- Trading platforms: run the platforms Cryptomate will place orders on. For simplicity, we will also groups the diverse stakeholders (shareholders and teams) under a single group.
- Regulation authorities: many countries impose obligations and restrictions on products that involve financial services such as automated trading tools.
-
Other
- Management: well, that's us too in this project.
Business goals
I did interview a couple of prospective users, both end users and dev users. For management and developer roles, I will be answering as myself. And for third parties, I will make educated guesses based on my knowledge of the domain and online resources.
End user A
Main driver: wants to increase his wealth through trading.
Goals
- A wants to have the ability to resume running previous strategies when starting cryptomate, because he doesn't want to have to track positions when he reboots his computer.
- A wants to have a way to see all open positions at a glance, because he wants to feel in control of his money.
- A wants to define his strategies without having to know programming or other technical stuff, because that is not his thing.
- A wants Cryptomate to be well documented and intuitive, because he is busy and cannot spare too much time learning new tools.
- A wants to have feedback on his strategies, across multiple securities, so he can optimize them.
- A wants to get reports of Cryptomate orders so he can cross-check them with his broker and use them for legal processes.
- A wants a fast way to stop all running strategies and close open positions, so he can cut losses should a bug or a bad strategy occur.
Worst that could happen?
A bug in Cryptomate triggering uncontrolled positions.
End user B
Main driver: wants to increase his wealth through trading.
Goals
- B wants to have the ability to write his own indicators, because he likes to fine-tune his strategies.
- B wants to write strategies using code, because he is familiar with programming and it allows expressing more complex strategies with ease.
- B wants to have cross-market strategies, because he often trades correlated markets and wants to take advantage of that correlation.
- B wants to be able to submit strategies, start and stop them programmatically because he likes to automate his activities through scripting.
- B wants Cryptomate to send out notifications to a message broker, because he has his own desktop event management he wants to feed them into.
Worst that could happen?
Getting credentials stolen or abused, and used to buy into a pump&dump scheme.
Dev users
Main driver: wants to increase his wealth by selling trading tools.
Goals
- Wants the documentation to be accurate and thorough, so he does not waste his time while using the API.
- Wants Cryptomate to provide meaningful errors and debugging output, so he does not waste his time while using the API, and has relevant data when investigating bug reports.
- Wants interactions to use market standards, so he has a broad choice of tools and architecture to design his own solutions.
- Wants the engine to be able to run strategies independently, because he wants to share engine instances across many customers.
- Wants strategy to be self-contained so he can let users easily share strategies among themselves.
- Wants the engine to allow horizontal scaling, so he can support a large number of customers with limited hardware costs.
- Wants to allow users to add custom (untrusted) indicators without compromising the tool.
Worst that could happen?
Running into bugs or hidden limitations with Cryptomate after committing a large amount of resources into a project.
Developers
That's me.
Main driver: wants a cool subject to write about on his blog.
Goals
- Wants to minimize development costs (time).
- Wants to emphasize code quality so as to minimize support and maintenance costs.
- Wants to demonstrate key software architecture concepts and key code concepts for his website, by showing how they are useful in a real-world software product.
- Wants to have fun designing a cool project, and build professional recognition on a trendy subject.
Worst that could happen?
Low quality product that would give him bad press.
Market data providers
Main driver: make money, either through paid-for data access or through trading fees.
Goals
- Want Cryptomate to follow their policies, so it does not affect their platform's availability and reliability in a bad way.
Trading platforms
Main driver: make money through trading fees.
Goals
- Want Cryptomate to follow their policies, so it does not affect their platform's availability and reliability in a bad way.
- Want Cryptomate to protect their customers so they do not get indirect bad press or loose paying customers because of a security breach in Cryptomate.
Financial authorities
Main driver: protect users from scams and majors losses due to ignorance.
To be honest, I would need advice from several lawyers for those, specializing in different juridictions. I cannot afford that on an illustrative project, so there is a high risk this will lack goals.
Goals
- Want to ensure end users are warned of the risks of trading before engaging with the markets.
Management
That's me again.
Main driver: increase visibility of his website.
Goals
- Wants Cryptomate to gain some traction, because that will give legitimacy to articles about it.
- Wants the architecture to be cleanly modularized so modules can be the focus of dedicated articles.
- Wants the project to be open source, because he would like a community to form around it.
Worst that could happen?
Low quality product that would give him bad press.
Conclusion
We now have a clear view of who Cryptomate will affect and why they care. We know what they expect from our solution. In the next post, we will translate those objectives into functional requirements and quality attributes.