JPMC's Code For Good Experience
This is the part 2 of the blog, continued from the first part: JPMC's Internship's Interview Experience, here.
Special thanks to my seniors (Shoutout to Archit Shinde and Anushka Bhagchandani) for their inputs.
The Hackathon was held in July 2021.
Let me explain the process and format first, and then how we went about the Hackathon.
Format of the Hackathon
There were about 10 Problem Statements from 10 NGOs.
There were ~100 teams.
6 members per team. Which 6? Any 6 will be formed into a team across India.
But then, how is that going to fair for all? They take in your skills' level survey once you are shortlisted.
I am not sure about their algorithm to form teams, but it seemed fair from the feedback I got from people.
Note: Winning the hackathon doesn't gurantee the job/internship, and not winning the Hackathon doesn't mean you cannot get the internship.
It is based on your overall response and attitude in the Hackathon.
And who will judge that? There will be 2 mentors (who actually are JPMC employees) per team, who will mentor/monitor you throughout the 24 hours.
Preparing for the worst
In a hackathon, you don't know what type of people will you be paired up with and with what type of skills.
You could be an app developer and be in a team full of web devlopers. You could be a Flutter developer and be in a team with ML and frontend folks, with no one to take care of the backend. You could be a Django developer paired with Node.js backend team. You get the point.
There are a lot of ifs involved. Therefore, it is always better to be prepared for the worst.
Point being, be flexible. And how will you be flexible if you don't know that skill?
Be a quick learner. Be a googler.
Example. Are you a frontend developer? Learn to write a basic node server.
Take a look at Django file/folder structure. Learn how to build and think components in React. Learn how to write a Flutter App.
Integrating APIs, designing, collecting data, et cetera, et cetera.
You will have a decent amount of days.
So, what did we decide to do at this point of time?
All of us started doing a whole lot of things at one go, crash-coursing a bunch of skills throughout.
Then, I decided to give a Hackathon. A mock hackathon.
I, along with 3 other shortlisted folks at that time from my college, decide to give an MLH hackathon - Building for Local Businesses and Communities.
We built Vocal For Local for the local businesses around.
- We made sure we are communicating well and professionally.
- We followed Architecture, Design, Development workflow.
- We tried to use GitHub Projects.
- We also tried to follow conventional commit messages. Here is how you can write them too.
I think this turned out to be very crucial. I learnt the most in this 48 hour hackathon, because I got some hang of Django, and also realized the importance of design in a Software Development Workflow. And also some momentum for the Code For Good Hackathon.
Code For Good
From here onwards, I have documented my experience. If you want tips based out of the complete experience, you can choose to scroll towards the end.
One day before
We were then assigned teams. The team consisted of myself and 5 girls from around the cities.
The best move right now was to talk to them as soon as possible and strategize. So, I started looking them up on LinkedIn and sent a connection request with an additional note. Asked for their numbers and formed a WhatsApp group.
Then, we decided on a common time for a meet. We then discussed our tech stacks, and common stack to work on. For us, it was the MERN stack.
Then I asked everyone if everyone knew VCS and how to use Git. I suggested how we could use/leverage the git branch structure and how we can create the folder structure. Then, I also suggested how we could go about the hackathon — By creating a Github Project (essentially using a Kanban Board to measure/track progress), or by designing first and coding later.
Note: These were my learnings from the mock hackathon that were fresh in the mind.
One night before
We had a catchup call with our mentors and our teammates. (officially :P)
Basic introductions, interests, et cetera. Now, here comes the nicer part. This was followed by inter-team meme competition. Now, as much intense the hackathon was the next day, this night was still memorable.
Because well, trust me - there will be politics, competition, slight toxicity — which you are not going to remember one year down the line, but you will remember when you had fun :D
We woke up early morning, since the Problem Statements were relasing at that time.
We split the problem statements amongst ourselves, and came back after a few minutes. If one person felt strongly about a specific problem statement — we all read it together.
Once we decided the PS, we filled the form (which apparently was on First Come, First Serve basis)
This was followed by a QnA session with the NGOs who were facing the problems formulated the PS. Make sure you not only ask your questions, but also hear everyone's question.
Maybe you can find an answer you didn't know you were looking for.
Out of the NGOs and the problems they were facing, we resonated one with a children's NGO — Way For Life, based out of Bangalore.
We built a web-based solution, a portal to manage volunteers, schools and students.
We started thinking about how many kinds of users, how many pages we require, what information from the user, what workflow/userflow will be needed.
This was followed by designing the pages, and once a low fidelity prototype (essentially nothing heavy, just where we were going to place the buttons, the content, etc.) was ready, we started to code.
We split ourselves into teams of two and four. Two working on the backend, four working on the frontend.
Long story short
Which will still be a long story, so longer story long :')) But the story is good I promise.
After 14 hours into the hackathon, we realized we had a LOT left to do. Plus, we were just writing two application (frontend and backend) separately, without the concern for integration.
After a few more hours, when I was actually drained out. It struck 12 and I just knew we were losing the hackathon. I could precisely see it.
We had just started to integrate for authentication, and there would come countless errors. For integration, we split ourselves again. I switched to authentication. I quite literally started losing it, I just did not know what was going wrong or right. I practically shrugged my shoulder and my eyes started to drop and head started to burst because of the insanely high screen time.
Then, I asked SMEs (Subject Matter Experts) on our Slack Channel but everyone was hopping around and helping team. So my mentor offered to help me, and we sat there and debugged it step by step. And there it was, we implemented it, with 6—8 hours left on the clock.
By 3 AM, three teammates dozed off. The rest of us lost hope and knew we had lost the Hackathon, after which we left hope and took a break.
After that, the three of us had a pretty chill conversation and we got to know each other. I could empathise with them, I could understand where everyone was coming from. There was a different air of comfort after that time.
After some time, we started building again. Subsequently, we realized we have nothing to lose, specially at the stage we are. My two fellow teammates started integrating the backend architecture.
I started adding small features over our product, for a seamless user experience. Like local language support, a chatbot for easy navigation, data visualisation for the NGOs for easy tracking of volunteer and school data, so on and so forth.
It was morning by then. After all of this even though the backend wasn't integrated (except the authentication), the product had quite some USPs (Unique Selling Propositions). Once the other three teammates woke up, we delegated so they could make a presentation, while we polish the product.
There was hope.
The deadline for the last commit was 10 AM.
I was writing and committing after every successful and stable feature. During the final few minutes, when I was merging the branches, there came infinite merge conflicts. I had an adrenaline rush after this. My legs started to shiver, I had gotten weak over the past few hours, this was making me lethargic.
My mentor calmed me down. He asked me to look back at the last stable commit and find the hash for it, while he was looking up the command to roll it back. He helped me with the final command, pushed the final stack of code, and the hackathon ended.
Counter Plot Twist
We realized were supposed to record a video with our presentation and demonstration till 10 AM, but it was already late.
We then opted for the live presentation option, the riskier and the less prefered one, since a lot could go wrong.
Counter Counter-Plot Twist
I have narrated this part of the story at least 25 times to different sets of people, because this was a game changer.
Now, our mentors recommended that one of my teammates (who had worked on backend) and I should give the live presentation. We agreed, after asking if it was alright with others.
Then, my team and I started discussing pointers, and how we should go about it.
Interestingly, my final commit was adding a tagline for the NGO — Way for life. Since, "Way" meant raasta/safar and "Life" translates to Zindagi. I decided to write — Zindagi Ek Safar Hai Suhana
When the presentation started, the other teammate introduced the idea, the designs, and the tech stack.
Now, when I started with the demonstration, I forgot what I had to say. So I just read what was in front of me and I went like — Here's the landing page, Way For Life. Zindagi Ek Safar Hai Suhana ... and I started singing the infamous song while swinging my shoulders.
... yahan kal kya ho kisne jaana. For real.
Then, I jumped to the features, but the catch was how I sold/marketed them:
For example for the Google Translate Feature: India has more than 800 languages and dialects, and that is why we have provided local language support for government schools and local volunteers to break the linguistic barriers across India
Similarly for Chatbot, and the data visualisation for analytics.
I showed the static frontend application, the idea essentially from all three user's ends.
We ended up being shortlisted for the final presentation round.
The video presentations showcased were static, mundane, and a bit monotonous.
The live presentation worked out in our favour — because I made an impromptu decision to sing the song, plus it avoided a monotone and felt more interactive.
If you didn't realize, the catch here was the song. This realization was occured later, when my brother pointed out that all the judges smiled and some of them switched in an upright position, as if they were more engrossed.
I realized, the best way to fix or get someone's attention before the presentation is to do something unorthodox or something high pitched like clicking your finger, or clapping and saying — "Let's get started!" The noise being the attention factor.
And once we get the attention, go in for the kill. With your features and USPs.
Even though our product wasn't complete, the overall idea and impromptu presentation turned out to be a hit. And that's when I realised — What differentiates a good product from a great product is not intelligence, it's presentation.
From losing this hackathon to having multiple USPs at the end of the day, from breaking down to landing as runner-ups, this was the most exhilarating journey. Realized having a nothing to lose attitude could take you to places. It wasn't those 24 hours that made us win the un-winnable Hackathon, it was that one hour breakdown.
Overall, I also understand why firms put in so much effort organizing such events. Not only does it provide a real-time environment to test our skills but also simulates a competitive environment to see how candidates respond under pressure. Not only how we respond but how we communicate, respond, help, delegate, and keep the team's morale up.
Pointers from my experience
The factors that I think would help overall:
- Take up initiative.
- Be flexible.
- Be open to ideas, always have an open perspective.
- State new ideas, without thinking how feasible it is.
- Ideate and brainstorm those ideas.
- Be a leader.
- Delegate if someone's free.
- Help/Volunteer if you are free.
- Be respectful and listen.
- Don't disrespect/cut when someone is talking.
- Accept your mistake if it is.
- Appreciate people for pointing your mistake out or giving feedback.
- Be humble.
- Be kind.
- Have fun.
And the best part? All of this is again true for any situation in life.
- Start participating in hackathons before the actual thing happens so that you can have an idea what happens in a hackathon, and have ideas of what kind of projects can be implemented.
Try to participate in 1 hackathon atleast before CFG. Try to converse professionally and follow conventional practices. Be it writing code or commit messages.
- Working on tech stacks, crash coursing a bunch of skills.
Be prepared in such a way that given a problem statement to make a web app, ML/ AI or mobile app, you should be able to make it.
So explore Tech Stacks, make a few projects and keep so that you can resume them during the hackathon by modifying some things.
- Get a few pages/screens ready:
- Sign Up
Don't worry about authentication, until security is a major part of your project. Because, the funny part is — we did not even showcase the one feature that was complete: Authentication.
Start working on integration with Django, Node, Flask, etc. With React, which mostly used.
Note: Other things that can aid in the Hackathon.
- Video Conference
- Google Translate
- Chrome Extensions
- Data Analytics (Charts' Libraries)
- Ask for help. Do not hesitate in asking from help from anyone - Be it your teammates, mentors and SMEs. Even if it is from someone who is not a part of hackathon.
SMEs are subject matter experts. Always active on Slack. Just mention the tech stack and zoom link, they'll be there.
Very kind. Very helpful. People who actually work at JPMC.
- The most used Tech Stack was React and Node (MERN) for our batch.
People who are confused at this point of stage, usually start with Web Development. Learning curve simpler at the start. Easier to get started.
- You will be teamed up with random students so you won't be knowing anyone well. Organize a meeting with your teammates before the hackathon so that you get to know their skills.
In fact, reach out to them. LinkedIn, Twitter.
Make a WhatsApp group. Organize a meet. Show leadership skills.
Come on a common tech stack. For App, and Web. Find people who are good. Assign roles. Who can take lead.
- Before the hackathon make sure you understand and be friends with all the people in your team, or there can be a lot of politics going on during the hackathon. Generally 2-3 people out of the team of 6-7 get selected for the job, make sure you are one of them by showing your work
Even if you are an introvert, please try to talk more in these 24 hours, it might really help you get through to being a part of JPMC.
You will have a few sessions before the actual hackathon, make sure you attend all, keep your camera on and interact with the host or just reply whenever asked a question. Make an impression.
- Be aware of what you are speaking, show leadership skills, do not disrespect anyone.
People start cutting each other off. Because of enthusiasm, because of showing leadership, because of whatever.
The funny thing is, I had even more competitive folks. They were scheduling meets, cutting people. So at this point of time: delegate. Be the bigger person.
Let it go.
- Make sure while the doubt solving session, you go and represent your team and make a good impression in front of the NGO. Also, volunteer to share your screen and record the submission video.
All these small things show leadership which they are looking for.
- Commit often, essentially this is how it should be.
Make sure everyone knows Git and VCS. If not, stand up. Give them a crash course.
Ask them to pull before pushing/committing to avoid conflicts. Plus use conventional commit messages.
I recommend staying up and motivating teammates to stay up and complete the entire solution or how much ever you can do.
Communication is the way to go. Amongst yourselves. Among mentors.
Two Mentors will always be there. 24 X 7. Observing you. One for the first half, other for the second half.
Keep communicating with your mentors. Give them a rough idea of your solution before starting to code. Ask them for feedback. Show your leadership skills. Try to show them how you are managing everything well (even if things are not that great). Tell them the problems you are facing and how you are tackling them.
Finally, Presentation. Here is a complete blog on Presentation that will take you through my thoughts.
Also, take part in fun activities.
We had a meme competition. Icebreakers. Late night conversations. Just fun.
If you're not having fun, is it even worth it?
Your screen time and your health are inversely propotional.
- After every 20 minutes, look 20 metres away for 20 seconds.
- Follow pomodors. 25 minutes work, 5 minute break. 50 minutes work, 10 minutes break.
- Drink water often.
- Soften your shoulders.
- Unclench your jaw.
- Sit up straight.
- Take a breath.
You got this!