Coding MBTI
Requirements and Specification Document
09/21/2020, version 1.0.
Project Abstract
Coding MBTI is web service from which users can get a chance to inspect their code, get insight on their coding habit and level compared to others and construct their personalized strategy to empower coding skills. Coding MBTI gives users the exact coordinates of their coding habit among many other coders around the world and next coordinates to improve their code. To achieve that goal, our software will give 3 main experiences to our users.
- Coding MBTI test, which tells what kind of coding style each user has using ML techniques based on 4 core criteria we’ve made.
- Personalized Report, which gives thorough analysis based on result of MBTI test.
- Matching System, which recommends coders who has different style, similar style, or better quality using the information from each user’s Personalized Report.
Coding MBTI collects and saves every small data which is made from user’s MBTI test or just problem solving. And It analyzes those data and visualizes them by providing Personalized Report to each user. Personalized Report includes better solution to each problem. Users will be able to check their coding levels or styles among other users from Personalized Report. Based on that, Coding MBTI could also help people who want to make a team, find a tutor, mentor, hire an employee, or find a friend. It would give them a recommendation that is suitable for their need.
Customer
General users of Coding MBTI would be people who need tools to get insight including code writing style and habit compare to others or just for fun. And specific users of Coding MBTI would be people who want to make a team, find a tutor, mentor, hire an employee, or find a friend.
Competitive Landscape
Coding MBTI would look like problem solving websites that is already exists, in a way. But what is discriminated from them is as follows.
More personalized
It collects and saves every small data. When user does Coding MBTI, it’s going to monitor user’s action. For instance, keyboard input counts, problem solving time, how complexity caring he is, coding style or habit. Some of them might need appropriate preprocessing procedure to have that meaning. It visualized those preprocessed and analyzed data in Personalized Report. Based on each user’s Personalized Report, it not only shows information about in which part they are weak to or good at, but also shows better personalized solution with enough explanation on how better it is, and why it is better. And it also recommends problem set that is appropriate to that user's level.
Providing people matching
It recommends people out of user’s Personalized Report and their objective. For example, for user who want to find a mentor, our matching system will recommend people who is way better than that user in many MBTI aspects. And if someone want to make a team for specific task, she might want to find someone who has similar code writing styles to her. It will be able to give perfect recommendation list of people based on user’s need and their MBTI result.
More interactive
It provides private message service, so that our users can easily get in touch with people with whom they want to be a friend, mentor, or team. It also provides public post service, so that our users share their answer, share their opinion, find people, or get some tips.
User Stories
User Account
Sign Up
As a user of coding mbti service
I want to sign up
So that I can use this service
Feature
Coding on Website - Sprint 1
Check error
As a junior coder
I want to check there is no error in my code in web
So that I can easily write code in web
Feature : Users can check error of their code in web
Scenario
1. Code without error
-
User type some code in web and check whether there is error in code
-
If there is no error in code, user receives success response
Acceptance test
Given user's code
def printa(a):
print(a)
And user has privileges to use our service
When user asks to check compile error in code
Then service response with logs
All right
2. Code with error
-
User type some code in web and check whether there is compile error in code
-
If there is some compile error in code, user receives compile erorr logs
Acceptance test
Given user's code
def printa(a):
print(b)
And user has privileges to use our service
When user asks to check compile error in code
Then service response with logs
E: 2, 7: Undefined variable 'b' (undefined-variable)
Check result
As a junior coder
I want to know my code outputs correct answer for problem in web
So that I can check my code
Learn another solutions
As a junior coder
I want to know another answer of my code
So that I can learn another way to solve problem
Feature: Users can see another solution for same problem
Scenario
1. Find another solution
- User type some code in web and submit
- If code is correct, user can see another type of solutions for that problem
Acceptance test
Given user's code,
When user submit code to problem
And code's output is correct
Then service respose with another type of solutions
Improve my code
As a junior coder
I want to know statistics analysis of my codes
So that I can get motivation for good code
Feature: User can check own coding style statistically
Scenario
1. Check line of code for problem
- User retrieve information about submitted code
- In information, user can see line of code in all solutions for that problem
- User can update own submission to get more simple code
Acceptance test
Given user information,
When user want to receive statistical information about code
And user's submitted code is correct
Then service response with information about line of code in that problem
2. Check another type of coding styles.
- User retrieve information about submitted code
- In information, user can see type of coding styles with proportion
- User can update own submission to adjust kind of design patterns
Acceptance test
Given user information,
When user want to receive statistical information about code
And user's submitted code is correct
Then service response clusterized coding style categories and proportion
Find teammates
As a student
I want to know people of the same coding style as me
So that I can meet up and team togther with them
Feature: User can meet people with same coding style
Scenario
1. Find teammates for group assignments
- User finish coding mbti test for classfiy own coding style
- User can see list of people with same coding style
- User can contact people via private message and group message
Acceptance test
Given user's coding style
When user want to check people with same coding style
Then service response people list with same coding style
Analyze all users coding style
As a researcher
I want to proportion of each type of coding style
So that I can overview people's coding style.
Feature: Our service made database for coding style for researcher
Scenario
1. Analyze coding style
1. Researcher want to get some data for junior coders' coding style
2. Researcher request with credential for research
3. Service response with clusterized coding style data
Acceptance test
Given research credential
When researcher request get database of coding style
Service response with coding style database
User Interface Requirements