The system "PinMap" is a mobile application that allows users to specify certain locations by adding pins on the map with comments on it. People can also specifically set the type of the location by simply choosing a category for that location. This application lets users to share their pins to other people. Sharing level is separated into three categories, which are everybody, friends from phone book contact, and the users themselves. By setting up the sharing level, users can control which pins they would like to share to the public, and which pins are for their personal information. The category that mentioned above is very useful for searching. We have two types of searching: simple search and advance search. In simple search, users just have to enter the name of the location, or sometimes even the keywords of the location, then the application will look from the database and pull out all the locations that match the input query. When doing an advance search, the name of the location, category and sharing level are the required input for the query, and then the system will look into database and pull out the exact location. In both searches, if nothing is found, the system will simply return nothing to the users.
The purpose of this experiment is to determine how well a user can perform tasks in the real physical application compare to lo-fi prototype. After working with the lo-fi prototype, we had some wonderful opinions from the testers and we did notice some problems while doing the testing. We then took those opinions and observed problems into discussion, and we tried to improve it. Now, this application still maintain the functions that we want to implement with a more user friendly looking and design of process.
Implementation and Improvements
We had a big change in our program. Back to the day when interactive prototype was presented, the location of the pin was created as a java object when it was created. This java object stores the title of the location, it comment, and its sharing level. Then in the program, we had an array to store these java objects. One good thing about it was since we were the one who created the object, it was very easy for us to check each value within the object. At the debugging point of view, it saved us lots of time from debugging because we could easily found out where the bugs were. Unfortunately, this kind of data structure also bought us inefficient result and nightmare! The first problem was when user kept inputting pins into the system, the size of the array kept on growing, and it took a long time to search for a specific location since it had to search through the entire array. The second problem was since the data was stored in an array, and we couldn't figure out how to create a log file to save all the information like title, comments and sharing level for this objects, all pins will be disappeared and deleted on our map and database after the user exits the system. It turns out to be not very efficient because if I am a user, of course I don't like to have all be data and pins suddenly deleted without any warning or notice. And it will make the user feels un-secure to use our program.
To fix this problem, we actually implemented SQL and redone the whole programming structure. We are now changing our storage type from using array to database. The locations are now stored as rows in the database. Because of this change, we had to modify all the functions that had to deal with the array. We also had to create new java files to work with SQL in order to search for specific pins in the database. Although there were so many work to do to change the data type, we solved our problem of losing the information of the pin objects after users exit the application. It is because all the pins are stored in database right after they are created or modified, and the database is automatically stored inside the phone, so we don't have to deal with any problem like how to load in a log file when the emulator first start. To look for a specific location from database, all we have to do is to pass in a query into SQL, and it will return a result after doing a database search. Therefore, the change of the code in the searching function is not very complicated. After the big change, we definitely have a great improvement on our database system. Not only we have a giant nice uniform database for all the pins but also reduce the time of searching on pins from the database.
Another big change in our application was using the dynamic map. During the demonstration, many groups had first start to use dynamic map for their GPS search in the emulator. However, we were just simply using a picture of the city of Berkeley and store it as a background for our GPS system. The problem was we never get to any location that is beyond the boundary of that "map". The pins were only allow to set in whatever area users see on the screen. This is a problem for causing limitation on pinning locations, and some of the people also suggested us to change the map from a background to dynamic in the review form after the demonstration. Right now we have it changed. It still focuses on the city of Berkeley, but the users are allowed to move around the map and see a little bit further by pressing the arrow keys. The map is synced by the internet, that is how the map can go beyond the boundary of the emulator. Users may ask if the map is now be able to move, how can we inside a pin since the target icon is also controlled by the arrow keys? In our application, users can browse the map in any time. When they want to insert a pin, they go to menu and choose place pin; then the system will lock up the map in that current map view on the screen, and a target icon appears on the screen and let the users to insert. The logic is we assume that users first browse the map to wherever the location they want, then place a pin to that location, that is the reason why we lock up the map. Moreover, in our lo-fi prototype, we said that the application can do a zoom in and zoom out on the map, but we didn't implement it in our interactive prototype. We have it now! When browsing the map, users can press the button "i" for zoom in and press the button "o" for zoom out.
In our main menu, we also took out the Browse Mode button since it doesn't make sense when users want to filter the pins and they have to press another button to refresh the screen. Right now we make it automatically refresh after users filter the pins; therefore, we don't need that Browse Mode button anymore.
During the interactive prototype, we added an extra layout to Search, we divided search into simple search and advance search. Originally, there were only one search. The reason why we suddenly add that layout was because we noticed that users don't like to input too many information when they do a search, they just want to input a name and let the system do the rest, that is why we split up our search. The advance search will link up to the simple search algorithm, which require users to input things like name, comments, sharing level and category. And we didn't have time to implement the simple search during the demonstration. But now, we already fixed it. The "Simple search" is working now. When users input a name, the system will search for any name that matches in all kind of category and sharing level.
We also add an extra button in Setting to delete all pins, which will clear the database. We try to let users to restore the phone back to the factory mode just like the regular cell phone. Also the color setting is now semi-working, users can now browse the color grid and choose the color that they want to specify the category. The idea is each category has its own color, and this color will be used for the color of the pins on the map. The problem we have right now is it seems like kind of messy when have to pull out information from database and join with the color of the pin at the same time, but we think we could handle it and have our application to work like it eventually.
The name of my tester is Patrick Nip and he is 30 year old graduated in San Jose State University majoring Electrical Engineering. He is now working in Yahoo to manipulate the data in yahoo search engine for the Asian server. I met him in church, so the testing took place inside the Church. Patrick has lots of experience of how manipulating data since he was working in Ebay before he came to Yahoo. Therefore, he has good experience on data passing. He also gave me some ideas on how to improve the application since he noticed minor thing that makes our application inefficient to use. After he signed the consent form, I gave him a brief explanation on PinMap on what is the purpose of this application, and what we are looking for from the user point of view. I also told him where is the menu key, back key, home key, arrow key and enter (ok) key. I told him we are going to do three testings on tasks from easy to hard. During the testing, I am not going to say any word. As a user, Patrick so try to play around and figure out how to successfully complete a task in a new cell phone application.
I didn't use lots of tool for testing in this case. All I had was my MacBook with the emulator running, a notebook and pencil for me to take notes while observing, and a watch for me to clock the time.
We did the testing one by one, starting from easy to hard. I explain to Patrick what we are looking for and ask him to specifically do what I am asking to do in each task.
Look at the map at the current location and browse the viewable pins in order to view the information about the pin at International House.
Insert a pin at the current location on the map, and put in comments, sharing level and set category.
Search for a pin called "Crossroads" and change its category to "Food".
During the experiment, I slowly told Patrick to finish each tasks. As I was an observer, I took notes on his reaction to the application, mistakes that he made, his complain while he was stuck on somewhere in the application. I also try not to answer any questions he asked during the experiment. Most questions he asked was "what will happen if I press this button?" and "Can I undo a change by simply pressing the back button?". I should have say nothing during the experiment, but I told him to try out that button if he had question on it, users never know what will happen after they press some button. Same case with iPhone users, they still have to try out some button if they get confuse with the application, and there is no return policy for the iPhone if finally the users find out they don't like it. So here is the same case, users never know what will happen in the next moment, just try! I also clock the time for each experiments which help us to measure the speed for each tasks.
In this test, the only thing we concern is how easy the program to use for users. Therefore, the testing variable we looking at is the time it takes to finish each tasks. Moreover, I try to observe the reaction on Patrick's face when he was trying each task. Each smile from success, each frustrate from stuck, and each simple comment he made were record in my notebook.
I also take notes on the mistake he did, and why he repeated that mistake over and over again? Is it something wrong with our design that made him think he should use his way to complete that task? And I also measure how frequently he had to press a certain key to reach his goal in each tasks.
The overall comment from Patrick was this application is very easy to use, and very user friendly. Good to have it in our cell phone, but there are still some minor difficulty that we need to focus on in order to make it perfectly use by most of the users.
We started our test at 10:29AM
On the current map view, browse to the pin titled "International House"
I implemented couple pins on the map before we start; this is just to input something in our database for testing. Since we couldn't do the easy test if we have nothing to browse with. When first start, Patrick was looking at the map, his thought was "ok, I can see pins on the map, but how can I know which one is which?". I was very hard at the first time when a user has to first digest the input from the screen and figure out what should he / she do in order to reach to a certain goal. Then he noticed that the pin that closed to the center of the screen has title and comment next to the pin, and the pin is a little different from the others since it is surround by a yellow line. Then he tried to press the arrow keys to see what will happen, and he found out that the map was actually moving when the arrow key was pressed as a direction to move. Then he quickly picked up the concept and keep browsing the pin until he found the one that had a title "International House". Once he found it, he said "Oh good, very easy to use by arrow keys"
Finish time 10:31AM
Place a pin
I requested Patrick to insert a new pin with a title, comment, sharing level, and category. He then just randomly picked a place and insert a pin with comment. But he didn't set the sharing level and category. Then I ask him to fix it since he didn't complete the task. He first try to look up if there anything he can do with the menu, but he couldn't find anything to do, then he asked me for help. I said "sorry, I can't give you help at this point, just simply try all buttons and see what comes up." Then he finally got to the page where he could edit the pin. The browse the category and set it as "Landmark", then immediately press the back button. He then notice that there was nothing change on the category. At this point, he started to feel confuse of why there was nothing happen since he could able to find the edit page and he did complete the set category procedure. At the end he figure out there is a "Save" button after he finish browsing the long list of category. After he did the save, he could see the change and said "There you go!!!". Then he looked interested on this task, and he tried to insert another pin with a different sharing level. This time he know how to set a category, so he could complete the second insert task in a couple second.
Finish time 10:34AM
Search and edit an existing pin
The time he went straight to advance search, and typed in International House in the input bar. Then he quickly went to the edit page since he knew where it is from the medium task. He felt annoying when he had to remove the comment by deleting the characters one by one. Then he tried to do a simply search and compare it with advance search. This time he tried title "New Pin", in advance search, he could found only one pin that match. And he tried it in simple search by just type in "New", at this time, he got a page saying "New Pin", "New Pin 1", "New Pin 2". He chose "New Pin" and got to the same pin he got in advance search.
Finish time 10:35AM.
The biggest problem happens when we first ask a user to browse a map. Since usually phones come with big screen will automatically have the touch screen function implemented. So the first thing come to users head is to touch the screen and move the map. Once we said touch screen is not allowed, the users have to figure out another way to browse. Therefore, arrow keys are always the second choice in this kind of task. Moreover, not all the cell phones have the same keypad we have in our emulator, that means it is hard for them to switch from the keypad that they are familiar with to the new Android emulator keypad. But once they figure out the way, they can link up the concept.
The second thing is when a user is told to enter or edit name and comment, they don't like the way to first delete all the characters in the input bar then do the typing. It is good to have the words to tell you want specifically the application is looking for from the user input, but those characters should be deleted automatically when the cursor is currently at that input bar. Moreover, how should we handle when the comment is too long? In the map, it still shows the first part of the commend but ended with "....". It is not very good if users want to completely know what the comment says without going into the edit page to look for the whole quote. A suggestion is to have it scroll right to left automatically, just like the title in the web browser.
Thirdly, the biggest inefficient part of the program is the "set Category". Users don't know there is a "save" button at the end of a long list. And that is why the set category wasn't successfully completed in the first couple tries. Patrick came up with two suggested solution. The first one is in the xml, divided the layout into two frames, left and right. Having the category list at the left side and the save button at the right side. The case, users will always know they need to press save after choosing a category. The second way is to automatically save when user select the category and press "enter" on the key pad.
Finally, a good comment is a pin should not be inserted if user doesn't enter any information to the title and category input. Since right now our application has default quote in the bars and thats why a pin can be inserted when a insert button is pressed.
Participant: Patrick Nip started time 10:29AM
Easy task: User learned to use arrow keys to browse.
- "Oh good, easy!" after found out the pin we asked.
Medium task: started 10:31
- User had problem on enter pin.
- Forgot the set category, then asked to go back and set it.
- User looks frustrated on his face.
- User tried to look from menu, but got nothing to help.
- User tried to do search, and found that pin. User saw the edit button, then browse in and edit the category.
- User didn't do save after he finish set category, and found out the category wasn't saved. Asking why.
- User found out the save button at the bottom of the list, then press saved.
- Task completed "There you go!"
Hard task: started 10:34
- User feel good from doing advance search.
- Able to find out how to edit pins.
- complain can't read the whole comment on map, suggest us should use auto scroll.
Finally user made some suggestions on how to improve the application to make it better. For example, scroll text for comments, and two frames layout for set category.