DZone
Agile Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Agile Zone > The Day I Gave Up on Hacker Rank

The Day I Gave Up on Hacker Rank

Because being clever is the enemy of being good.

Matthew Casperson user avatar by
Matthew Casperson
·
Oct. 25, 16 · Agile Zone · Opinion
Like (20)
Save
Tweet
7.21K Views

Join the DZone community and get the full member experience.

Join For Free

I just learned how negative numbers are stored at a binary level by Java. It was an interesting fact and something that I needed to know in order to solve the latest Hacker Rank question I was attempting.

I was diving into Hacker Rank to get a feel for how the process worked. Having seen it used as a way to filter out job candidates, and also having seen that this kind of coding test was in style after a few recent job applications, I figured it was worth at least being competent with the “cleverness” that was so often required to pass these kinds of questions.

Two things become obvious after working through a couple of the more challenging questions: one, that I either did not know or had forgotten a lot of nitty gritty theory of algorithms and how they apply to software development and two, that I had very little use for that nitty gritty theory in my day job.

The reality is that I often don’t have to deal with negative numbers at all, let alone understand how they are represented at a binary level. I could take every piece of code I have written in the last year, convert every int to an unsigned int, and the code would work the same.

What is more important than a clever understanding of algorithms, binary math, and efficient looping structures is the ability to effortlessly jump out of front end JavaScript, HTML, or CSS into backend Java or Spring in order to solve those full stack problems that are preventing go live. (Or to then SSH into a Linux box and configure NGINX to add another routing rule, or to debug a unit test, or to write some documentation, or to configure a database.)

The more I look at it, the more I realize just how much being good at my job involves a horizontal spread of knowledge across a huge technology stack, and just how little it involves a deep vertical understanding of any single given piece of technology. And I suspect this situation is the same for anyone not developing a new language, creating a new NoSQL service, or building data centers that take up whole suburban blocks.

But this doesn’t stop companies hiring based on “cleverness”:

“I heard about this interview process,” Geary said. “It seemed fine-tuned for people just out of college. When you are just out college, there’s a lot of algorithms and data structures and fast-thinking on a whiteboard, like you do in school. As opposed to real software engineering, there’s a lot of other stuff that goes into that. In my real work, in 20 years, I’ve never used a whiteboard. I use my computer. But in job interviews they do it all the time.”

I had a decision to make. Do I gain a working understanding of yet another JavaScript library and use that knowledge to be good enough at my job to get home on time? Or do I learn how to decompose integers to binary representations, bit shift them around in the most efficient way possible, and post my results so I can stand tall amongst a crowd of developers that loves these kinds of mental challenges, only to then have to work late because I can’t quite work out why this one last unit test is failing and preventing me from merging my code?

It was a pretty simple choice.

Hacker Software development unit test

Published at DZone with permission of Matthew Casperson, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How to Make Git Forget a Tracked File Now in .gitignore
  • C++ Creator Bjarne Stroustrup Interview
  • Blocking Ads on Your Network Using Raspberry Pi 3 + Fedora + Pi-hole
  • Vaadin Apps as Native Executables Using Quarkus Native

Comments

Agile Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo