Inspiration
At the start of EngHack, I did not know anybody. Despite Networking, I was unable to find a team which shared the same interests as I did and also worked towards a product I could contribute towards. Therefore, I saw a need for a product that can form teams on the basis of both, their interests, as well as their skills. Hence, MyTeamMaker was born!
What it does
It is a website using which given a list of people, their particular strengths as a number, and the number of people per team, creates a list of teams, each containing an optimal arrangement of people. To make this work, one has to create a list of attributes that are required for making teams in a particular situation, be it during a Project for a Company, or a Highschool assignment. This allows the user to tailor the situation, by placing relevant attributes based on which the teams will be selected. Once the attributes are selected, for each person (who is to be included in the team making process) a score for each attribute has to be given. This score is used to then determine optimal pairs. The program also allows users to customize the team-selection process based on the similarities of individuals (example: for people working on the same task), or on their differences in skills (to have a diverse skill-set). Once the teams are made, the website allows the user to store the information using a "Data String" (my term) which is a string composed of all the information compiled in a specific manner, so that it can be reuploaded to regenerate the data (such as attribute names, attribute points, etc.) and reused. The teams can also be stored by the press of a button which generates a string describing each team.
How I built it
The Website was built on Visual Studio using HTML, CSS and JavaScript. Every element of the website was built from scratch by me. I began by making each JavaScript function starting from input. A lot of this required the creation of textboxes and labels, customized for each Attribute, which I did using JavaScript. In a similar fashion, I built numerous sub-routines to perform pre-computations on my data, which made my program efficient. The program itself runs on a Greedy Paradigm, therefore, much of the precomputing requires sorting, I thus made numerous subroutines for the same. The Algorithm at its core is very similar to Kruskal's algorithm, but contains several modifications. Once I had written my JavaScript, and some Skeleton HTML. I several rounds of testing was carried out and performed several rounds of debugging. I then worked on CSS, and finally built the Help Page containing numerous images from my own website that I edited using Photoshop to provide detailed assistance to users.
Challenges I ran into
I ran into several technical glitches due to Visual Studio. For example, the updates I made to my code after debugging would not be properly rendered until after 5-6 minutes. I also ran into some challenges regarding the input/output of my code, as I had not learnt the aspect of assigning id's to objects through JavaScript. I live in IST (EF Timezone India) and therefore, my body clock and time zone also impacted my ability to make quick progress. However, I allowed it to have little effect by efficiently scheduling my sleep cycle and timings.
Accomplishments that I'm proud of
Making the website by myself, from scratch, in such a short time-period was challenging but even more satisfying. The fact that I could also work around the technical difficulties, and learn in the process also gives me tremendous satisfaction. Seeing my product working exactly as intended is something I am very pleased about. I also liked the way my aesthetics turned out, and I am proud of the design. This platform also provided me with the opportunity to connect socially with a few of my peers and seniors, which also led to a small bout of chess, that was very rewarding and relaxing.
What I learned
I learned that proper planning before work helps organize work very efficiently. I was able to do this singlehandedly. Also, efficient time management was very important. I improved my algorithmic design skills. I also improved my ability to create aesthetically pleasing GUI and integrate it with the back-end. I developed many new skills in JavaScript as a consequence of the hackathon. I also improved my efficiency as a debugger. I also learnt GitHub.
What's next for My Team Maker
On My Team Maker, I will add the provision to allocate weights, which will help the user define which attributes are more impactful to the team making as compared to others. This will make the algorithm more accurate. It can also be built separately using an Online Machine Learning model which will keep getting modified as more data is Provided. A larger and expansive premium solution can be made in the future for Enterprises.
Log in or sign up for Devpost to join the conversation.