VBA Personal Planner Project

Vyomesh Iyengar
Vyomesh Iyengar
Published in
11 min readJan 6, 2021

Summary

Problem

With many courses, extracurriculars and other tasks to get done each day, it is extremely important for me to keep track of when I can get everything done, and prerequisites for each tasks. Currently I use a variety of applications to get this done, but I need it to be streamlined for increased efficiency.

Glenn Carstens-Peters on Unsplash

Unlike my other projects, this one was quite different as I was not only the designer and developer, but also the client. Since this was a project as part of my MSCI 100 class, I had to gear the requirements towards what I wanted and understand my own personal requirements for what I wanted in a planner, organizing various parts of my life.

Case Overview

Scope

Throughout this project, the problem I addressed was creating a personal, term management tool to keep track of the various deadlines I have, my schedule, habits, and finances. The goal of the project was to increase the efficiency of the organizational tools in my life. I used a variety of different systems and wanted a way to be able to standardize the process.

Functional Requirements

In order to create the product, I set out my functional requirements under the categories of Scheduling, Academics, Finances and Health. Each of these were important parts of my life which would be better managed by having one cohesive system which keeps track of all inputs and outputs. The following outlined my requirements for the minimum viable product:

  1. The system must have a delete and update information button.
  2. The system must display a dashboard in calendar format on the dashboard with various views: day view, week view, and month view. The dashboard must also display an overview of my ‘stats’ throughout the week.
  3. The system must have a dashboard for each individual class, with a breakdown of assignments and tests, as well as what lectures I must watch for the week.
  4. The system must allow me to input my current grades to find my current mark, as well as forecast what I need to get on subsequent assignments to get a predetermined desired final mark.
  5. The system must have a space for reflection on each assignment and test.
  6. The system must have a planner for all for midterms, assignments, quizzes, and lectures. Each of the categories must have the course, due date, how much it is worth, desired mark and time required to complete. All the tasks must also have a reflection area here I must be able to add the amount of time spent, and the reasons behind the discrepancies.
  7. All tests/quizzes must also have a breakdown of what is covered on it, and how much time should be allocated to each topic.
  8. All lectures must be spread out throughout the year, with each unit being covered per week.
  9. The system must also have a way for me to add special events/meetings I must have to attend. These include family events, temple events, professional events, and meetings with my coach.
  10. The system must also have a general to-do list for administrative work I need to get done, this will be similar to my class schedule where I will separate it by priority, deadline and how long it will take.
  11. The system must have an input of all my purchases, and my inputs for money coming in. The system must include a budget function with alerts when I have reached 50%, 75% and 90% to the limit.
  12. The system must create a daily mood-entering system based on numbers from 1–10 ranking how my day went allowing me to write a one line comment (with a character limit).
  13. The system must also create a sleep tracker documenting how much I have slept each day which will also be on my dashboard.

Risk Management Plan

In the case that I was not able to follow through with the plan I set out for myself, I decided that I would analyze the trajectory of the project depending on which part I have missed and if it is possible to make up for it. If the part of the project I missed was a part of the critical path, then I eliminated parts of the project, beginning from the least priority. This reduced the workload and allowed me to get back on track faster. If the part missed was not on the critical path, I analyzed how much work I had left in that particular section and either removed objectives or decreased the time required for a future task.

In an effort to ensure that I am keeping up with my work, I had repeated check-ins with my plan once a week to make sure that I completed everything I had set out for that week. If I had not completed everything I set out to do, then I realigned my goals to work with what I have that week. After each major development part of the process, I assessed if my understanding on the level of difficulty of each process has changed, and if it had then I revaluated the final functional requirements. Since the functional requirements were in the order of most to least important, it was easy to determine which ones were required for the minimum viable product.

User Interface Concepts

The user interface is the main ‘face’ of the entire system, it deals with all the graphical elements, functionalities and how the system will all flow together to create one comprehensive unit. User interface is concerned with the overall feel of a design and should follow a set of guidelines to adhere to a continuous principle throughout. The guidelines I set out were based on the UI design principles of placing users in control, having maximal comfortability for interactions, reducing cognitive load and keeping the interface consistent. My criteria for success was based on ensuring that the following principles are upheld throughout the project.

1. Each page should have a major theme (Academics, Health, etc.) to separate the different functions and reduce the information given to the user

  • Having one major theme per page makes it easier for the user to navigate the system and understand where to go to get their problem solved. Specifically labelling each page makes it easier for the tools to be separated.
  • This ensures maximal comfortability and reduces the cognitive load on the user in trying to figure out how the system actually works.

2. Use visual cues that are intuitive to the user and should be very simple and efficient to use.

  • Using large, intuitive icons (garbage for deletion, pencil for editing, etc.) will make the user feel more comfortable with the system and will provide them with an intuitive understanding of how to use it. Varying the size of the icon based on its relative importance will draw the user to the features which the system was primarily created for.
  • In order to reduce frustration for the user, each task should be easily accessible with a maximum of three clicks to accomplish a required task. This will reduce the cognitive load for the users by reducing the number of inputs they have to give to receive their required output.

3. The interface should have a consistent look and feel (colours, fonts, etc.)

  • Having a consistent interface makes it visually appealing for the user to use, and reduces their strain in adjusting to a new layout for each page. For my individual pages, I used a combination of the Bento Box and Alt-Burger layouts for the various pages. I also used consistent typography (fonts, sizing) to provide a unified front of the system.

4. Separate data and user interface

  • When using the system, the user does not need to see all the background work and data being used to complete each required task, they simply want to get an output for the inputs they provide.
  • Due to this it is important to separate what the user sees from the background content being used to compute the functions. Doing this will make the user feel more comfortable with using the system as they will not have to see any of the processing going on.

5. All actions must be reversible

  • Due to how quickly life changes on the daily, it is important to be able to reflect that within the system. Having irreversible functions is often not recommended because it puts a strain on the user to evaluate the implications their actions will have on future tasks.
  • By placing an undo/edit/delete button for certain tasks, the user will feel more in control with the system and be inclined to use it for general use.

6. Define user requirements

  • When creating any system, it is important to understand the user and what their main requirements are. This allows for tailoring of specific features or even the overall display of the system to the user.
  • Since I was the only user for this system, this was not be a problem as I was the one creating, testing, and using the final product and made changes to suit my preferences as I worked.

Low Fidelity Wireframe

In order to understand how I wanted to split up each of the screens I planned on making, I created a wireframe indicating where each element would be, how the information would be processes and what would change between the screens. The wireframes included more than my final product, as my final product was the minimum viable product created.

Final Product

Dashboard (Workspace 1) This serves as a landing base for the application, and allows for an overview of the work I have for this week/month as well as the individual tasks and event for the day. It also has tracker graphs on the side indicating my health and fitness.

  • Organize Tasks — Automatically sorts tasks based on date and sets a colour based on the type of task.
  • Input Data — Allows for user to input data for the sleep, workout, and mood trackers.
  • Hyperlink to Graphs — Provides easier access to the graphs.
  • Welcome Alert — Shows the user an affirming message when opening up the sheet.

Finances (Workspace 2) This area acts as a pseudo-bank account tracker where I keep track of the money going in and out of my account. By having an area where I can allocate funds towards purchases I want to make, I will be gradually planning and saving up for major purchases instead of doing so impulsively.

  • Input Money — Allows user to add money to their ‘account’.
  • Output Money — Allows user to remove spent money from their ‘account’.
  • Check Balance — Allows user to check how much is left in their ‘account’.
  • Check Spendable Balance — Check how much is left for spending in their ‘account’.
  • Add Item to Purchase List — Add item to list of items looking to purchase.
  • Reallocate to Items — Move money from spendable balance in ‘account’ to amount being saved up for a future purchase.
  • Remove Item from Purchase List — Remove purchased item from list of items waiting to purchase.
  • Goal Reached Alert —Alert when an there is enough saved to purchase an item.

Academics (Workspace 3) This section helps keep track of all the university work I have to get done, what online lectures I need to watch, and a record of what marks I have in the class.

  • Add Class— Allows user to add a new class, up to a limit of five classes. The user is prompted to add information regarding instructor name, hours and if there are any asynchronous components. This also changes the name of the respective hyperlink found at the top.
  • Add Assignment — Adds an assignment to an already created class, prompts to add information regarding task name, type, weight, deadline and expected mark.
  • Add Lecture — Adds a lecture to watch for a preexisting class.
  • Delete Class — Allows user to get rid of all information pertaining to a class, presents a message confirming the user’s actions before initiating. This also changes the name of the respective hyperlink to ‘Unassigned’.
  • Hyperlink — Allows user to have faster navigation to a certain class.
  • Edit Task/Add Reflection — Allows user to change/add information for any assignment in the respective class.
  • Delete Task — Deletes a task under the class.
  • Calculate Current Grade — Using the actual grades inputted, the current grade in the class is calculated.
  • Calculate Required Mark —Calculates the required mark on an assignment based on current grade, assignment weighting and desired final mark.

Scheduling (Workspace 4) This section is an overall planner of non-school related tasks and events I have to attend/complete. There is space to add what task I need to complete after, the task/event name and date, notes and the event type.

  • Add Event/Task — Add event/task for a certain date, and add possibility for repetition.
  • Edit Event/Task — Chose an instance of the task/event to edit.
  • Delete Event/Task — Chose an instance of the task/event to delete.

Evaluation

Throughout the process I learnt a lot about working as a designer and a developer. I learnt how to create mockups which were easy to understand for a developer, and how to work with logic to create algorithms which synthesized mass amounts of information. During the process I also wrote out documentation such as Project Plans, Functional Requirements, Scopes, and Design Specifications. All of these helped me organize my thoughts in determining what to include in the minimum viable product that I created.

In the future, a change I would make is to add more sections regarding my portfolio plans and a section for my travel plans. Both of these are important aspects of any planning platform I use, and would be great additions to this as well.

--

--