In the initial years of my profession, I got the requirement that we need to have an online quiz that can be sent to colleges for placement drive. We were hiring at a super-fast pace. Being a fresh developer, I found it easy and built the first version based on my assumptions.
It had a fixed number of questions and a simple timer. Students would fill in the basic details and submit the form once they are done (almost all the hiring were done using this portal).
Here are the problems I faced
- The quiz was designed to work on modern browsers, and I was shocked to see that most colleges use IE 8. Had to redo a lot of work [know the ecosystem of your audience]
- The quiz was getting submitted at the end automatically (45 mins). Most colleges computers do log out automatically after 30 mins (average duration of the class). So after 45 minutes, they got No Internet Connection error and the whole drive failed (imagine the frustration). So I had to redo my work again and make it offline first app [research the user journey beforehand]
The next drive was successful, and then I got more requests
- Can each department add their own questions and link them to branches that are participating in college? Lot of work again to build another CRUD system [think of second-order consequences]
- Can we run two tests simultaneously? We were growing so fast that I never thought of this is starting. Again more work to adapt the system to changes. [technical debt is a real thing]
So eventually it became a full-fledged project that is not aligned to my domain work and I have to maintain it.
Overall Development time - Couple of months and dissatisfied stakeholders.
Lazy Developer Mindset
The earlier model was stealing all of my time. So I thought to set up a WordPress site and buy a quiz plugin. Took me one day, and it was up and running.
Now, a problem surfaced. I had to manage the infrastructure to host it and also manage the burst traffic that comes up when the quiz starts and ends (imagine black Friday flash sale ). The loop started again, and I was now solving performance issues. Sometimes it would fail if 600 students started the quiz at the start (should I put up a big server that will do fine in placement drives and bitcoin mining other times)? AWS was not a thing back then!
Overall Development time - Couple of days and unreliable infrastructure
Put up a Google Form and install timer add on to it. In 10 minutes you have the product. No more hassle of browser support, server management, domain population.
Overall Development time - Couple of minutes
But coding is my superpower!
I tend to go to the developer mindset from time to time. I am the guy who thought using existing libraries and tools is a disrespect to my craft. It's the passive admittance of the fact that I can't code well and need external support. I never thought it through, otherwise, I could have ended up designing my own OS.
We tend to shift away from the actual pain point that we are trying to solve. The focus goes into the code-first developer. We spent countless hours reinventing the wheel. Standing on the shoulders of the giant was not supposed to look like this. Coding can easily turn up to be a curse if you put it in the driver seat. Coding should always be your Plan B. Focus on the problem and see if it can be solved using a hacker mindset.
Coding is your backup plan. Don't use it in the first go!