Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Java Data Structures!
You have completed Java Data Structures!
Preview
Let's think through the next project by defining the MVP, or Minimum Viable Product.
Resources
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Okay, now
let's put these new skills to the test.
0:05
I was trying to think of a project
we can walk through together
0:08
to show off your new superpowers
one night.
0:10
And then I ran into an old friend, Joe,
who used to host karaoke
0:13
at a place that I used to frequent.
0:17
And voila,
there it was, right in front of me.
0:19
There are a couple of books of songs
to choose from,
0:21
broken down in group by artist
and another one by title.
0:24
There's also a queue of upcoming songs.
0:28
It sure smelled a lot
the collection's framework to me.
0:31
I went looking afterwards on YouTube
and found that there's a ton
0:34
of karaoke videos available,
so we have all the data we need.
0:37
All we need to do
now is curate some great songs
0:41
and provide a way for people
to choose their own songs.
0:44
And we can do that karaoke
from the comfort of our own homes.
0:47
I did a quick brainstorm
and thought through what
0:51
I believe to be the quickest way
we could get there.
0:53
I added some user stories
and popped them on a Trello board
0:56
So let go define our karaoke MVP,
1:00
and that's Minimum Viable Product
not Most Valuable Player. Ready? Let's go!
1:03
In case you didn't know,
1:09
a Minimum Viable Product
or MVP is the product
1:10
with the highest return on investment
versus the risk.
1:14
Check the teacher's notes below
for more on MVPs.
1:18
So we wanted to find
just the core features here
1:21
to get our karaoke machine up and running
and nothing more.
1:23
What this allows us to do is release early
and then iterate and release often.
1:27
So here's a Trello board,
and I've added some user stories.
1:32
And user stories are in the format of,
as a (type of user),
1:36
I want (some goal), so that (some reason).
1:40
By following this pattern, we can
succinctly define who the feature is for,
1:44
what it's trying to accomplish,
and why it's important to work on.
1:48
So there are three types of users
that I can see here.
1:52
First, there's the singer,
who will sing the songs.
1:55
And secondly, there's a karaoke jockey,
which you might not have known.
1:58
I didn't really know that was a term either,
Also known as a KJ. They're my old friend Joe.
2:02
They're the ones who are calling up
2:08
the people to sing when it's their turn
and encouraging them to sing. Then finally,
2:09
the last person is the admin, the person
who will add the songs to these things.
2:14
So it's possible
that the karaoke jockey is the admin,
2:18
but we want to kind of separate
that logic.
2:21
Okay, so let's take a look
at some of these stories.
2:24
So this first one here.
2:26
As an admin,
I can add a new song so that songs
2:27
that are wanted by
singers are available, right?
2:30
There's nothing like a bad karaoke list.
2:33
No kiss from a rose? I'm out of here.
2:36
So we need to be able to add songs
to this.
2:39
As a singer,
2:42
I should be able to browse the songs
by artist so that I know what's available.
2:43
That makes sense.
2:47
If you want to sing,
you want to find the right artist.
2:48
Artists
there being the performer of the song.
2:51
As a singer,
I should be able to choose a song
2:54
and place it in a queue
so that I have the opportunity to sing.
2:56
Wouldn't be much of a karaoke machine
if we didn't do that one for him.
3:00
As an admin I should be able to save
the songs that have been entered
3:04
so that I do not need to recreate it
every time. That's important right?
3:07
Every time you start this application up
we don't want to have to add
3:11
every single song that's going
to be an option for the singers.
3:14
That's kind of ridiculous.
So let's allow it to be saved.
3:17
And then finally, as a karaoke jockey, or KJ,
3:21
I should be able to call out the next song
in the queue to sing,
3:25
and the video should be available
so that karaoke occurs.
3:28
I think that
3:32
with this core set of features,
we should be able to have a lot of fun.
3:32
Now, I did a quick look
at some of the available self-standing
3:36
karaoke machines that were out there,
and I looked at their user interface.
3:39
I think with these stories,
we can definitely emulate them.
3:43
Remember, the point is not to write this
and imagine it as being done.
3:46
The point is to get this
into the hands of our users, our singers,
3:51
our admins, and most importantly, our KJs.
3:54
And we want to see what they want
and how they want to make our program
3:57
the best karaoke experience
that they've ever had.
4:01
I guarantee you,
we can always think of features
4:04
and assume all sorts of things
that our users might possibly want.
4:06
But wouldn't it be better to be able
to validate our assumptions
4:10
with actual users?
4:13
Alright, let's get building.
4:15
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up