My 1st Hackathon Experience

Recently me and three of my colleagues participated in DBIT's hackathon - Mumbai Hackathon. This was my first hackathon and through this post, I want to share some critical design and leadership mistakes I made while leading my team.

Project Title: Pizza delivery chat-bot
Language: Python
Web technologies: HTML and CSS

Mistake 1: Let's start with the gravest sin one can possibly make in OOP paradigm - hard coding in methods.
When we code in OOP paradigm ( or even in Procedural Paradigm ), one thing has to be taken great of - methods ( or functions ) should perform a very specific task and should return a value pertaining to that task.
By neglecting this one sacred rule, the end result was terrible. Our chat-bot had code which would print chat-bot's output in terminal instead of returning the chat-bot's message. This was disastrous as scaling our code to front-end became nearly impossible. To see what I am talking about refer : this and this.

Mistake 2: Noise in designing
Over-engineering is not just bad, it is terrible. When facing time-constraint ( like in hackathon ), one can waste precious time designing unnecessary features while neglecting the core. Had we spent more time in our parser instead of supporting features such as referral-bonus and database connectivity, our project would have been better. A project should start with simple, strong and scalable code. Optimizations can be performed later.

Mistake 3: Not having a front-end
The first question judge asked when we showed him our demo was: Where's your front-end ?
I am unable to comprehend why front-end is given so much importance in such competitions. I will leave this part for future-me to answer.
My initial intention was to make a working chat-bot in terminal. I was so rigid on that idea that on Day-1 all the code I produced was non scalable to front-end. This made it all the more difficult to scale on day 2.

Mistake 4: Not dividing work flow properly
I took an unprecedented work-flow by trying to code a NLP-parser (from scratch) and customer class, connect customers with database and link the many methods my group members created. This significantly hampered my productivity and led me to make bad design choices.

In the end our project turned out to be above-average. Here is the link to our project : Pizzy : A pizza delivery chatbot. On the bright side, I am glad that I made these mistakes, there is always something more to learn. Hopefully next time will be different.

Update: We secured an Honorable Mention for our project!