Whiteboard Coding Proficiency
As a full-stack engineer with years of experience in the industry, it’s disheartening to see how much disconnected the traditional technical interview process is from the actual job. Throughout a decade of my career, I have worked with principal engineers, senior engineers, and tech leads in various companies and industries across different countries. Yet, I have never encountered a situation where we had to code on a whiteboard to build anything, not once.
Photo by ThisisEngineering RAEng on Unsplash
Sure, we did pair programming at one company, but that was an extreme case and part of XP (extreme programming) methodology. They call it extreme because what happens is two engineer share one computer, one does the coding and the other does code review in real-time. After the code is done, you directly push to production. If you haven’t tried XP, you can imagine how nerve-wracking this can be, to code in real-time with someone behind you watching every code you type. Your coding partner also sees how much you use Google every time you forget certain syntax of to do certain things in the language you are using. Even then, in the XP methodology, we never coded on the whiteboard, we coded on a computer with internet access.
Yes, I did system architecture discussions on whiteboards with CTOs, but never actually wrote code on a whiteboard like we do in interviews.
The truth is that software engineering is an industry where the interview process often fails to accurately test proficiency. In my opinion, the only time complex algorithms and data structures might come into play on the job is when reviewing junior engineers’ code filled with nested loops and spaghetti code. Even in high-volume applications like stock trading platforms that affect millions of people or dollars, we relied on technologies like messaging queues (e.g., Kafka) to handle bottlenecks rather than complex hard algorithms in Leetcode like N-Queen or Backtracking.
How did we get here?
So why do companies insist on testing engineers’ knowledge of data structures and algorithms? The answer lies in the fact that these concepts are agnostic and widely applicable across frameworks and technologies. Unlike specific programming languages or frameworks that vary from company to company, data structures and algorithms provide a common ground for evaluation.
The big tech companies (FAANG) popularized whiteboarding as the standard interview practice, leading other companies to follow suit. But here’s the catch — interviewing itself is a skill that not all engineers spend their time mastering. You can be an exceptional engineer who has built something used by millions of people worldwide, but if you struggle with interviewing skills, you may find yourself struggling to land job offers.
In fact, there are countless stories of talented engineers being rejected from job interviews simply because they were unable to solve a complex algorithmic problem or reverse a tree. The engineer who created Homebrew, a widely-used package manager for macOS, was even rejected from a job interview for this very reason.
Fullstack = Frontend, Backend, Ops, Interview
The reality is that no matter how experienced you are as an engineer, interviewing is not something you can just be naturally good at. It is a skill that needs to be mastered, just like any other technology or framework we deal with on a daily basis.
So what can engineers do to improve their interviewing skills? Firstly, it’s important to recognize that it is indeed a separate skill set from engineering itself. Treat it as such and invest time and effort into honing your interviewing abilities. Practice solving algorithmic problems, study common interview questions, and familiarize yourself with different interviewing techniques.
Additionally, seek out resources and guidance specifically tailored to mastering the art of interviewing. There are plenty of books, online courses, and mock interview platforms available that can help you prepare effectively.
Ultimately, the traditional interview process may not accurately reflect the day-to-day responsibilities of software engineers. However, as long as companies continue to rely on data structures and algorithms as their measuring stick for proficiency assessment, engineers must adapt and become proficient in the skill of interviewing if they want to secure desirable job opportunities.
Remember, being an exceptional engineer is only part of the equation — being able to effectively demonstrate your abilities through interviews is equally crucial in today’s competitive job market. So don’t neglect the importance of mastering this essential skill set alongside your technical expertise.
© Melchor Tatlonghari. All rights reserved.