<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Shailesh Gothi]]></title><description><![CDATA[I am excited to write about my experiences as I navigate through my life as a Software Engineer.]]></description><link>https://blogs.shaileshgothi.com</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 11:04:24 GMT</lastBuildDate><atom:link href="https://blogs.shaileshgothi.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Getting better at decision making]]></title><description><![CDATA[Decisions are something that we make every day. Some decisions are simple, and some are complex. We spend days evaluating a complex decision. And our inability to come to a decision results in stress. As pending decisions increase, we feel more busy ...]]></description><link>https://blogs.shaileshgothi.com/getting-better-at-decision-making</link><guid isPermaLink="true">https://blogs.shaileshgothi.com/getting-better-at-decision-making</guid><category><![CDATA[life]]></category><category><![CDATA[life-hack]]></category><category><![CDATA[Soft Skills]]></category><category><![CDATA[Learning Journey]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Shailesh Gothi]]></dc:creator><pubDate>Mon, 09 May 2022 07:39:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1652081783025/33II3VnoJ.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Decisions are something that we make every day. Some decisions are simple, and some are complex. We spend days evaluating a complex decision. And our inability to come to a decision results in stress. As pending decisions increase, we feel more busy and stressed. Many of my friends ask my opinion when they cannot make decisions. I also sometimes take a long time to make certain decisions. Looking back, it feels lots of time there was over-analysis. These got me thinking, What makes a decision complex? Why are we unable to make decisions faster? I am writing this blog to share my thoughts and experience about it. </p>
<p>As Jeff Bezos wrote in <a target="_blank" href="https://www.sec.gov/Archives/edgar/data/1018724/000119312516530910/d168744dex991.htm">shareholder letter</a>:</p>
<blockquote>
<p><em>"Some decisions are consequential and irreversible or nearly irreversible -- one-way doors -- and these decisions must be made methodically, carefully, slowly, with great deliberation and consultation. If you walk through and don't like what you see on the other side, you can't get back to where you were before. We can call these Type 1 decisions. But most decisions aren't like that -- they are changeable, reversible -- they're two-way doors. If you've made a sub-optimal Type 2 decision, you don't have to live with the consequences for that long. You can reopen the door and go back through. Type 2 decisions can and should be made quickly by high judgment individuals or small groups."</em> </p>
</blockquote>
<p>Even though the above quote was for business decisions, I feel the same is relevant to decisions in our life. We spend lots of time and energy making some decisions and sometimes are stuck in the analysis loop. Many of us, including myself, incorrectly categorize two-way door decisions as one-way doors.</p>
<p>I think there are two reasons why we do not make faster decisions. One, we are afraid of failure. Second, we try to predict the outcome with little data. Let's take an example of a common decision that everyone makes sometime in their career - Whether to change a job or stay in their current place. What do you think, is it a one-door or two-door decision? Give a thought before reading forward. Let's do the analysis. Below are some common thoughts while making this decision:</p>
<ul>
<li>If I change, I can find a better role and pay, but finding a new job is hard.</li>
<li>My current team is good; I have gotten used to working here. If I change, I don't know how it would be at my new workplace.</li>
<li>If I stay, there is a chance of me getting promoted in the next six months. But, the work has become monotonous. </li>
</ul>
<p>There is "but" attached to every pro in our thoughts, and we are stuck in the loop. Let's now decide to change jobs. Once we have taken that decision, stress is gone, and only work remains. We start applying and preparing for the interviews. Now, we have more data - The number of job calls, offered pay, and role. Based on this, we can evaluate whether it is suitable for us to change jobs. If there aren't opportunities as we expected we could stay back. If we find a better opportunity, we can take it. It initially felt like a one-door decision, but now it has become a two-door decision. Even if we decide to stay back, we have learned what it takes to find a new job, and we can make better decisions next time. </p>
<p>Prioritization is another essential part of making an efficient decision, and most of us are very bad at it. We don't have to make all decisions now. It is essential to learn what decisions are necessary to make now versus later. We feel all the decisions are equally important and get stressed analyzing them. For example,  </p>
<ul>
<li>We want to find a new job </li>
<li>We also want to work towards a promotion at current job</li>
<li>We want to achieve some fitness goals.</li>
<li>We want to travel and visit places.</li>
</ul>
<p>If we decide to take all four decisions simultaneously, we will be buried with lots of work and stress. All the above decisions are essential to take, but we can tackle them in a different order.</p>
<p>I like the 2 Minute Rule described in the blog - <a target="_blank" href="https://www.chrisbehan.ca/posts/atomic-habits">Atomic habits</a>. The rule is - "When you start a new habit, it should take 2 minutes or less". A decision can be broken down into multiple minor decisions. A real example - I have been thinking about creating my website for the past year. But, I was never motivated enough to start working on it. I was stuck in an endless cycle of - What framework would I use? How would it look? What it will contain? Since making a website was not a mandatory thing for me, I could never prioritize to start working on it. After reading <a target="_blank" href="https://www.chrisbehan.ca/posts/atomic-habits">blog</a>, I decided to buy a domain with my name. Since I purchased the domain, I have been curious to explore it. As a first step, I redirected it to my LinkedIn page. Next step, I  hosted a website with a single page, "Coming soon." Later, I published a homepage with my photo and my current role, and another page with my work experience and projects. And, now I have my website <a target="_blank" href="www.shaileshgothi.com">www.shaileshgothi.com</a>, where I have published two blogs within two months. </p>
<p>These are my learnings about the decision-making process. I am also getting better at it day by day and decision by decision. Let me know your thoughts, wisdom, and tricks about decision-making in the comment. Or, feel free to drop me an email at <a target="_blank" href="mailto:shaileshgothiece@gmail.com">shaileshgothiece@gmail.com</a></p>
]]></content:encoded></item><item><title><![CDATA[Software developer interview preparation guide]]></title><description><![CDATA[Software engineer interviews are challenging and require lots of preparation. Internet is filled with content that can help with the preparation. But, what should be your strategy for the preparation? What steps you should take if you need to find a ...]]></description><link>https://blogs.shaileshgothi.com/software-developer-interview-preparation-guide</link><guid isPermaLink="true">https://blogs.shaileshgothi.com/software-developer-interview-preparation-guide</guid><category><![CDATA[interview]]></category><category><![CDATA[Computer Science]]></category><category><![CDATA[Competitive programming]]></category><category><![CDATA[Technical interview]]></category><category><![CDATA[software development]]></category><dc:creator><![CDATA[Shailesh Gothi]]></dc:creator><pubDate>Sun, 06 Feb 2022 06:06:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1642997616649/Pe-K6-LcQ.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Software engineer interviews are challenging and require lots of preparation. Internet is filled with content that can help with the preparation. But, what should be your strategy for the preparation? What steps you should take if you need to find a new job? What are some tricks to cracking these interviews? These problems are even more prominent when you have limited time to find a new job.</p>
<p>I recently faced a similar challenge. It was even more significant for me because I had to find a new job in a limited time. Every challenge comes with lots of learnings, and this one too. I am sharing all my learnings in this blog to accelerate someone’s interview success and future reference. You never know, haha.</p>
<p>This blog aims to guide you through different challenges faced while preparing for software engineer interviews. References to comprehensive materials and websites are out of the scope of this blog. Stop here and save your time if you are looking for that.</p>
<h2 id="heading-resume">Resume</h2>
<p>To land a new job essential part is to receive interview calls. To get interview calls resume plays an important role. After applying for 100s of different jobs, multiple reviews from friends, company’s, and career counselors, I have learned few things: </p>
<ol>
<li>Select a cleaner resume template. Nowadays, a soft copy of your resume is used, which allows you to use different colors, hyperlinks, font sizes, etc. A good resume template makes use of this and makes it easier to understand your background at a glance. I have provided the template that I used. Credit goes to a friend who created this; I got a lot more interview calls after this.</li>
<li>Write a resume from the perspective of a technical recruiter. That means, write in a way even your civil engineer friend can understand :). </li>
<li>Describe your past work experience in a format that is easier for others to follow. It becomes hard to follow if you provide internal jargon about your project. I have found the format "Did X using Y to achieve Z" easier for anyone to understand. Look for examples in the resume template.</li>
<li>Recruiters spend ~30 secs on a resume. Therefore, highlight things in your resume that would help the recruiter select your resume. Generally, people highlight the technology; there is a separate technical skills section for that. Most of the time, you want to highlight the achievement. However, there can be an important technical problem that you might want to highlight in some cases. </li>
<li>Most companies filters resume using <a target="_blank" href="https://www.jobscan.co/blog/8-things-you-need-to-know-about-applicant-tracking-systems/">ATS</a> (Application Tracking Software). Therefore, make sure your resume format is compatible with ATS. I have found <a target="_blank" href="https://www.jobscan.co/#uploadWrapper">Jobscan.co</a> useful to match my resume to a job description.</li>
</ol>
<p>Resume Template <a target="_blank" href="https://docs.google.com/document/d/1CxTPM--FTA1-t9wzWwFKbtXCDX51oNBJ7Zr0lo9rW9Q/edit?usp=sharing"><strong>Download</strong></a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1644116801410/meRORAj3t.png" alt="ResumePreview.png" /></p>
<h2 id="heading-job-applications">Job Applications:</h2>
<p>It is important to start applying immediately. It takes some time from application to first recruiter calls to actual interviews, which should give you ample time to prepare for the interviews. If you would like some more time to prepare,  just ask your recruiter. Recruiters are always on your side; they have benefits if you are selected. So, ask all the questions and help that you need.</p>
<p>Below are some things that I learned about job applications:</p>
<ol>
<li>Companies value referrals from existing employees. Make sure to get referrals for most of your applications. Try to reach out to your LinkedIn connections for the referral. I also got many of my referrals from <a target="_blank" href="https://www.teamblind.com/">Blind</a>. You can send DMs to people on it. People are willing to help, you just need to ask for it. </li>
<li>Referrals are limited, so use them wisely. Use websites like <a target="_blank" href="https://www.jobscan.co/#uploadWrapper">Jobscan.co</a> to check your resume against the Job description and apply accordingly.</li>
<li>Apply to recently posted jobs. Applying to older jobs will waste your referral.</li>
<li>Try to reach out to recruiters on LinkedIn using direct messages. I have got some of my interviews from there too.</li>
<li>Change your LinkedIn status open to work and buy a premium subscription. Like you, recruiters are also looking for people relevant to the job. Many recruiters directly reached out to me with an open job position. </li>
</ol>
<h2 id="heading-interview">Interview:</h2>
<p>Unfortunately, software developer interviews focus on things you rarely need during your actual work. Even if there is a need, you will refer to some internet implementation instead of your code. However, it is also challenging to design an interview process that is metrics-driven, deterministic, and unbiased for all the candidates. So, instead of cursing the process, accept the reality and start doing what is required.</p>
<p>To get myself up to the speed for interviews, I always start by quickly scanning <a target="_blank" href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_1?crid=3AATA9XU4J3ID&amp;keywords=cracking+the+coding+interview&amp;qid=1642983214&amp;s=books&amp;sprefix=cracking+the+coding+interview%2Cstripbooks%2C118&amp;sr=1-1">Cracking the Coding Interview: 189 Programming Questions and Solutions</a> book. Based on the role you are applying for, your interview will have zero to multiple interviews in the below areas. </p>
<h3 id="heading-algorithms">Algorithms:</h3>
<p>This round focuses on data structures and algorithms. It is important to know how candidates are judged in this round to devise a strategy for preparation. In this round, interviewers judge on below four criteria in most companies.</p>
<ol>
<li><strong>Problem Understanding</strong>: Interview questions are kept vague on purpose so that interviewers can judge whether the candidate clearly understands the problem before jumping to solving it. Focus on asking lots of questions to understand the problem and stating all the assumptions related to the problem even though it seems obvious.</li>
<li><strong>Problem Solving</strong>:  You are judged on how you reach the solution, how optimized your solution is, your thinking style. It is important to talk through your thought process. Interviewers are evaluating not only your technical abilities but also how you approach problems and how you try to solve them. General practice is that you should describe your solution before writing code. However, everyone has their style of thinking and solving a problem. If you prefer to write some pseudo-code while thinking, mention it to your interviewer and clarify that you prefer to write some code to think, and you would be writing complete code once you are clear of the algorithm. It is important to know interviewers are also developers, and they understand everyone has their style. </li>
<li><strong>Communication</strong>: Judging criteria here is how clearly you can express your thought process and <strong>not</strong> how good is your English. Clear communication is essential while working in a team.</li>
<li><strong>Quality</strong>: You should walk through your code with a sample example after writing the code. Describe all the test cases and explain how your code handles them. Concentrate on any corner cases that you have missed.</li>
</ol>
<p>Keeping the above judging criteria in mind, below is some of the strategy:</p>
<ol>
<li>Everyone has heard of <a target="_blank" href="https://leetcode.com/">Leetcode</a>. I would recommend taking a premium subscription and focusing only on company-specific problems once closer to the interview date.</li>
<li>Watch some mock coding interview videos on <a target="_blank" href="https://www.youtube.com/">Youtube</a>; I have found <a target="_blank" href="https://www.youtube.com/c/ExponentTV">Exponent</a> channel to be useful. The mock interview gives a clear perspective of answering based on the above four judging criteria.</li>
<li>Take some mock interviews from <a target="_blank" href="https://interviewing.io/">Interviewing.io</a>. It is okay to spend some money here if you want to improve specific interviewing skills.</li>
</ol>
<h3 id="heading-behavioral">Behavioral:</h3>
<p>This round focuses on understanding your past work experience and judging whether you will be a good fit in the team. It's hard to understand the judging criteria for this round. Below are some of the strategies to prepare for this round:</p>
<ol>
<li>Create a document that lists all the possible behavioral questions asked and your answers to them. The same situation can fit multiple questions so that you won't require lots of them. No question should be a surprise to you during the interview.</li>
<li>Answer in STAR (Situation, Task, Action and Result) format is recommended. But, sometimes, it becomes challenging to align your thoughts to provide your answer. The trick here is to answer in bullet points; it helps align your thoughts simultaneously, making it easier for the interviewer to follow. For example, "In my past company, there was a situation with two problems: problem 1, and problem 2. To address it, I split it into three tasks: Task1, Task 2, and Task 3 and took two actions: action1 and action 2. Because of this, there were three benefits/improvements/learnings."</li>
<li>Learn about the company's cultural values and mention them in your answers wherever relevant. </li>
<li>Prepare to answer some tough questions like, why are you leaving your current job? Your strengths and weaknesses. Do not try to disguise your weakness. You must understand your weaknesses and take the necessary steps to improve them.  </li>
</ol>
<h3 id="heading-system-design">System Design:</h3>
<p>In this round, you and the interviewer work together in designing a solution to a problem. There is no one correct answer here. Interviewers generally check if you can identify problems, various systems that can help solve them, and the pros/cons of using one over another. Learning about the solution to various system design problems can provide knowledge of different approaches and when to use them. For example, when to use SQL vs. NO-SQL ?.</p>
<p>General practice is to describe your system design solution in the below format. Note you don't need to cover all the points for each system design interview. It depends on the problem and what the interviewer wants to focus on.</p>
<ol>
<li><strong>Functional Requirements</strong>: The goal is to list down all the features that will be supported by asking questions to the interviewer. </li>
<li><strong>Non-functional Requirements</strong>: The goal is to list down system attributes such as security, reliability, performance, maintainability, scalability, and usability requirements for your system.</li>
<li><strong>Capacity estimation</strong>: The goal here is to estimate the total traffic Number Request/sec or Number of User/sec, total space requirement, etc. </li>
<li><strong>API Endpoints</strong>: List down all the public and private API endpoints with their parameter that your system will expose.</li>
<li><strong>Database Schema</strong>: Write some table schema to give an overview of how data is stored.</li>
<li><strong>Architecture Diagram</strong>: Finally, draw a block diagram of how different components will interact and provide a user request flow.</li>
</ol>
<p>Below is some strategy on how to prepare for this round:</p>
<ol>
<li>Watch mock system design interviews on Youtube to understand how to answer in the above format. I found <a target="_blank" href="https://youtu.be/NtMvNh0WFVM">this</a> helpful, but many more on Youtube.</li>
<li>Watch some system design tutorials on youtube and read <a target="_blank" href="https://github.com/donnemartin/system-design-primer">system-design-primer</a> on GitHub. The goal is to learn about different systems and their usage/trade-offs. </li>
</ol>
<h2 id="heading-focus">Focus:</h2>
<p>Keep calm and do not panic. Know that interviewers are there to help you out. If you're feeling nervous, let them know, take a few seconds, take a deep breath, and clear your mind of all fear. Take rejection as a process of learning. Ask recruiters for feedback on each round and focus on weaknesses. Remember to ask for feedback on a call and never on an email.</p>
<h2 id="heading-job-offer">Job Offer:</h2>
<p>Time to negotiate your offers.</p>
<ol>
<li>Use <a target="_blank" href="https://www.levels.fyi/">Levels.fyi</a> to understand the average salary for each role.</li>
<li>Watch some mock negotiation videos to understand the different questions asked and how to answer them. I have found <a target="_blank" href="https://www.youtube.com/watch?v=fyn0CKPuPlA&amp;ab_channel=Exponent">this</a> video helpful. </li>
<li>Do not first quote numbers from your side. Instead, try to ask the pay bracket for this role. If forced, ask for more time to think and evaluate the number to quote.</li>
<li>The easiest way to negotiate is with a competing offer. If you have multiple interviews lined up, notify them you might soon get an offer and request them to move faster with the interview process. At the same time, delay your offer and negotiation by asking for more time to consult a family member or a mentor.</li>
</ol>
<h2 id="heading-conclusion">Conclusion:</h2>
<p>Finally, it is important to believe in yourself. Sometimes you cannot anticipate a fall or do anything to fix it. All you can do is learn from it and move forward. May be future has something better for you, like in my case. </p>
<p>I want to thank all my friends and colleagues for the referrals and support. Special thanks to a friend (anonymous) for the proper guidance and teaching some of the interview skills listed above.</p>
<p>You never know when you will be under the clock to search for a new job. It is good to be always prepared. Solving leetCode problems once in a while keeps you relevant for interviews. You should always be prepared for system design because it is helpful at work. Reading some system design books/blogs will also help you grow in your current job. </p>
<p>If you have some learnings of your own, do let me know in the comments. I am happy to learn from others and improve my interviewing skills. I could also add them to the blog. Also, feel free to provide feedback, good or bad, in the comments. You can also drop me a mail at shaileshgothiece@gmail.com</p>
]]></content:encoded></item></channel></rss>