
Developer Skills Report - _ao789
https://research.hackerrank.com/developer-skills/2018/
======
dvt
> What’s the biggest challenge when hiring talent?

"Hard to assess skills before onsite" \-- That's funny, I've never had a
hiring manager or interviewer look at my literal hundreds of thousands of
lines of code on GitHub or several of the OSS projects I've contributed to.

Not to mention the actual _book_ I co-wrote.

~~~
onion2k
I can think of a dozen reasons for that, but here are a few of the most
salient ones;

1\. Reading and evaluating code in an unfamiliar context is really £@#&ing
hard, especially on a complex project. Understanding someone's commits
requires knowledge of the project as a whole, the problem space, the
environment, etc. That's not possible to do for a large number of candidates.
It might not give you a very good insight in to an applicant.

2\. Most people's public code is of roughly equal quality (eg 'not great').
You can't really differentiate between people well based on it. What people do
in their spare time for fun is rarely commented/tested/documented/etc, so it's
a bad way to evaluate their skill level. If you find someone with good public
code that's a great sign, but a hiring manager who's looked at 100 Github
profiles and found zero good ones might reasonably have given up looking.

Also it could be seen as a discriminatory factor; if you think public code is
important you're going to overlook people with little time to write any, eg
those with families, care responsibilities, interests outside of coding.
Building a great team is about hiring great _people_ more that just great
_developers_.

3\. It's hard to trust someone's public code. It's trivial to clone a few open
projects and take credit for the work, and a hiring manager doesn't have the
time to dig in to everyone's projects to see if they've ripped the work off
from somewhere.

Also, you may have dealt with 50 hiring managers who have never looked at your
public code in your career so far. That isn't very many really.

I certainly wish there was a better way to evaluate developers skill, and as
someone who has plenty of public work on Github I think it'd be great if that
was a good starting point, but I don't think it's quite good enough yet. I can
certainly see why hiring managers _don 't_ look there.

~~~
dvt
> It might not give you a very good insight in to an applicant.

I'd argue pointless whiteboard trivia doesn't give you good insight into an
applicant, either. And yet, 90% of companies do it.

> Most people's public code is of roughly equal quality (eg 'not great').

I disagree with this. Unless you're looking at a toy or unfinished project,
most code that's _released_ (on npm, maven, or something similar) is actually
fairly high quality. Certainly higher quality than what I've had to work with
in production systems that were making millions of dollars a month.

> Building a great team is about hiring great people more that just great
> developers.

I completely agree. So why do we dehumanize potential hires with standard
practices that involve (for example) memorizing algorithms you'll never use? I
mean, HackerRank is a testament to how awful our culture is. Is there a
DoctorRank or SecurityGuardRank or WaiterRank?

> It's hard to trust someone's public code.

I think this is complete BS. There's people much smarter than me that are
getting screwed by these terrible practices. Max Howell, Homebrew's author,
was famously rejected by Google for not passing some stupid whiteboard exam,
when just about everyone at Google actually _uses_ the software he authored.

~~~
scarface74
I've had to do one whiteboard coding exercise in my entire career. I knew two
other devs that had interview at this company, so I knew what to expect. I
accepted the in person interview on a whim. I already had accepted an offer as
the dev lead for another company.

The whiteboard interview was to write out algorithm for a merge sort. I
thought it was the silliest thing in the world. I had already accepted a
position to basically create a development department, and he wants me to
write a sort algorithm? Once he described how it worked, I wrote it without
much difficulty but that was a turn off and I got an offer that was permanent
(as opposed to contract to perm for the offer I accepted), making more money,
with a signing bonus.

It was such a turn off, I declined the offer for a chance to build a
department that would not expose developers to this foolishness and thought
that the interview process tells you a lot about the company.

A year later. I'm glad I made the choice I did _.

On the other hand, I've done quite a few pair programming type of interviews
where there was a skeleton of a program with a lot of failing unit tests you
had to make pass. I enjoy those.

_Is there a DoctorRank or SecurityGuardRank or WaiterRank?*

Doctors have to go to school 8+ years and do a 2-4 year residency before they
can practice without supervision. Lawyers have to go to school 7 years and
pass an exam. Software Engineers only have to watch a couple of YouTube videos
and they can call themselves "programmers". Doctors can't say they are
qualified because they have been doing brain surgery since 6th grade in their
bedroom.

~~~
Clubber
I think half the reason companies can't find talent is: 1. They wouldn't know
it if it hit them in the face. 2. They actively repel talent by their
interviewing practices. 3. They refuse to learn form this mistake. Since it
couldn't possibly be them (they are infallible of course), it must be the
talent.

~~~
bigtunacan
This is 100% true. Earlier in my career I might have jumped through these
types of hoops because I needed a job. Today, if a potential employer were to
tell me I needed to go write X test program for free or do some bullshit test
on Hacker Rank I would just say, "No thanks, I've got better things to do."
Then I would move on to the next employer.

At this stage in my career when I still get this type of bullshit from someone
I just find it ridiculous.

I'm just left thinking, "Did you read my cover letter? Where I told you how I
worked on a 3 million CLOC air flight cockpit software that runs in actual
planes; so if there are bugs real people would die? How about the part where I
discussed being the software lead on financial derivatives trading software;
where bugs could lead to millions or even billions of dollars be lost? Did you
see that software library I maintain in my free time that has over 1 million
installs? And you still aren't sure I'm qualified? Well no sense wasting any
more of your time; I'm clearly not qualified then."

Ironically what I would consider the two best interviews of my career went
like this respectively.

1) I was called in for a technical interview. The VP of the IT department sat
down with me and asked me to tell him about my work experience. I gave him an
overview and then he started delving in deeper and deeper on the subjects that
I said I had experience in to see what my level of knowledge was. This went on
for about 1 1/2 hours at which point he stopped me and said, "Ok, how much
money do you need?" I gave him a number to which he replied, "We could do
that. Hold on a minute." The VP then went and brought in his top developer
(turns out he's also the hiring director) and then we basically repeated the
whole thing, but dove into even more technical details. That lasted somewhere
between 2 and 3 hours. At the end of it this he says, "I can have an offer
letter ready for you tomorrow. When can you start."

2) Preface - I was referred by someone already working with this company.

I get a phone call from the company CEO (small start-up). He asks me a few
questions about my background, some soft skill type of questions, nothing real
technical. After 20 or 30 minutes of conversation that is basically just a
"can we get along with each other" check the CEO says, "Ok, I'll need you to
do a technical interview with our team lead." A couple days later I get a call
from the team lead.

The conversation goes basically like this.

Him, "Ok, so here's the deal. Steve says your really fucking smart and Steve
is really fucking smart so it's probably true. Elijah (CEO) thinks we need to
do technical interviews, but really they're all just bullshit anyway. If it
turns out you can't do the job we'll fire you in less than three months; if
you actually know what you're doing we won't. So do you want the job or not?"

Me, "Yeah"

~~~
scarface74
About the same experience with my current job.

It was a contract to perm position. I asked my now manager, why was this a
contract to perm position? Was it because they wanted to see if the person was
a good fit or were they under a budget constraint that might stop me from
coming on permanently? He said the former.

I had to create the department from scratch with basically nothing but
"database developers" who were just learning C# and no infrastructure. I laid
out a 6 month plan. Six months in, i was able to negotiate a higher pay than I
could have originally since it was my first official lead role and make extra
money by being able to bill hourly. It was a major win.

When I was single without the skill set, network, or health benefits from my
spouse, I would have never left a full time position for a contract to perm.

------
outsideoflife
> Irrespective of your job, it will become important for everyone to learn how
> to code

It strikes me that the person who wrote that is used to associating with
technical people, and might spend a little more time in the real world. I work
in a company of 100 ish people, 15 are delivery drivers. 40 odd are sales
assistants that customers value for their detailed product knowledge. 4 are
involved in cleaning of different kinds. None of those people will ever learn
to code, or need to learn to code, or frankly be capable of learning to code

~~~
grivescorbett
Do those sales people use complex spreadsheets? Are there major effeciency
gains possible with a minor amount of scripting?

~~~
Balgair
Depends on the role. But salespeople are there to _sell stuff_ , the
efficiency gains are orthogonal to the objective. Their job is to call people,
go shake hands, get ink on dotted lines, etc. Not faff about with Excel.

Note: They also sell themselves to their bosses too. Hence why they tend to
outlast engineers in largish orgs.

------
TheCowboy
> The biggest gap in knowledge is with JavaScript frameworks

> Most often, employers want developers who know AngularJS, Node.js, and
> React.

Am I overthinking this? When I've been looking for jobs, I've found the
emphasis on JavaScript frameworks slightly perplexing and frustrating. I would
assume that a competent web developer should be capable of quickly learning a
framework. Having to know JavaScript, CSS, etc. to the level of passing a
technical interview is already demanding.

Learning one framework very well is another opportunity cost. Researching and
picking a framework to invest time into, then building a project or two using
this new framework is another. Keeping up with the world of JavaScript
framework developments is a whole project in and of itself.

~~~
rattray
Right, they don't want to have to pay you to do the learning.

It's usually not "how to get a simple task done with React" – many engineers
can get there very quickly – but rather having an understanding of best-
practices in terms of architecting your application.

Angular, well, can take a while to learn how to use properly.

~~~
flukus
> It's usually not "how to get a simple task done with React" – many engineers
> can get there very quickly – but rather having an understanding of best-
> practices in terms of architecting your application.

Perhaps I'm being too pedantic here, but the UI library used has very little
to do with how you architect an application. Knowing how to write half decent
sql or not reinvent your own message queue is far more important than whatever
is happening on the front end, but you don't see the focus on them like you do
with the latest javascript library.

~~~
rattray
Ah, I had somehow assumed that these were predominantly frontend roles.

In that case, I certainly agree the emphasis on one part of the stack feels
odd.

------
meritt
> And new generations are opting for YouTube to self-teach over books

I'm definitely in the older generation because it's completely mind-boggling
to me how someone effectively learns to code from watching a video tutorial.
You can't flip back to a page, bookmark a link, copy text, zoom-in to see
exactly what was done, etc. It feels like you're inherently missing out on so
much you gain from a book or a text-filled website. MOOCs generally have a
great UI/UX intermingling video, text content, and usually a REPL of some
sort... but YouTube videos?

Is this a huge flaw in my learning ability or is there some secret to
effectively learning these sort of skills via video?

~~~
baron816
Don’t knock it until you try it. I’ve learned a great ton from YouTube videos
or just watching the videos in sequence on Frontend Masters. Watching them at
an increased speed let’s me cover a lot of ground very quickly. I also like
writing down headers of important topics, and then going back and doing
research on those topics and essentially trying to write a brief book in my
own words on everything. Helps me get a deeper understanding, ensure I’m
actually learning stuff, and be able to come back to things for reference.
See: [https://baron816.gitbooks.io/good-stuff-to-
know/content/](https://baron816.gitbooks.io/good-stuff-to-know/content/)

~~~
dragonwriter
> Don’t knock it until you try it.

I've tried it, and found video quite good for conveying emotional content,
general high-level overviews, and general feeling of comfort with the shape of
a topic, but quite bad at detailed technical information.

That's not saying that they aren't useful: I find videos that provide overview
of material provided in detail in a textual medium to be quite useful. But if
I had to do one or the other _alone_ for learning technical material, it would
be textual media over video 100% of the time.

------
barrkel
What's missing on the "core competency" is communication. Honestly,
communication and ability to turn a communicated idea into code is more
important than problem solving ability. If someone is solving the wrong
problems, they're not creating value. Whereas if someone is stuck on a
problem, we can fix that by talking about it - as long as the discussed
solution can be turned into code.

~~~
crescentfresh
Communication is such a nuanced thing. In our core senior group there is one
guy who refuses to let us talk about anything remotely resembling an
implementation-related detail if we're early in the high-level design stage,
and it honestly shuts conversation down. I get his point, however at the same
time a group of _good_ engineers should be able to briefly and abstractly
discuss the potential downfalls of a design decision while considering an
implementation detail (say, using columnar storage to address some high-level
requirement).

Then, there's folks who communicate "well" in standups, meetings, design
discussions, are cogenial, etc. At the same time they might be drowning in
some technical debt they've taken on and no one understands it until they're 2
weeks overdue on a deliverable.

------
scarface74
I was wondering why some of the languages listed as being popular in the graph
by employers seemed so out in left field with my understanding of the market,
then I read this part:

 _A total of 39,441 professional and student developers completed the online
survey from October 16 to November 1, 2017. The survey was hosted by
SurveyMonkey and HackerRank recruited respondents via email from their
community of 3.2 million members and through social media sites._

It's a self selected sample and probably skews a lot toward what the "cool
kids" are doing and not what most corporations are actually doing. There is no
conceivable way that Lua, Kotlin, and Go should be more highly represented
than Swift/Objective C and C#

~~~
SlySherZ
The graphs about languages seem very weird. Let's take a look at the "Which
languages do developers prefer by age?":

Python: 84.6%

C: 54.0%

C++: 48.2%

Java: 48.2%

JavaScript: 47.6%

...

Ruby: 21.0%

Why is Python so far ahead of everything else? Why is Ruby, which is all about
programmer happiness so far down?

It seems people actually like JavaScript. Wait, people do actually like C++?!?

Also if you take a look at Go by age, for example, it goes from 53.6% (35-44)
up to 67.8% (45-54) and back down to 7.6% (55+). I don't see a reason for such
a huge preference variation. There's also a few 0.0% with 55+ years.

It seems there weren't enough answers for this to be anywhere near conclusive.

~~~
christophilus
You're almost certainly right that their sample sizes are too small,
especially in the upper age brackets. I suspect it's _hard_ to find a lot of
55+ year old programmers who are willing to do silly things like take a
HackerRank poll. Given the industry stats, it's fairly hard to find 55+ year
old programmers, period.

> people actually like JavaScript. Wait, people do actually like C++?!?

Yep to both. I actually don't mind the latest versions of JavaScript. I don't
like C++ at all, but have done professional work in it alongside people who
thought it was a great language.

> Why is Ruby, which is all about programmer happiness so far down?

Programmer happiness is subjective (as evidenced by my previous remark and by
the love/hate you see expressed for JavaScript, Go, Clojure, etc). Personally,
I'm not a Ruby fan. I don't like the syntax. I vastly prefer composable
functions to Ruby's "blocks". I find that most Ruby code I've worked with is
too heavy on OOP abstractions and would be much clearer if expressed
functionally. I could go on, but the point is, it's subjective.

------
hinkley
Dear hackerrank:

You can do scrollto or lazy load. You cannot do both.

The table of contents is essentially nonfunctional on mobile.

------
baron816
There’s no way that many people use VIM.

~~~
phyller
That one stat made me question the entire survey. There's no way so many
people use VIM over Atom, Sublime, etc. Right? Someone reassure me here.

~~~
azemetre
I've recently been having issues with Sublime randomly freezing and restarting
(may be due to a package, but I'm not going to waste my time verifying what
packages are misbehaving out of the hundreds I have installed), I've gone back
to Vim.

After setting Vim up for multiple environments (PHP, Go, Python, and
JavaScript) it's now my daily driver. Maybe other people feel similar?

~~~
flukus
> may be due to a package, but I'm not going to waste my time verifying what
> packages are misbehaving out of the hundreds I have installed

Welcome to vim, but if you go overboard on plugins then you will have the same
issues with it, probably more so.

~~~
azemetre
I'm finding with Vim that less is more, or maybe as I become more experience
I'm not relying so much on the GUI aspect of text editors (creating new files,
git integration, color pickers, etc) but instead just sticking to the command
line for a variety of operations.

------
cup-of-tea
People use Stack Overflow to _learn_ how to code? How? I use SO to learn how
to do very specific things if I can't figure it out myself, but to learn how
to code?

~~~
ggregoire
Lot of new questions are about basic stuff explained in the official
documentations. I answered a bunch of questions yesterday about React and
Babel setups: I just had to pick the answers in the first pages of the docs.

------
flukus
The site is actually readable if you turn off that awful css. Who thought
removing white space from the titles and adding an obnoxious faux cursor were
a good idea?

Most/all of the charts gain absolutely nothing from the interactive features
either, a grouped histogram style chart could show the same information in a
static image. It would be better actually, you could compare the groups side
by side instead of relying on animations and hovering back and forth.

~~~
applecrazy
I agree. On my relatively high speed internet connection on Chrome 63 (latest)
running on a recent laptop, it took 55 seconds, 426 requests, and 2.6MB to
load the first graph on the page. Sure, a lot of the loaded assets are in my
cache for subsequent visits, but that initial load time is just...wow.

~~~
mythrwy
The content of those 426 requests weren't created for free. Part of the "high
demand" developer skills I suppose. Adding gunk to the point you can't get the
content. I'd guess sooner rather than later the pendulum is going to swing
back to simplicity. Then having good sense about how to effectively portray
something without tormenting everyone and wasting resources will be in high
demand. As it always should have been.

------
golergka
> Execs place the highest value on GitHub and personal projects

Well, good luck with industries that are 99% closed source (like gamedev). I
have a few toy projects in my Github, but I bet it's nothing compared to any
front-end developer who has the luxury of submitting PRs to the tools and
framework he uses.

~~~
Terr_
Yeah, are the answers from these "execs" biased by a certain industry or
location? Literally nobody has ever brought up my Github projects or PRs...

------
bob4444
Being an Emacs enthusiast myself, it always surprises me how much more popular
VIM is. Is this because VIM is taught more in schools? Maybe because VI/VIM is
typically installed by default on Linux systems?

~~~
zdfjkhiuj
It's tiny and ubiquitous. Even tiny VMs and embedded devices have Vim.

~~~
bob4444
Despite this, in my experience, Emacs provides a more feature rich
environment, comparable to an IDE, rather than only a text editor.

~~~
matte_black
It’s not about features. Vim is meant to be custom tuned through plugins until
it meets your needs, after which no other editor will satisfy you.

~~~
just-me
I hope you're not trying to explain the value and satisfaction of
customization to an Emacs enthusiast!

The thing is an interpreter for Elisp, which the text editor is written and
configured in. You can change the core functionality of the editor if you
wanted, by writing some code in a buffer and pressing C-M-x. You can make it
act exactly like vim if you wanted to. You can add line numbers on the side,
better autocomplete for commands and searches, a git porcelain, new modes for
different types of files. You can implement an IRC client, a browser, tetris,
a file browser, or an email client; or you can just use the implementations
that come included.

You can spend a lifetime configuring Emacs, and if you have attained the
ultimate configuration, you'll look back at the end of your life and realize
that it was worth the thousands of hours you put into it. But if you have not,
don't worry: you'll be reborn into the cycle constant suffering-due-to-
inferior-configuration until you figure it out.

~~~
iLemming
> You can make it act exactly like vim if you wanted to

Thanks to Spacemacs, Emacs is already better Vim than Vim itself. I know what
I'm talking about. I'm a die-hard vimmer.

------
kumarvvr
Sidenote : The background images are '3D' fractals, I remember reading about
in HN itself a few years back. There was a fascinating article about a
programmer writing about the steps he went through to get a 3D fractal.

~~~
lobo_tuerto
I'd love to get my hands on that article/link, do you have it handy?

\---

Found this free software for 3D fractals:
[http://www.mandelbulber.com/](http://www.mandelbulber.com/)

~~~
kumarvvr
[http://www.skytopia.com/project/fractal/2mandelbulb.html](http://www.skytopia.com/project/fractal/2mandelbulb.html)

This is the closest reference I could google.

The article I am talking about had the author explain the various steps he
went through, starting with rotating a 2d fractal, and move up the process to
finally get the math equations to generate a truly 3d fractal.

~~~
j_s
[https://hn.algolia.com/?query=3d%20fractal](https://hn.algolia.com/?query=3d%20fractal)
->
[https://news.ycombinator.com/item?id=935241](https://news.ycombinator.com/item?id=935241)
(Nov 2009)

But unless you read HN for 5+ years without creating an account, the exact
discussion you recall may be some other search result there.

>mrob: _the Wikipedia page is a better starting
point:[https://en.wikipedia.org/wiki/Mandelbulb](https://en.wikipedia.org/wiki/Mandelbulb)
_

PS. Algolia seems a bit finicky, a couple of these were on the second page of
results for the first search:
[https://hn.algolia.com/?query=3d%20fractal%20comments%3E0&so...](https://hn.algolia.com/?query=3d%20fractal%20comments%3E0&sort=byDate).
I always hate how they show different results for plurals, but this is a new
problem I'll keep in mind (sort by popularity doesn't work?).

~~~
kumarvvr
The article was very very similar to this.

[https://christopherolah.wordpress.com/2011/08/08/the-
real-3d...](https://christopherolah.wordpress.com/2011/08/08/the-
real-3d-mandelbrot-set/)

------
codingdave
> Coding helps enrich your computational thinking, which is powerful in making
> decisions.

That is backwards. Computational thinking is fundamental to learning to code,
and also aids in many other aspects of both learning and performing in any
path you may choose. Learning the fundamentals of computational thought is the
core skill that everyone will need in the future.

------
koopuluri
I feel like the wording misrepresents the results in the "In Demand
Qualifications" section.

> There's a popular belief that recruiters favor candidates with CS degrees
> from prestigious universities. But it turns out that they actually care
> about what you've done — not where you went to school

But over 40% employers say that they care about your educational
qualification. It doesn't' make sense to say "they actually care about what
you've done - not where you went to school" with this result. If you don't
have a college degree in CS, you're going to have a significantly tougher time
getting your foot in the door, so therefore, even if it's not the MOST
important credential you need to get a job, it's unfortunately still very
important as a pre-requisite. We still don't have a good signal for that kind
of preparation if the candidate doesn't have a lot of publically viewable
work.

------
blt
Interesting - older developers like Swift a lot. There is a resurgence of C++
among younger developers.

~~~
kamaal
>>There is a resurgence of C++ among younger developers.

C++ is the only tool of choice for the time limitations online judges like
hackerrank have. So most people submitting code there are basically writing it
in C++. Also most people using C++ there are using a very minimal subset of
C++, which would largely look like C with things like vectors<int> etc.

That doesn't say anything about production uses of such languages.

~~~
christophilus
Yeah. I suspect you're right. When I've done HackerRank, I've done it in
Clojure, but the handful of times that was too slow (due to boot speed, I
think), I solved the problems in Go.

------
bdbm
Too bad they don't differentiate between AngularJS and Angular (2+), which are
totally different frameworks. Would be interesting to compare Angular and
React.

------
harrisjt
Wow I'm surprised by students really putting compensation down on the list of
things that are important to them compared to professionals.

------
ZeroGravitas
Is there any way to find out what hackerrank is without signing up first?

~~~
collyw
Crappy "coding challenge" site with plenty of reason not to use it in your
hiring process, but that's what they are selling it to employers for.

------
HugoDaniel
Whats with Julia ? why so much hate among almost all ages ?

