<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rohit Sahay</title>
    <description>The latest articles on DEV Community by Rohit Sahay (@rohitsahay18).</description>
    <link>https://dev.to/rohitsahay18</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F288931%2F286df120-b82b-424b-89da-90724de34109.jpg</url>
      <title>DEV Community: Rohit Sahay</title>
      <link>https://dev.to/rohitsahay18</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohitsahay18"/>
    <language>en</language>
    <item>
      <title>What really matters in a coding interview?</title>
      <dc:creator>Rohit Sahay</dc:creator>
      <pubDate>Wed, 18 May 2022 17:57:50 +0000</pubDate>
      <link>https://dev.to/rohitsahay18/what-really-matters-in-a-coding-interview-59ch</link>
      <guid>https://dev.to/rohitsahay18/what-really-matters-in-a-coding-interview-59ch</guid>
      <description>&lt;p&gt;Let’s face it, coding interviews are &lt;em&gt;challenging&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;As a &lt;em&gt;seasoned&lt;/em&gt; software engineer who has been on both sides of a coding interview at both small and big tech companies, I know what it's like.&lt;/p&gt;

&lt;p&gt;And while it's definitely not the only way to measure your ability as an engineer, technical interviews do give employers important signals about candidates.&lt;/p&gt;

&lt;p&gt;Below I’ve written the &lt;em&gt;4 most important&lt;/em&gt; things that you &lt;em&gt;absolutely must do&lt;/em&gt; in every coding interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understand the problem.
&lt;/h2&gt;

&lt;p&gt;This is not only the first thing you should do, but also where I've seen most candidates fail. &lt;/p&gt;

&lt;p&gt;There’s nothing worse than diving straight into a solution &lt;em&gt;without&lt;/em&gt; asking any questions. Especially when the solution doesn’t solve the exact problem at hand.&lt;/p&gt;

&lt;p&gt;Even if the problem is obvious, it’s important to &lt;em&gt;repeat&lt;/em&gt; the question and meet an agreement with your interviewer on what problem you’re solving.&lt;/p&gt;

&lt;p&gt;This is also the best time to verify your assumptions, and talk through any edge cases. Some edge cases may be important to consider, while others the interviewer might not care about as much. Sometimes your interviewer might not even require you to solve edge cases at all.&lt;/p&gt;

&lt;p&gt;Find out exactly what the interviewer wants you to solve for.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Discuss your initial thoughts.
&lt;/h2&gt;

&lt;p&gt;Once you’ve understood the problem, still, &lt;em&gt;don’t code yet&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Pause for a moment to think through one or two possible solutions. They don’t have to be the most optimal. &lt;/p&gt;

&lt;p&gt;This is where a solid understanding of data structures and algorithms comes in handy. With enough practice, you’ll be able to solve coding problems using common algorithms and patterns.&lt;/p&gt;

&lt;p&gt;Take the time you need to learn these concepts often tested in coding interviews. Take a look at my &lt;a href="https://www.stackbash.io"&gt;online course on data structures and algorithms&lt;/a&gt; to solidify your understanding.&lt;/p&gt;

&lt;p&gt;Once you’re ready with at least one solution, &lt;em&gt;clearly&lt;/em&gt; articulate the approaches at a high-level with your interviewer. Feel free to talk through the approaches as well as draw diagrams to help explain your thoughts.&lt;/p&gt;

&lt;p&gt;Remember, coding interviews are not only testing you on your ability to come up with a solution. You’re also being tested on your &lt;em&gt;communication skills&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;This gives the interviewer an idea of what it would be like for the team to actually work with you on a technical problem.&lt;/p&gt;

&lt;p&gt;Finally, I highly recommend asking the interviewer if they have any questions about your solution. Make sure to &lt;em&gt;refine&lt;/em&gt; your solution based on your discussion with the interviewer.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Code a solution.
&lt;/h2&gt;

&lt;p&gt;Now that you and the interviewer have some sort of understanding about your solution, you can finally write it up. &lt;/p&gt;

&lt;p&gt;Obviously, you want to make sure to write clearly written &lt;em&gt;working&lt;/em&gt; code. Again, it’s more important to come up with a &lt;em&gt;working&lt;/em&gt; solution, even if it’s not the most optimal.&lt;/p&gt;

&lt;p&gt;I usually use Python for coding interviews, since it has good standard libraries and its syntax looks most similar to English. This helps me explain the solution better (more on that soon).&lt;/p&gt;

&lt;p&gt;But it’s always best to use the language that you’re most comfortable with. This gives yourself the best chances of coming up with a &lt;em&gt;working&lt;/em&gt; solution within the time constraints.&lt;/p&gt;

&lt;p&gt;One &lt;em&gt;critical&lt;/em&gt; tip I have here is to go ahead and use those standard libraries to do boilerplate work for you. As long as you explain to the interviewer what’s happening under the hood, and its underlying time and space performance. &lt;/p&gt;

&lt;p&gt;For example, if you want to convert an array of integers into a hash table of each elements counts, go ahead and use Python’s &lt;code&gt;collections.Counter(arr)&lt;/code&gt; instead of manually writing out a for loop that updates a dictionary with each element’s count. As long as you explain what &lt;a href="https://docs.python.org/3/library/collections.html#collections.Counter"&gt;collections.Counter&lt;/a&gt; does, and the underlying time and space performance.&lt;/p&gt;

&lt;p&gt;This will save you time, and let you focus on the actual problem at hand that the interviewer cares about most.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Explain your solution.
&lt;/h2&gt;

&lt;p&gt;If you’re able to explain what you’re doing while you’re writing code, great! &lt;/p&gt;

&lt;p&gt;If you can't, its okay. It’s more important to write clearly-written working code. You can explain your solution to the interviewer afterwards.&lt;/p&gt;

&lt;p&gt;When talking through your solution, it's important to express the solution's performance in terms of memory consumption and run time with respect to the input size.&lt;/p&gt;

&lt;p&gt;We formally call this &lt;a href="https://www.stackbash.io/big-o-notation"&gt;Big O Notation&lt;/a&gt; in computer science. &lt;/p&gt;

&lt;p&gt;Next, step through your code with an &lt;em&gt;example input&lt;/em&gt; and explain how your solution would handle it.&lt;/p&gt;

&lt;p&gt;Make sure to talk through edge cases and how your solution would handle them as well.&lt;/p&gt;

&lt;p&gt;As you go through your solution, &lt;em&gt;refactor&lt;/em&gt; your code wherever there's a &lt;em&gt;meaningful opportunity&lt;/em&gt; to do so. Your goal here is to make your code as easy to understand as possible. This gives a signal to your interviewer that &lt;em&gt;code readability&lt;/em&gt; matters to you. &lt;/p&gt;

&lt;p&gt;In reality, code is read more than it's written. There's a high chance that someone else will have to read and even change your code. &lt;/p&gt;

&lt;p&gt;Finally, &lt;em&gt;retrospect&lt;/em&gt; on your solution. Often times you might run into something you didn't think about.&lt;/p&gt;

&lt;p&gt;This is totally fine, as long as you express how you could correct it. After this reflection, discuss the pros and cons of the approach you went with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Software engineering interviews can be pretty challenging. &lt;/p&gt;

&lt;p&gt;No, you probably won’t have to use a linked list in your next job.&lt;/p&gt;

&lt;p&gt;And yes, there are many other important factors that go into a hiring decision, beyond the coding interview.&lt;/p&gt;

&lt;p&gt;But coding interviews can give employers &lt;em&gt;key signals&lt;/em&gt; about how you work as an engineer.&lt;/p&gt;

&lt;p&gt;With enough practice, you can give put your best foot forward in any coding interview.&lt;/p&gt;

&lt;p&gt;Best of luck!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rohit is the Founder of &lt;a href="https://www.stackbash.io"&gt;Stack Bash&lt;/a&gt;, the ultimate guide to coding interviews for both new and seasoned software engineers. While much of the course is free, you can upgrade to the full course with the discount code DEVDOTTO50 for 50% off for a limited time.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>computerscience</category>
      <category>interview</category>
    </item>
    <item>
      <title>How a side project helped my resume stand out by 10x</title>
      <dc:creator>Rohit Sahay</dc:creator>
      <pubDate>Mon, 16 Dec 2019 14:47:14 +0000</pubDate>
      <link>https://dev.to/rohitsahay18/how-a-side-project-helped-my-resume-stand-out-by-10x-51i2</link>
      <guid>https://dev.to/rohitsahay18/how-a-side-project-helped-my-resume-stand-out-by-10x-51i2</guid>
      <description>&lt;p&gt;I started my career as an embedded engineer after graduating from Georgia Tech with a Computer Engineering degree. I learned a lot from working on the firmware layer of ARM-based mobile chip processors. I had the opportunity to work on software projects with &lt;em&gt;millions&lt;/em&gt; of lines of C and Assembly code as part of a large team of very smart people.&lt;/p&gt;

&lt;p&gt;But there was a lot about the work that I didn’t like. Working on special hardware in the lab started becoming less fun. I had to deal with long compile times, sometimes hours. And many of those times, I’d find out that I need to recompile for some unrelated reasons. Logs had to be extracted from memory and were very limited. Worst of all, breakpoints &lt;em&gt;were not&lt;/em&gt; reliable, making it hard to know what code paths were being executed. So disappointing!&lt;/p&gt;

&lt;p&gt;I wanted to do something different. So I began reading more about building web applications, which is how I heard about Node.JS for the first time. A Javascript runtime environment that can handle many asynchronous, non-blocking operations? Sign me up.&lt;/p&gt;

&lt;p&gt;I went through some basic Javascript exercises using native Node libraries — And I was in love!&lt;/p&gt;

&lt;p&gt;Writing Javascript was very different. No need for typing allowed me to write more code faster. Debugging was also &lt;em&gt;way less painful&lt;/em&gt;. The feedback right in the console, right when you expect it, was amazing — Print statements and breakpoints actually worked 100% of the time. Best of all, no long compile times.&lt;/p&gt;

&lt;p&gt;It was a relief to be able to develop software with just my laptop. No need for big bulky FPGA boards or other special hardware.&lt;/p&gt;

&lt;p&gt;Sounds silly, now that I’m many years into my software engineering career. I can’t imagine operating in a flaky development environment. And I definitely appreciate the safety of typed code 🙂.&lt;/p&gt;

&lt;p&gt;I put together my resume and applied to multiple small startups working on web-based products. Most of the job descriptions included jargon that I didn’t understand at the time — Ruby on Rails, Backbone.js, Socket.IO. I had no idea what any of that was. But the job title said “Software Engineer”. I figured that perhaps the fundamentals are the same, so I should just apply.&lt;/p&gt;

&lt;p&gt;I didn’t get many responses. Except for &lt;em&gt;one&lt;/em&gt; company. I got on a phone screen with an engineer, where he asked me what a REST API was. I had no idea at the time. And I failed the phone screen! &lt;/p&gt;

&lt;p&gt;After talking to a few friends at web-based startups, I realized that I’d have to give employers more confidence that I can translate my embedded engineering skills into the kind of engineer that they need.&lt;/p&gt;

&lt;p&gt;So I decided to improve my candidacy to stand a better chance at getting the role — which I later learned was called, a &lt;em&gt;full-stack engineering&lt;/em&gt; role. I picked up Node.JS again. But this time I took it a few steps further. I went through dozens of exercises to create simple programs. I worked my way up to create the infamous &lt;a href="http://todomvc.com"&gt;To Do app&lt;/a&gt; in jQuery and Node, which persisted Todos in MongoDB using Mongoose.JS. My first full-stack, simple web app. I finally learned what a &lt;a href="https://restfulapi.net/"&gt;REST API&lt;/a&gt; was. I got so into it.&lt;/p&gt;

&lt;p&gt;I decided to take my skills a step further and solve a real problem for even just a few users. I worked with a &lt;a href="https://mdboss.com"&gt;healthcare consulting company&lt;/a&gt; to create a web application that helped them coordinate tasks with their clients. This was one of my favorite learning experiences. I worked on small-scale yet core problems on a single page application such as user authentication, front-end and database performance, refactoring spaghetti code, etc. I was able to help people with their day jobs!&lt;/p&gt;

&lt;p&gt;I began to re-apply for jobs. But this time, I put my side project on the very top of my resume. While my embedded engineering experience was valuable, my side project made my &lt;a href="https://easyresume.io/career-advice/tailor-your-resume-to-the-job"&gt;resume more relevant to the job&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;My response rate from employers was &lt;em&gt;exponentially&lt;/em&gt; higher. In addition, the side project prepared me for the technical interview. I even got positive feedback about my experience creating a web application that real users actually used. After a few rounds of interviews, I accepted a position as a full-stack engineer at a startup in NYC.&lt;/p&gt;

&lt;p&gt;While online courses, interview prep books, and bootcamps are great ways to learn how to become a full-stack developer, working on side projects helped me line up almost every job I took in my career.&lt;/p&gt;

&lt;p&gt;You don’t need to create a side project that gains adoption by users. And a side project might not be for everyone. But there are many ways to learn on your own time and prepare yourself to get the job that you want. Even if it’s completely different than what you currently do.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rohit is a co-founder of &lt;a href="https://easyresume.io"&gt;Easy Resume&lt;/a&gt;, an online resume builder and career advice blog.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>javascript</category>
      <category>c</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
