Hey, what's up?
John Sonmez from simpleprogrammer.com.
I have a question about online coding test.
I know a lot of you have been asking me about this and I did a video on whiteboards, on
whiteboard programming interviews.
You can check that out here, but this time I will talk about the online version, online
coding tests.
These are becoming more popular for evaluating software developers today.
A lot of people hate them.
A lot of people love them, but I'd say more people hate them.
So this question is from Joe and he says, "I'm a subscriber of your YouTube channel.
I recently purchased your 10 Steps To Learn Anything Quickly course.
I wonder if I could request your thoughts on the blow.”
So if you wonder what he’s talking about, I do have a course called 10 Steps To Learning
Anything Quickly and it is basically what it says.
It teaches you how to learn things quickly in 10 steps.
Check it out if you're interested in learning things quickly and gaining the ability to
learn how to learn, which I think is the most important ability that you can have.
He says here that he read this blogpost "Why Hard Interviews Are Good?""Now, I've been
through a lot of these lately and got very demotivated a few times."
He goes on to say that are some companies which required him to code a solution offline,
which wasn't trivial, and then they had a live coding exercise and asked to code a live
solution.
He got nervous and fumbled and stuff and they told me I wasn't senior enough for the position.
Then there was another group of companies that wanted him to clear tests on sites like
Codility and Hackers Inc and similar online programming testing platforms.
Then they gave really hard logic problems to be solved in a fixed time.
He said that it's something that I believe requires time to think through a few iterations
before one arrives at a solution, unless you've already seen the problem.
Now, I've written some pretty complex code, and he goes on to say that basically he's
done real code.
This is not real code that you do in production and this is not really building an application.
This is some silly test.
I'm paraphrasing here but this is kind of, I think, the attitude, the love you have.
This is some silly test online and it's not even like a real environment, and you have
more time in a real environment and all of this stuff.
I get that and I totally agree.
Coding tests online are not like real life.
That's not—you typically don't have that kind of situation.
Some of you do, maybe if you're working on like algorithm of trading software or E-commerce
solution and the website is going down and stuff and you got to code up a solution, but
for the most part, you don't have that.
Here's the thing.
This is a quote—I can't think of who said this quote.
If someone knows the attribution, leave it in the comment below.
Essentially, and Tim Ferriss says this a lot, he says that we don't rise to the level of
our dreams or expectations.
We fall to the level of our training.
Think about that for a second.
We fall to the level of our training.
That's why these tests are so important, is because I guarantee you, if I can put you
in a room and I can have 5 people watching you code on a whiteboard or do a live coding
challenge and give you a time limit for that and put pressure on you, and you fly through
that and you succeed and you do awesome, or if I give you an online coding challenge and
it's a really hard one and they don’t give you enough time to do the damn thing, and
there's a lot of pressure on you, but you get it done and you ace it.
I guarantee if you do those things that you're going to—well, I can't guarantee you, but
I'm going to tell you that you're going to have a more than higher than average chance
of succeeding in a much less tense situation, right?
It's about training over training.
Training for the battle, preparing so hard.
There's a really good book actually, it's kind of funny, by Steven Pressfield and it's
not the one that you think I'm going to recommend.
It's called Gates of Fire.
Check out that book.
I don’t read a lot of fiction books but this book is great.
In that book, he goes through the Spartan training regimen.
He got this one guy, this one boy called Tripod.
I forget exactly the details, but, essentially, you hold the shield up, right?
These other boys come in and they bash you with their shields like they're giving him
a shield training.
I think he dropped the shield at one point and like you never leave your shield down
like it's such a sin in the Spartan training.
Then there's some penalty like where they crush into you and stuff, like you're supposed
to go down eventually, like you're supposed to take a beating and you're supposed to drop,
but Tripod wouldn't drop.
He got beat so—he died.
This is a kid that died going through this training.
His own people killed him and it's kind of like this traumatic moment for these boys
in this book.
I thought about that and I'm like I'm torn on this, and I'm thinking, oh, you know, but
this is the cost.
This is an example of–that's not practical in a real battle, right?
You don’t need to be able to have your own people beat the hell out of you and kill you.
But if you can withstand that, if the other boys—if that's the level of training that
you go through, if your level of training is well beyond what you actually need to succeed,
then when you're in that high pressure situation, when you're in the actual environment, when
you actually do need to perform, you can do it.
It's easy.
You can accomplish that, right?
That's where it—I could take this in a few different ways, but this is where I'm going
to take it today on this, is I think that like, yeah, we can complain about online programming
tests and we could say it's not realistic and whatever and it doesn’t prove anything.
The reality of the situation is that somebody who can ace these—it's not just the skill.
It's the wisdom.
It's the common sense, like if you know that a company is going to give you online tests
or whiteboard interviews and I've said it, you should know this right now.
You're going to have to solve algorithm like problems.
I did this question on "Do I Need to Know Algorithms?"
Yeah, you do.
Right?
You could check that out.
If you know that that's the environment and you know that's how Microsoft is going to
test you or Google is going to test you and you choose not to prepare for that and not
to raise your level of training, if you drop your shield, what can I say?
It says something about you.
I'm not trying to be mean, but it says something about you.
Does it not?
Does it not say something about you?
Can I not infer some of your character from your inability to prepare for something that
you know you should prepare for, that you know is going to happen and then yet you choose
to complain about it?
Lots of helicopters.
If you ace these tests, if you have prepared for them, if you have trained harder than
you need to train, if you have made sure that you are going to ace these tests, does that
say something about you?
Whether it says something about your programming skills or not, we can debate that all-day
long and I will argue that it actually does, because I have competed at a high level in
some of these algorithms.
I think I did a post on topcoder, an older post, but I did that and that greatly improved
my skills as a software developer.
It really did.
We can debate that part.
I will say that as far as the character standpoint, the test, if nothing else, if they don't demonstrate
your programming skills, fine.
I'll even give you that maybe, your actual programming skills in a real work environment,
but they show something about your character, because they show how you're going to work
under pressure.
They show whether or not you have prepared for something that you know you should have
prepared for, and they show your ability to like take a hit because how do you deal with
it when you—some of these tests you're going to fail because no one could do them.
Not in that time limit.
Then what do you do?
How do you say?
How do you respond to that?
Do you say, oh—do you make excuses for yourself?
Do you say, "Oh, the test was too hard.
I didn’t have enough time.
It was unfair," or do you try to like excuse your behavior or do you say, "You know what?
That was a challenge.
That was kind of fun.
I wish I did better.
Can I take that challenge again?
Could I come back and do that again?
That showed me some stuff I could work on.
That's great.
I'm going to start working on some of those problems."
I think if you answer that way, you might catch the interviewer smirk a little bit,
smile a little bit.
He’s happy.
He’s found someone that he would be proud to have on his team.
Think about it that way.
Don’t think about it from how hard it is and how unfair it is.
I'll leave one last point here which is when you see something that’s a challenge, when
you something that’s difficult, that's awesome.
You know why?
Because that gives you the opportunity to differentiate yourself.
The harder the challenge, the bigger the mountain is to climb, the fewer people that are going
to do it.
That gives you the ability to be the person who does it and to get the rewards.
It eliminates your competition for you.
If the shit is easy, it's really, really hard to stand out.
If it's hard, that's an opportunity.
It's not a handicap.
It’s not something that's being done to you.
It's an opportunity for you to rise above the rest and you should appreciate anytime
you've got those opportunities in life.
Anytime the barrier is high for entry, that's a good, good thing for you if you’re willing
to do the work.
Do the work.
Don't forget to subscribe to my channel here.
Click the subscribe button below if you would like to get more advice and you'd like me
to—I know you guys like this, like it when they call you lazy, kick you in the ass.
I will do it.
I promise you that every week I will at least kick your ass one time if you click the Subscribe
button.
I'll talk to you next time.
Take care.