I’ve been gaining confidence in my algorithm solving skills. So much so that I’ve graduated to the medium difficulty Leetcode problems. Yay! Can I effortlessly solve every problem I see? Hell no! I'm at the stage where given the problem I can normally come up with a working brute force solution. However, when it comes to finding the most optimized answer, I usually look for a few hints. But that's ok! …
A couple of weeks ago I had my first take-home coding challenge as part of the interview process for a company. I started researching take-home challenges to learn some tips and make sure I was following best practices. After I read some personal experiences of developers doing take-home challenges, I realized I had no idea how controversial this topic is! I came across many blogs and Reddit posts of people who are completely against them on principle and others where people defended it as the best way to determine a candidate's abilities.
A take-home assessment, challenge, or assignment is a…
It's such a joyous feeling when you finally get your solution to an algorithm to work. Or when your web application correctly works the way you want it to. But then… someone asks the questions “but what if I tried to do this?”, “what would happen if we change this”, “how does your solution handle this?”
Edge cases are the worst!
An edge case (or sometimes called boundary case) is a problem that occurs at the extremes of your operating parameters. To expand that definition to explain how it's normally used in tech, an edge case is a situation (might…
While going about my algorithm practice, I came across an interesting concept that I definitely wish I had seen earlier. I knew about pointers, and how having two pointers can sometimes help you solve a problem; basically keeping track of where you are in a linked list, or array, or graph but at two different locations. However, I had only ever used them to start at different parts of the data structure, or by keeping one static while one of them moved. I have never considered moving them at different speeds! …
This week I was building out a web service. I wanted to implement a specific algorithm as part of the service, but I am a strong believer in “don't reinvent the wheel”. Surely the piece of code I needed existed somewhere and I just had to find it. So I scoured the internet and to my disappointment, I was only able to find an implementation of the algorithm in a different language. I found a Javascript implementation, however, my web service was being built on a Ruby framework. Then this got me thinking about translating or converting code between languages.
…
When it comes to practicing data structures and algorithms, I often find myself avoiding recursion. Recursion is not my favorite and it's definitely not a strong point. But we have to practice to get better, so I’ve been doing just that.
Recursion is a repetitive process in which a function calls itself.
In recursion, you will see the function calling itself inside the function. To write a recursive solution to a problem, you need these two steps:
We did it! We made it to 2021! A brand new year filled with potential and hope. About this time last year, I had decided to do a career switch and join the world of software development. The past year was spent working hard, learning, and meeting new people. I am very excited to continue this journey. The start of the new year allows for some time for reflection and realigning our goals. …
In my last blog, I mentioned “dogfooding”. I came across the term while researching different types of testing and was intrigued. What a silly term!
Unfortunately, this has nothing to do with the cute furry animals. “Dogfooding” refers to when the employees of a company use the product. For developers, it is the practice of using the very product or service you are building. Basically, it's a way of doing internal user testing with the developer pretending to the user. You might also hear it being mentioned as “eating your own dog food”. Yuck…
Dogfooding occurs for two main purposes…
Have you ever started to answer a question is an interview and you can just tell you are missing something? Your answer might not be wrong but you get the feeling its not exactly correct either… Its ok, it happens. As a junior software developer, new to the industry theres bound to be aspect of the industry I’m not familair with yet. But, when I come across a new topic I make sure to read up on it so I’m ready for the question next time.
I was asked at an interview: “What steps would you take to implement a…
While coding this week, I had to convert one of my class components in React to a functional component. Why would I need to do that? After all, the parent component sees the two types of components as identical. Sure, functional components can be shorter, require less boilerplate, and maybe even perform better. But that's not why I needed to do it. I was using an npm package that had React hooks and hooks are for functional components only. React Hooks, added in React 16.8, allow functional components to manage state and replace lifecycle methods. …
I love seafood, exploring new cities, board games and learning to love to code. https://github.com/sarakhandaker/portfolio