This document defines the target audience and user persona for the NeoHaskell project.
The definition of this target audience and user persona is intended to guide the design and development of the NeoHaskell project. It is not intended to be a strict definition of who can or cannot use the NeoHaskell project, only a guide to help the project team make decisions. Everyone is welcome to use NeoHaskell, regardless of whether they fit the target audience or user persona.
If a user doesn't fit the target audience that doesn't mean that they shouldn't use NeoHaskell, it just means that the design process and showcasing process won't be prioritizing them.
The target audience of NeoHaskell are developers who have a maker/hacker philosophy, who are comfortable with a statically typed mainstream language like TypeScript or Java, and who are interested in developing a project as fast as possible to test an idea or prototype a product, even if they aren't the most experienced software developers. They are not interested in spending a lot of time learning a new programming language in-depth, they are not interested in learning software architecture in-depth, and they are not interested in spending a lot of time learning a new framework.
They are interested in learning new things, as long as those are steps in the direction of their goal. They are willing to learn a new programming language, as long as they can start writing code in a few hours. They are willing to learn a new framework, as long as they can start using it in a few hours. They are willing to learn a new architecture, as long as they can start using it in a few hours.
These are not interested in having a perfect code quality from the beginning, so they won't be investing time in thoroughly testing their code, regardless of the testing methodology. And although they do not know it, they value working in a domain-driven way.
They will probably be interested in learning more about the programming language, the framework, and the architecture, but only after they have a working prototype of their project.
They don't have enough time to spend on their projects, probably because they have a full-time job, or they are students, or they have a family, or they have other hobbies. So they prefer a command line tool that does everything for them, instead of having to research the different tools for their technology stack, and then having to configure them to work together.
Who's not the target audience
Well-seasoned developers who have experience either in Haskell or in functional programming in general, and who are looking to apply concepts well-established in the functional world.
Users who are interested in type theory, category theory, programming language theory, and other advanced topics in computer science.
Again, if a user doesn't fit the target audience doesn't mean that they shouldn't use NeoHaskell, it just means that the design process and showcasing process won't be prioritizing them.
- Name: Jess
- Role: Junior Software Developer
Actions, Motivations, and Pains
- What do I do?
- Work full-time as a software developer in a TypeScript software shop.
- In the evenings and weekends I try to build up my portfolio by working on side projects.
- Learning good practices, patterns, and technologies that act as leverage for my learning process.
- Why do I do it?
- I want to improve my skills as a software developer.
- Having a good portfolio will help me get a better job.
- One of my projects might become a startup.
- What do I want?
- I want to build a project as fast as possible.
- I want to have negotiation power by mentioning skills that are relevant in the market, regardless of the technology stack.
- I want to have fun while learning.
- What's stopping me?
- There are a lot of things to learn, and I don't know where to start.
- Many times, existing tools have so many pitfalls that I end up spending more time fixing them than actually working on my project, which is frustrating.
- I don't have enough experience to reason too much about all the side-effects that are happening under the hoods, that make my code behave in unexpected ways. This leads to a lot of frustration, and I end up thinking that I'm not good enough to be a software developer.
- What convinces me?
- Having good documentation that explains the concepts that I need to know.
- Having recipes and precise instructions on the steps I need to follow to achieve my goals.
- Being able to understand the code that I'm looking at.
- Success stories of other people of my skill level who have achieved similar goals as mine.
- What or who informs me?
- Friends and colleagues
- Where am I?
- At home
- At a coffee shop
- On public transportation
- What's my day to day?
- One hour commute to and from work
- Attend daily standup meetings
- Work on my assigned tasks
- Have to do groceries and other chores after work
- Spend time with my family
- If there's time left, work on my side projects
Here we describe the target audience and user persona for NeoHaskell. All the design and development decisions will be made with this target audience and user persona in mind.
We will try to make the project as accessible as possible for these kinds of users. So they can enjoy even the last 15 minutes of the day, where they have time to work on their side projects.