Mix and Match LP Flashcards

1
Q

Tell me about a time you had to deal with a difficult customer

A

Situation:
I had shipped a Java batch change that would withhold amounts from benefits issued to our client’s vendors if the vendors owed any money to the federal government.

Task:
The batch was not supposed to withhold any payment from the vendor that we were dealing with. Although, we did not withhold any payment and correctly issued the entire amount to the vendor, the program did not update one of the columns in a table correctly. There was a report generation program that relied on the data my batch populated and displayed the total amount that was withheld on a day. On that day, we were not supposed to withhold any amount but since table data was incorrect, report showed that we withheld payments for 4/2000 issuances.

Action:
Our client, the state government was disappointed because they were supposed to send that report to auditors to make sure money was issued correctly. So, they sent an email criticizing our firm for not avoiding the error. We did not know about this bug and our Java batch was supposed to run on the same night we got the email. So, imagine how disappointed they would be if they saw that we had messed up yet another report the following morning. To make sure that did not happen, I prepared quick data fix queries to fix the data discrepancy before client even looked at the report so that when they looked at the report, the data was correct.

Result:
This small but quick action saved the reputation of the firm and our trust with the client did not deteriorate further. We fixed the bug and shipped the fix the same day and that day was resolved.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Tell me about a time you made something much simpler for customers

A

Situation:
We had developed a web portal through which state citizens could apply for COVID related financial assistance. We were going live in 2 days but our client, a state government made a late request to develop the portal in Spanish as well.

Task:
Our task was already daunting as we would have to write new code, unstabilise a stable build and ship the change to prod in 2 days. We developed the portal in Spanish but when I was doing an end-to-end testing, I noticed that some of the translations in a page that my fellow developer had written had incorrect translations because some text on the translated document she received was incorrect.

Action:
We reached out to our client for correct translations but we did not hear back. Since this was a critical portal and we were expecting a good number Spanish speaking applicants, we could not afford to have incorrect translations. So, I called one of the leads in another team since I knew he was a native Spanish speaker for correct translations.

Result:
Ideally, we should have gotten the correct translations from our client itself. But since delay would lead to either a lot of confusion because of incorrectly translated document or our change being shipped late, the decision that we took was a correct one and client appreciated our proactivity and the citizens viewed correct translations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Which company has the best customer service and why?

A

Situation:
I would say Gold’s Gym, Camp Hill. That’s the gym I work out at. Before I joined Gold’s gym, I thought it was only for buff dudes and girls drinking water in sets and reps like that video of Arnold going undercover in Gold’s gym asking people to drink water in repetitions. But, even for someone not so buff, I found Gold’s gym to be welcoming.

Action:
For instance, some businesses try to avoid pronouncing my name because it sounds foreign. But, every time I meet a new front desk staff, when I check in, they see my name on the screen and greet me by my name. Then, they remember my name and greet me when I see them around the gym.

Result:
As Dale Carnegie says, a person’s name is to that person, the sweetest, most important sound in any language, seeing the way Gold’s gym front desk staff treats me makes me feel welcome.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Tell me about a time you said no to a customer request and why

A

Situation:
There are two layers of customers in this story. First, is Deloitte’s client, a state government that was actually paying Deloitte to build and maintain their system. Second, is the end users, i.e the state citizens that relied on our system to get benefits. I said no our client’s request.

Task:
Our client’s manager wanted an ad hoc benefit distribution report and had requested the report through a business analyst preferably by eod. Since it was coming from a client’s manager, we prioritize tasks like that to make our clients happy. But, on that day, I was triaging production tickets for our team and noticed that a person had not received fuel related benefits and could not afford heating. So, I was debugging why that was happening.

Action:
By the time I found out what the issue was, it was 6 o’ clock and since the report was not a simple report with a few joins, it would take me at least 4 hours to prepare the report through SQL. So, I did not work on the report and instead I started preparing data fixes for the benefits issue.

Result:
I am sure my decision made our client dissatisfied and the business analyst frustrated as they did not get the report they wanted.
But, the person I was trying to help did receive the benefits after next issuance batch run. Although I did not get any recognition from person or from a manager for the simple production ticket I triaged, I knew what I did was the right thing to do.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Tell me about a time you did something at work that wasn’t your responsibility / in your job description

A

Situation:
I was working on a task to enhance an existing validation rule for an application that was supposed to validate if the sum of power of servers in a datacenter was greater than the power allocated for that datacenter. It was a simple enhancement where we had to categorize the data by one additional server component in Python and use the category that we added in frontend to allow the user to filter the data based on the category.

Task:
I implemented the change but I noticed that the existing code was not optimal. First, we made a deepcopy of server orders we were supposed to validate. And then, we iterated through the list once and filtered out orders that had none fields for the fields we were interested in. And we grouped the remaining orders by datacenter and for each group validated if the sum of order power was greater than power limit.

Action:
After I implemented what I needed to implement, I started changing the existing code. First, I removed deepcopy of server orders. Then, I removed the filter method and added the constant none checks to grouping method. Then, when validating each group, we were doing a linear scan of power supply list and see if we had a match a datacenter. I removed that and instead created a map of datacenter to power supply.

Result:
My actions not only delivered the change that our client asked for but also made the existing code faster by removing two linear scans of servers data and for each group, remove a linear scan of power supply data to a constant lookup in map. So, the time complexity improved from 3Nk to 2N

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Describe an instance where you had to make an important decision without approval from your boss

A

Situation:
I had participated in a design session where our team was designing a new functionality that would allow reassignment of credit authorizations associated with one vendor to another vendor. Credit auth means the amount of money the government owes a vendor for providing energy related service like heating or cooling to the government’s citizen.

Task:
My task was to implement the design that we had agreed on. The design was we had a screen that allowed user to enter old vendor and new vendor and on click of submit, the credit authorizations associated with old vendor would be transferred to new vendor. But, few days after the design session, when I was writing tests, I figured that the design was not scalable. It was December and out of the 3 people who were aware of initial design, I was only one working then as my lead was on PTO and another senior business analyst was on paternity leave.

Action:
So, instead of waiting to deliver the change after holidays period when the entire team was available or bothering my lead when he was on PTO, I scraped the original design and implemented an asynchronous design where on click of submit, a trigger would be created in the database and a new nightly batch would read the trigger and would reassign the credit auths in the backend. Because, if we were to do this synchronously, making the user wait until a million or so DML statements executed was simply not acceptable.

Result:
When we load tested the batch, we found out that the batch was able to handle 20 times the production load without getting overwhelmed. So, the result was a much more scalable design.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Tell me about a time you took ownership of a problem that was not the focus of your organization

A

Situation:
A team I was working on had a knowledge transfer (KT) process that was very verbal. So, few people knew about the system, those few people were heavily involved in designing systems and other team members were heavily reliant on those select team members for functional knowledge. This was a problem because few team members were overburdened, information was not readily available, people were wasting time waiting for responses from people who were overburdened and this created a culture that was not inclusive, was not good for well-being and led to potentially sub-optimal decisions because everyone could not contribute.

Action:
So, I raised my concern but my concern was not prioritized because we were too busy. So, to prevent situation like this in components I knew about, I created KT documents that clearly explained how the systems worked and emailed the documents to my entire team. If I had a knowledge gap, I emailed someone who knew more than the documents I had prepared to verify my understanding.

Result:
For the components that had knowledge transfer documents, onboarding was much easier. Not just that, the amount of meetings that needed to be set up to explain something basic decreased. This improved productivity and hence well-being of the team and encouraged people working in other components to do the same so that functional information was readily available.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

When was the last time that you sacrificed a long-term value to complete a short-term task?

A

Situation:
I was taking over a Java batch change that a developer had written. The batch was supposed to withhold payments to vendors if the vendors owed money to the federal government.

Task:
Since I had taken over the change, I oversaw resolving any defects related to the change. So, we had this defect where we were not distributing the withholding amount uniformly across cases associated with a vendor. I was looking at the class where primary withholding logic occurred, I noticed that the code quality was terrible. For instance, 3 programs used the same batch for withholding and the core withholding logic was same. The only difference was where we got the data for those 3 programs.  
The code was written something like this. If program is a fuel program, apply one withholding logic. If it is a cooling program, apply the same withholding logic. So, instead of refactoring common withholding logic, they were a bunch of if statements and inside those statements, same withholding logic with just a few minor changes was there. 

Action:
Since there was a high severity bug raised for the change, instead of refactoring the code, I made a change in logic in 1 place and copied the same change over in another place and shipped the code. So, I did the same thing I was not happy with in the first place.

Result: 
While the bug was closed because of the fix, I knew that a code like that would be difficult to maintain and could lead to more bugs down the line. Plus, although I took over the change from someone else, it would be embarrassing to be associated with a program that had a terrible code. We received another change request for the same batch. I took that opportunity to refactor the class and modularize the code to make it more maintainable.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Tell me about a time you had to change your approach because you were going to miss a deadline

A

Situation:
My co-worker was lagging on a sprint task assigned to him. He was working on a change to select a version of program A in frontend and pass that version to backend to validate data in program B against. Although he was getting data almost correctly in the frontend, he had not written any backend code and the task was due that day.

Task:
Since he did not have much experience with our Python codebase, he sought my help to brainstorm implementation and testing. The task was due in a few hours. First, I asked him how he was planning on completing the task by the deadline and he mentioned that he was referring a diff that had implemented a similar task. While that was a good idea, he was struggling to write tests as he had no experience with them and had not started developing. If he had focused on writing complex tests given his lack of experience and given how long tests take to run, there was no way he could complete the task.

Action:
So, I suggested him to use an alternative Python script, instantiate an object of his class in the script and call the method he was writing with some sentinel data. This would be much quicker. So, I told him to prepare some test scenarios and test them by adding print statements in the method that was being called so he could validate if he was getting the correct value in backend. Since we still needed to do regression testing to validate data, I asked him not to do that in backend and instead, integrate frontend with backend first. Since I had delivered a same change but for another app, my diff had a detailed test plan that even a non-technical user could validate if my diff was working properly. So, if he got exact results as in test document I had attached to the diff, we could conclude that data was correct. 

Result:
Although testing through a temporary Python script is a hacky idea, it was a good call here as it saved him a lot of time. Not gonna lie. He was still not able to complete that task that day, but he was able to send the changes for review which would not have been possible without using the alternate plan we did.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Tell me about a time when you launched a feature with known risks

A

Situation:
At a hackathon in my senior year at college, we were building a safety application that allowed users to add a list of trusted contacts. And if the user felt unsafe, they could press a button and our system would send the list of trusted contacts a text saying that their friend, say Sarah has turned on live tracking and is at the following location and we would send a live tracking link in that text.

Task:
We were working together but were working on our individual assignments. Like, I was focusing on calling the Twillio API to send text alerts to a list of trusted contacts. But one of my other friends was working on db integration. The method that I had written accepted a list of contacts and would send the text to people in that contact list. Although our individual components were working on our individual machines, we started doing integration testing 2 hours before our demo.

Action:
And of course, our application did not work because of an issue with firebase db. We could not quite figure out what the exact issue was. And after 24 sleepless hours of coding, we were getting discouraged. We needed plan B. While my team-mates were trying to resolve the issue, I started simulating a database using Java code.

I was doing something similar anyway to unit test my code. So, instead of storing a list of contacts in db, we stored in an arraylist. So, I pushed my changes and was able to have an end to end application on my machine.

Result:
We demoed the “Java db” simulation code that I wrote in the last minute. The hacky db alternative code that I wrote was inefficient but did not break and got us through the demo. Of course, that experience taught me early on that integration testing was critical before claiming that a project should work. But, I also learned that sometimes, it is important to step out of that loop where we think that we need to have something perfect and have alternatives that are not optimal but will could get you over the line.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Tell me about a time you had a conflict with a coworker or manager and how you approached it

A

Sure, let me tell you about I confronted my team lead because of an unpleasant tone he used with one of my team members.

Situation:
One of my team members had made schema changes to a table in lower testing environment. But quality assurance team had tested his change in a higher staging environment and his change broke the page the tester was testing. So, because of time sensitivity of the change, the tester had raised a critical defect on the issue. My team lead went ballistic on the developer who implemented the change.

Task:
Although I understood my team lead’s frustrations because we had a similar issue couple of weeks ago, I did not think that it was right for him to use such a derogatory tone with a professional in front of the entire team.

Action:
To avoid escalating the situation any further, I did not speak up during the call but after my team lead and I were done with a brainstorming session later in the day, he brought up that same thing again. That’s when I told him, I understand that you were on close terms with him and have a rapport with him. But, it was wrong of you to use that tone in our standup call. Since there were couple of new team members still acclimatizing to the team, such an action gives them a bad impression of the team culture.

Result:
My lead was defensive but he understood what I meant. So, he asked what I would have done. Other than dealing with the situation offline, I would take this as an opportunity to focus on positive reinforcements instead of criticism because that’s proven to be more effective anyway. He incorporated my feedback and started managing his temper and started giving positive reinforcements. I am sure that helped create a better culture in the team.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Tell me about a time you disagreed with your team and convinced them to change their position

A

Situation:
I was working on a change that validated if the racks in a server order request were racks that were being used in production and were not old racks that were deprecated. I had worked on something similar where I validated the accuracy of cost data returned by an API. The validation logic was something like if the racks were active and being used, they should have cost that’s greater than 0.

Task: 
Since I had written code to get the racks that were being used in production, I wanted to reuse that code for the new change. So, I refactored the old validation class and created a base class and then had two child classes extend the parent class and override just a couple of methods to implement any unique validation logic. But my manager did not approve my code changes because of two concerns. Seeing more than expected diff changes, she thought I was had more lines of code and was overcomplicating things. And I was modifying a tested, stable code. 
Action: 
I proved that my approach led to less lines of code by calculating the number of lines I removed from the old validation class and the number of lines that I would have added if I had not refactored my code. I understood her second concern of destabilizing a stable code. But I had done a thorough regression to make sure that my changes did not break the system. 

Result:
I ultimately convinced her to change her position because the refactoring was not a monumental effort, and it was an opportunity for us to continue having a maintainable code. Ultimately, a maintainable code makes a system easy to grasp, scalable and will lead to less headache in the long term. She accepted my changes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Tell me about a time you had a conflict with your team but decided to go ahead with their proposal

A

Situation:
I was designing an alert system where the trigger for the alert event would be a user action. If a user clicked on a button in UI, the frontend would make a request to the backend. The backend would call an API of another service to get the validation results. Then, my API would comb through the validation results to create alerts (which was tasks + emails) for any violations and assign them to point of contact for the product group with those violations.

Task:
I had suggested a design where we would allow the user to click the button and then let backend do its thing and show a pop-up message telling the user to keep an eye on their task board for any tasks with new violations. This is because the existing API that would validate results would take around 45 s and task generation would take around 30 s and it would be a bad user experience to make the user wait for 1.5 minutes. My client’s manager disagreed with my design.

Action:
My definition of good user experience and her definition of good user experience were different. She argued that the user should know the validation results in that screen itself without going to task board so if there were issues, they could resolve the issues right then even if that meant waiting for 1.5 minutes. This would save user the burden in the long run because this would mean the user would not submit bad server orders.

Result:
Of course, if we could have written a new API to validate the results quicker, that would have been the ideal case. But, that was not possible in that sprint. So, I went ahead with her suggestion because the entire point of the alert system was to minimize bad server orders. She was also trying to provide value to our customers but in a different way.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Tell me about a time your work was criticized

A

Situation:
I had developed a web page that had a field to enter a vendor id and since it’s difficult to remember vendor ids, I had also placed a pop-up component besides my text box that on click would open a pop-up window and allow the user to search by vendor names, address, etc. I had demoed the change to my lead, and he was okay with it. But, since I was not entirely satisfied with the aesthetics of pop-up, I decided to replace the old pop up with a more visually appealing pop-up icon.

Task:
When the QA tester tested my change the next day, he raised a critical defect on my change because the pop-up search window although displayed vendor results, it did not have a submit button so the value that user selected was never filled in the vendor id textbox. In other words, it was useless.

Action:
My team lead criticized that I had delivered a change without testing and claimed that if there was a critical defect raised on first day of testing, he wondered how many more defects the system I implemented would have because the pop-up was very small part of it. I heard him out and his concern was valid, but I assured him that the system was robust and well tested and did not have bugs. Since I had worked so hard to implement that system, I was hurt because of his comments, and I did not think they reflected the work I had put in.

Result:
I just fixed the defect. And the QA tester was not able to find any more defects on that page and he was able to complete testing faster than anticipated. Apart from that one defect I introduced by making a late change, my implementation and thorough testing saved the team time allowing us to focus on other items.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Tell me about a time you suggested a new approach

A

Situation:
Our goal was to design an alert notification system that would validate a system, in this case, a system that allowed a user to create and allocate expenses for server orders. And for this use case, my manager had suggested a tool that was a critical monitoring system that would validate a data from a source query against a metric and raise alerts if the data violated the metrics.

Task:
I explored the tool and learned that it was a bit complicated. It needed time series data as a source. And the data we were supposed to validate was not a natural candidate for this. We would also have to write a completely new validation query. I had a requirements discussion call with our client in an hour and our team did not have a clear idea on how to approach this problem.

Action:
So, I asked myself how I could implement this with as little effort and as less resources as possible. So, I suggested having a simple on click listener in frontend. On click of a button, it would call an API that would call another API that already did the exact same validation. All we had to do was call Facebook’s task generation API which was well documented. The task generated by the API would serve as alerts. The tasks came with other notifications like emails and people could interact on the tasks.

Result:
This met our requirements without having to re-invent the wheel. And, also fit our agile development style where we would build a simple version and then iterate on the version.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is the most innovative idea you’ve ever had?

A

Let me tell you about a time I decided to build a free food app.

Situation:
As an international student who put himself through college, I was short of financial resources, and I had allocated $1.65 - $2 a day for food. For every meal. So, I wanted to solve food insecurity in my college. I decided to build an application that would track free food events at my college.

Task:
I had heard of similar apps in other colleges where people could upload information about events with food. But the problem with that approach was people would have to enter information. Too much effort.

Action:
Since I got several emails about events with free food, I wrote a Python script that logged in to an email account and read emails. Based on that it filtered emails with free food and put those events in a database. And I wrote an Android app that refreshed user’s feeds with events from the database. All a user had to do was pull down on the screen once.

Result:
Although the app could not take off because college did not allow me to release the app because they claimed that it would encourage freeloaders leaving people who were genuinely interested in the events with less food, the friends who transferred the APK from my laptop enjoyed free food. One of the friends switched his meal plan to one with less swipes and he attributed his decision to the app I wrote. I think that was as one of the most innovate ideas I’ve had.

17
Q

Describe an instance when you used a lot of data in a short period of time

A

Let me tell you about a time I fixed an issue that I did not experience.

Situation:
I worked on an application that ran several validation rules against server orders related data. One of the validation rules validated if the sum of powers that servers in a region are using is greater than power allocated for the region. The difference between sum of power servers were using and allocated power limit was displayed as a violation.

Task:
My manager asked me if my application was displaying negative violations in prod. Negative violations indicate excess power supply. I sent her a screenshot of a working application with both positive and negative violations. That was the expected behavior. But, she said that a user complained that they were not able to see the negative violations.

Action:
I had screenshot of the issue but she had taken the screenshot a night before. So, I reached out to the user and asked her to run the validation rule now and send me the screenshot of the results. I saw that she and I were getting different results. So, I thought maybe we had done some kind of rolling deployment and she was in a different geographical region than me. So, she happened to get different results. So, I reached out to my colleagues in east coast, west coast and mountain time zone and asked me to send me the results. The people who were able to access the page sent me the results that I had gotten and people who had never worked on that app did not have access to the app and could not send me the results. I still could not replicate the issue for more than one person. No one had reported about the issue. So, I asked the person experiencing the issue when she had joined the company. She said about two weeks ago.

Result:
Suspecting that it might have been a permissions issue, I started debugging the code line by line. Did not find any issue in backend but in front end noticed that there was a gatekeeper check that if passed would display regions with excess power supply and thus, negative values, only if user passed a security check. I commented the line out. But, I still needed to test my fix. So, I asked if there was another person who was new to her team and there was one. So, I was able to replicate the issue on her machine and then, I shipped the fix based on the hunch. After deployment, the issue was resolved.

This was a tricky bug because none of the developers in my team had the issue But, with enough communication and enough data across a wide spectrum, I was able to find the issue and fix it.

18
Q

Tell me about the most challenging project you ever worked on

A

Let me tell you about the first time I worked on a big project with team members and leads scattered around the US.

Situation:
I, along with five other developers, were working on implementing a system for a state government, that would detect any changes in Personally Identifiable Information (PII) and financial situation and sync the changes with the federal’s government data pool.

Task:
I had a task of writing HTML and JS code to display about 5-8 fields in two sections and writing backend Java APIs to fetch information from 2-3 and displaying the values on the screen. The problem was I just did not know where to start. I did not get a formal KT session about the code base or the system. The requirements were unclear. The tables I was supposed to fetch were not even created. My screens were 2nd and 3rd screen in the flow and the first screen was delivered late. There was a lot of ambiguity, and I did not understand how to navigate through it.

Action:
Because I was getting stuck frequently, I asked my lead to pair me up with a senior developer. The senior developer helped me out but when he was busy, he asked me to debug and figure it out. I asked him how I could debug effectively, and he said through experience. That was not good enough. So, I went through a course on Udemy on debugging techniques. I also started having lunch with people not from my team but who had worked with the same code base to learn more about succeeding in the project. And I followed up constantly with people to make sure the first screen and the tables I needed were created. If they were done at 6:30 pm, I stayed late to finish the tasks that depended on their changes. I am not exaggerating when I say this. One night, I was so behind that I decided to stay in the office all night to catch up.

Result:
Despite my efforts, I missed the deadline by 10 days. Although I was disappointed to miss the deadline on my first big task, the silver lining of this project was that I learned that I needed to communicate better to get more help. So, I deliberately tried to establish personal relationships with my co-workers so I could leverage that camaraderie to get more help. When I joined other team in that project, we had newer members join our team. I worked with my lead, managing the workloads of newer members, pairing them with senior engineers to make sure that their first big project turned out better than mine.

19
Q

How do you prioritize in your current role?

A

Sure, let me discuss about my prioritization workflow starting from planning tasks for sprint, handling ad-hoc requests, helping teammates, participating in team meetings.

Let’s start with how I assign tasks for a sprint. 90% of the things I work on come through the backlog. Before the start of every sprint, I ask for a clear prioritization on a task. We need to answer three questions to determine that. What is the latest date by which we can complete the task? What is the ideal deadline for the task? What is the necessity of the task? Is it just a wishlist sort of thing? Is it blocking something? Is it something that people have wanted for a long time? So, after prioritization. I take high priority items greedily and commit to the items based on my timeline analysis.

Then, my number one goal is to deliver the items that I have committed to. To do that, of course clear prioritization helps to avoid over-committing. So, whenever possible, I like to start my day by working on something I have committed to for the sprint because I am most productive in the morning. But sometimes I can’t do that because before I start working on my sprint tasks, I scan the chat and email for any messages for about 1 minute. Sometimes, there are urgent bugs that affect customers’ work and need to be resolved right away.

In that case, I pause my sprint task until I have resolved urgent issues. If they are not urgent, they go to the backlog and the prioritization process.

Of course, when working on a team, it is important to manage team responsibilities. Once I am done with my first block of productive period, I attend meetings and schedule any brainstorming calls with co-workers. I let my team members know about my work habits and make a conscious effort to learn about their habits. So, we can get the best out of each other.

To summarize, do a thorough analysis before committing on a task, follow through on your commitments, prioritize urgent bugs, communicate work habits to bring the best out of the team.

20
Q

Describe a time you made a mistake

A

Let me tell you of a time I accidentally shipped duplicate code in JS file to production. Duplicate in the sense that same JS file had two methods with same name. And they were multiple methods that were like that. So, some lines of code were copied over twice.

Situation:
We were working on a web portal for people to apply for Covid related benefits. And in that project, we were using a version control system called Clearcase that we had installed on Eclipse and the system was not as intuitive as Git. Like, there was no way of automatically merging two people’s code. So, to resolve merge conflicts, you had to make a backup of the file with your changes. Then, pull latest code from master and then checkout that file and then use an external diff tool like Beyond Compare to manually merge your changes with the file you checked out.

Task:
And we were working on a very intense project where multiple people were modifying same file and were shipping changes frequently. And there was a time when we were trying to fix issues, but those fixes were not working. Like, if we had an on-click listener for an element, when we modified the code in the listener, we did not get expected results. Frustrated and on a tight deadline but a determination to make fixes, we added hacks like adding an extra event listener like onmouseup or onmousedown because on-click was not working. We released the app to the public.

Action:
I want to understand why things don’t work. That will help me close gaps on my knowledge in the long run. So, I spent a day scanning the code for any issues and tracked all the changes that were checked in. I noticed the issue I mentioned earlier and when I investigated who had done that, it was me.

Result:
Thankfully, because I had identified the issue immediately after we released the feature, I shipped the fix that night and the issue was resolved. But, I learned that in demanding situations, while it is extremely important to keep things moving, it is also important to take a pause and analyze why things are not working. Moreover, since our version control system was not the best, we should have had processes like more peer code reviews before releasing the product even though the timeline was very aggressive.

21
Q

Tell me about a time you applied judgment to a decision when data was not available

A

Temporary fix for CARES duplicate info stored in table. Using a hash key.

Situation:
We had a strange issue in a web portal that people used to submit applications for financial assistance. Let’s say a person applied on the behalf of their family. We stored the details of each family member in a table called, say People. In that table, for the same application number, for some of the family members, the system inserted repeated records in the table.

Task:
One of my co-workers noticed this issue and asked my help to figure out the issue. Although I tried replicating the issue on a test environment using different browsers both on desktop and on mobile, I could not replicate the issue.

Action:
Since having duplicate entries in the application could slow down benefit approval process for the applicants, I prepared DML queries to fix the issues manually. So, delete each duplicate record from a couple of tables and make sure that the mapping of data between one table with the issue and another table with the issue was consistent. After executing those DML queries, we still needed to avoid the issue in the future. Since we could not find the root cause, I prepared a workaround fix. The fix was for every record we inserted to the db for an application, make a hash key using the person’s name, ssn and dob and avoid inserting the record if we have stored a record with the same name, ssn and dob.

Result:
While I still would have loved to figure out the root cause, the workaround worked. I checked the database frequently and made sure that new instances of the same issue did not arise. And the fix that I made was on an empirical analysis because some people did not have SSN and the fix should have worked for them as well. That’s why I added name and dob into the hash key.

22
Q

Describe a time you stepped in to help a struggling teammate

A

Nugget:
Sure. Let me tell you about a time I helped a new developer in the project with his workspace setup.

Situation:
One of the developers reached out to me because he could not resolve a bug in his workspace. So, what was happening was a Java project A had a dependency on another Java project B. The dependency was managed by placing a Jar of project B in build path of project A. But project A threw a runtime error because it could not find a method in project B.

Task:
I had gone through a similar issue before. So, I helped him resolve the issue.

Action:
But I did not stop there. How a team treats its newcomers tells a lot about the team. So, I asked him how far along he was in workspace setup and if he had any difficulties following instructions in the setup document. And, he mentioned a few difficulties I had. So, I not only worked with him to resolve each of his queries, but I also offered him advice on the optimal strategies to follow when setting up a workspace and maintaining it. Moreover, if he was stuck and did not get a response from me, I gave him a list of contacts he could reach out to. I also taught him how to contact people so you get a response out of them because that would be easier on me in the long term.

Result:
A week later, we had two new developers join in and when they reached out to me for workspace issue, but I was working on another priority, I pointed them to the person I had helped earlier. My decision on going that extra mile turned out to be good investment in time as it not only helped newcomer realize that their team cares about them but also empower other developers who might run into similar issues in the future. In fact, because newcomers spoke so favorably of me, my lead put me in charge of almost completely managing project onboarding for several developers in the future.

23
Q

Tell me about a time you helped boost your team morale

A

Let me tell you about an interesting compromise I made.

Situation:
We were working on a web portal that people could use to apply for Covid related assistance. Our team was struggling to meet the deadline as there were still so many unresolved defects on the system that our team was working on a Saturday to resolve them. My lead though, was not available because he had a religious ceremony to attend. At that time, I had 14 months of industry experience and despite being the least experienced engineer in the industry, my lead put me in charge of getting defects count to 0.

Task:
My task was to continuously track any new defects and mobilize a team of junior and mid-level software engineers to resolve the defects. Of course, I also resolve the defects.

Action:
To motivate my team who were frustrated of having to work 9 hours on a weekend, I listened to their concern and told them, we would work for 6 and half hours as with the quality we had in our team, we could achieve the goal of zero count by that time. After 6 hours, we had 1 defect remaining and it was assigned to a developer whose wife lived in a different state and had come to visit him. So, I told him and every other developer in the team to sign off. I took the defect instead.

Result:
Although it took me 4 hours to resolve that defect, our team had a consumer surplus because they signed off way earlier than they had anticipated. If I were in a position of the engineer, I claimed the defect from, I would really appreciate if someone showed empathy to do something similar for me. Putting myself in his shoes really drove my decision. And my lead was happy with our progress as we got the defect count to zero as well.

24
Q

Tell me about a time you taught yourself a skill

A

Sure. Let me tell you about a time I learned Spanish. Gotta admit. Although I still can’t speak it fluently or understand 100% of the words a native speaker is speaking at their “normal” pace, I can express myself properly. And I can bond with a person who only speaks Spanish.

Situation:
I learned Spanish because I like to learn new things. And if I was gonna learn a foreign language other than English, it had to be Spanish because so many people in the Americas and Europe speak it. When I am learning a new skill, the most important thing I like to do is establish a habit. And establishing habit is easier when you can pair your new habit with an existing habit. And I don’t know why I am telling this story in an interview, but you know what existing habit I paired learning Spanish with? Going to the bathroom

Task:
Every time I went to the bathroom, I would open my Duolingo app and would continue the lesson I had stopped at earlier. So, in two months, I completed the entire Duolingo course on Spanish. And I was feeling adventurous. I was like you know what it’s time to put my knowledge to test.

Action:
And I was hanging out with my friends, I proposed an idea to go to Mexico for spring break. Not touristy areas like Cancun. I wanted to go to Mexico City where if I did not speak Spanish, I would struggle. In less than 20 minutes, I convinced 2 of my other friends to join me and we booked 3 tickets to Mexico City. Our flight was in a week. And in that week, I memorized 1000 most common Spanish words and went through an online course to understand Spanish grammar.

Result:
And it worked. I knew what words to use and although I did not speak things in the correct tense or they were not idiomatic, people understood me. I made Mexican friends and they could not speak English. I ordered foods, I negotiated for lower prices. All that in Spanish. There was this moment I had with our boat guy (don’t know the word for it) where I was having such a deep conversation about life with him. And that moment was heavenly and made me realize this is what I learned Spanish for.