The Junior Developer
A junior developer who said I was the smartest person in the company and frequently asked for my help once told me ...
For further actions, you may consider blocking this person and/or reporting abuse
I was asked to convert from decimal to binary on a whiteboard. It's not a difficult algorithm, but it makes no sense to expect someone to have that algorithm memorized. What possible use would I or anyone else have for being able to regurgitate that during a real project?
You're not supposed to memorise that "algorithm", you're supposed to be able to solve a problem in a very familiar domain.
All that is needed to solve this problem is to know binary is base 2 and decimal is base 10
Taking both your point and OP's, I think yes, the decimal to binary conversion is a representative of the data wrangling problems developers are asked to solve all the time, but the process should include giving the specification of decimal and binary numbers, so that prior knowledge of them is not required.
I still think the decimal to binary conversion is a problematic test.
Decimal to binary is a required problem taught to Computer Science university students, but not so pervasive outside of universities. University students will likely solve it simply by memory, while other people may have to figure it out by themselves. That makes the test:
A similar data conversion task taken from the domain of the employer would give the prospect employees an idea of what the work will look like, prefer those who are more familiar with the domain, and test the problem solving skills of university students as much as those of others.
I'm worried that you think exposure to the concept of binary and decimal for people working in computer science/development is limited to those with degrees. Anyone with basic math or comp-sci knowledge should know this. If someone applying for a comp-sci/dev position managed to completely skip a pretty basic and core concept in the field I'd wonder about the quality of their knowledge and worse still if they didn't know and couldn't ask for gaps in their knowledge to be filled in on site (which would take all of 10 seconds), I'd worry that they are going to be terrible at a job that is 90% about asking questions to things we don't know.
You think that binary is beyond people without a degree but specialist domain knowledge isn't?
No, I do not think only those with degrees know of binary and decimal. I merely assert that those with degrees have a far higher chance to know of binary and decimal than those without. Please don't strengthen others' proposition unilaterally.
No, I do not think binary is not beyond people without a degree. Rather, I think domain specific knowledge is beyond both people with and without a degree. As you say the job is
Then for those with a degree you are not testing this at all, since they know binary already.
The test is supposed to -in 30 seconds- show basic coding skills. NOT test knowledge of binary.
You are focusing on the wrong thing and creating a straw man.
My focus is
So you think that is the wrong thing to focus on?
^ That is the wrong thing to focus on. Mentioning disparity between university CS and non-university CS is another level of irrelevant. I provide the test, candidate can ask "how do you do that" I say "you divide and mod the number by two, the division gives you the next step the mod gives you the first output" then they write the algorithm down in code.
Whether that problem is binary to decimal, decimal to binary, fizzbuzz or reversing a string, the thing to focus on is that it's an easy problem to explain, it's ripe for asking questions and it leads to a small amount of code that is representative of a candidates basic coding skills. What you get from that 30 second to a minutes worth of effort is:
It also has the added discussion routes of
We agree on many. We likely agree on more than you think.
But man, this whole thread started about the binary to decimal test. That's part of the topic. How can talking about the topic of the thread be "wrong"?
Thank you for the list of considerations. I like it. But let's cut it here.
I think the test is stupid. I have BS CS but I vaguely remembers how to divide and get that binary stuff. You need knowledge on how to convert it.
There are also self thought developers and this test will prove nothing.
Yeah I'm supposed to be able to solve it...with the internet or at the very least a manual or a book. I haven't had to worry about D to B conversion in years, you want me to think about it on the spot? You are out of touch with reality. Why on Earth would I want to worry about that when I could just lookup the formula online? I would have to come up with the algorithm on the spot, which is incredibly difficult to come up with, but extremely easy to just use if you know it. Like...come on, I understand the concepts, coding math algorithms has nothing to do with understanding the concepts.
Neither have I but it's such a trivial problem it's crazy that people are so against it. This would take about 30 seconds of my interview time and show me that the candidate has basic coding skills, what their foundation in CS is, how well they ask questions, if they can admit they don't know something, and most of all if they are willing to get something done in 30 seconds rather than spending 5 minutes discussing why it's not relevant.
Incredibly difficult? High schoolers could likely do this without much mental effort.
No? So if I asked you do do a temperature conversion program or a program to add 10 numbers it's not relevant? Math has nothing to do with programming...mental. If you can go two weeks in any coding job without using any math I would be dumbstruck.
You think because its easy for you then its should be easy for others. Oh my I would not like you to be my senior or my manager. ahaha
No, I think if you are applying for a software development position that you should be able to perform very basic software development tasks.
You wouldn't like me to be your senior manager because I would expect you to be able to understand a one line problem statement and creates 10 lines of code? Having been asked such a simple task and responding with personal attacks and calling things "stupid" doesn't make you seem like an ideal employee either I'm afriad.
temperature conversion? I look up the formula. Add numbers? It sounds like the only things that you are good at are being condescending and facetious. You can't however, understand what a developer job actually entails. You either have a superiority complex or a daft mind, if you were asked to whiteboard an algorithm to balance a matrix you wouldn't be able to, stop kidding yourself. Actually, I bet you would fail a decimal to binary conversion in a whiteboard interview. But you know what? We'll never know, because you, me, and literally everyone can figure it out with google in a few seconds, so why does it matter? Oh yeah, to you it matters because it's one of the few ways you can stroke up your own very large ego.
Since when did converting binary happens in software development tasks?
Maybe we dont just like each other then because I'm not an elitist when it come to my profession. I know what is needed and what is not. I just don't get why you need to go low-level when everything being done today is to make things simpler.
Elitist, low-level? Dividing by 2?
Than a program to divide by two in a loop?
Yeah so instead of having the freedom to look it up on google, I need to remember that 10 years after graduation. Its "low level". Again, when did you have that as development task. Unless you are working on "low-level" stuff, then this interview question might be valid. But for the general software developer roles where you can just look up trivial tasks, this prove nothing.
It's nice that Jose Vargas has also continued to respond called me "condescending and facetious"...
Says a contract react developer with all of 5 years in the industry to a full-stack developer of 20 years, most of which hiring successful developers.
Interesting claims from someone making ad hominem attacks in the same sentence.
...argument inflation and conjecture to win a nonsense straw man you have created...
...more ad hominem attacks...
Once again completely missed the point of the entire thing. I'll repeat it for you in the most condescending way possible; It's not about remembering an algorithm. At the interview you can ask what it is, or even Google it the task is to code it. That fact that you cannot listen and understand very simple statements is showing me why you are so against performing very simple tasks.
This pettyness needs to stop. If you are not interested in my views or my responses, stop responding to me.
Maybe because you also cant understand our argument.
It is about remembering the algorithm! Unless you would lecture your interviewee about binary numbers then let him formulate the formula from there. But you wouldnt do that in an interview. You just tell him convert binary to decimal and he should be able to KNOW it. How can you convert that if you dont event know how the base system works. Sigh
Again what does this prove? If you dont have prior knowledge you cant come up with the conversion
Read the thread before you respond please.
Good job Phillip. Now erase the board and do it again in Cobol.
Ten times programmers can do that, and even with much more complex algorithms! :-)
πππ
I am only 9x .... :(
Thereβs nothing to memorize, itβs very basic math. Though I can imagine self-taught web/UI developers having no idea about math and doing there job just fine. So in my opinion it would be a very good thing to ask from someone applying for C/C++ job involving writing fast and efficient code, but if itβs like integrating 20 year old 5M line PHP monstrosity with Cassandra, then itβs useless indeed
I bet you're fun at parties.
On the other hand, most C/C++ developers don't spend a big part of their day writing algorithms to convert from decimal to binary and anybody can easily find the algorithm online, so I wouldn't expect even someone who's been working with embedded software in C for the past twenty years to necessarily have the algorithm memorized. I still think it's a worthless interview question.
it's not about that particular algorithm, it's about weeding out devs who cannot come up with something as basic as decimal-to-binary conversion. A former boss of mine used questions like "What year did the First World War start?" to cut, well, not enough intelligent people off - worked pretty well actually
I disagree with either of these types of questions being used to measure a person's intelligence. Lack of knowledge is not the same thing as lack of intelligence. As a thought experiment: What if Leonardo DaVinci were asked to answer either of those questions? He would not have access to our knowledge of history and most likely not the mathematical experience converting numbers to different base systems. I don't think most people would consider his contributions any less significant or that he was less intelligent because he didn't know some random tidbit of knowledge.
Why would a history quiz be on a programming job interview and be used to judge intelligence? I consider myself pretty well versed on history and I don't even know the answer to that. Why would the year Franz Ferdinand was shot be relevant at all to the job?
@phillip What makes you think Leonardo would be a good software developer? :)
@mike It was just a quick test if the person was actually learning something during his high school years. Also it was in Russia, for the US you might want to replace it with something more culturally relevant as people born/raised outside Europe are usually pretty hopeless at European history (unless there was a movie or music band)
Oof, history was never a good topic for me. That's why I got into tech and not studying history. That'd be a great way to weed me out of wanting to work for a place, asking me history questions during a technical interview. lol
Sure it's basic, but if you don't do it all the time or had to do it all the time it might not be obvious to you. I saw this a lot in college. I double majored in EE and CS so I got to see the CS stduents struggle with very basic EE stuff in some classes and EE students struggle with basic C coding as well.
As an EE major converting between binary, hex, and decimal as well as understanding things like registers, low level memory management etc was easy for me when it came up in CS classes, but it was all new or not so easy for the CS majors since it isnt something they had to deal with all the time.
I would not hire someone for a developer/engineer position if they cannot do this.
This is not supposed to be an algorithm you memorize. It's just very basic math, not even computer science. To understand how binary numbers are represented is a MUST.
People tend to see being asked to work on similar problems, or being asked how a sort algorithm works, is ILLOGICAL and BAD, while knowledge in such fundamental concepts is what differs a candidate A from B.
Anyone can learn how to USE technology X or Y, and by the time they will be experts in that specific technology, but strong fundamental knowledge goes ways beyond that. Being able to solve a problem in a technology-agnostic way is what truly matters.
I have failed this very same assignment
That's just half a dozen lines of code at most. I never wrote decimal to binary converting algorithm before but I can fart one up in a few seconds, it's something like:
and the 2 can be replaced with any integer value to give the base-n expansion for any number for any base. If you have trouble figuring out how to generate the binary expansion of a number then don't worry, you're not alone: you're like 90% of coders and most hiring managers don't know the difference. Just memorize a bunch of random algorithms and hope that one of them turns out to be the one the interviewer asks you to regurgitate.
isn't this just basic math? 2^N?
I wrote a code for all base to all bases converting but negetive bases with fractions and i know Bubble sort, so Im worsy?
Worth noting sometimes hiring people are HR and have little to no knowledge about what they need. There was a post where Swift was only 3 years old and someone made a job post and required 7 years of experience with swift. I usually avoid companies like that and advise others to do the same. One problem is I hate companies that use buzz words to sell to client and most of what they do is lying... We should avoid those companies and try to offer better experience to our customers before it's too late and we ruin the industry
True, most of the times he departments have no idea how to properly hire developers because they have absolutely no idea of what developers do, know or should. Focusing on keywords and trends saves HR from the hassle and there are not enough metrics to judge the success rate of this kind of filtering I guess. I guess having developers hire developers would be the correct course of action in any small to medium sized company.
Just my thoughts though.
Here in Chile head hunters are bananas, their entire job could be replaced by a checklist form. The usual interview goes like this:
Do you know A pattern?
Do you know B pattern?
... Z pattern?
And then comes dependencies
Do you know A library?
And so on and on.
And it is absolutely bullocks. You are hiring a jr? Ask about arch pattern, that is ok, but if the company cant provide training! That is a red flag.
You are hiring a senior? Then why even ask about architecture patterns that is literally the job of a senior, there are houndreds of architecture if you are senior you know 1 then you can learn any other.
And the dependencies things, pure BS, it is a library, it has doc! Either train your hires or allow then time to learn.
The perfect fit is the equivalent of a fairy tale, and then they hire and live happily ever after. I rather real work software with problems and team to help.
I laughed so hard reading that
Haha yes it's brilliant ... and of course this is not just the case in Chile, this is true in about every country all over the world. And the sad thing is that companies looking to hire devs are wasting tons of money on the "services" of these recruiters.
It is complicated to have devs hiering devs in larger companies. But dependent on a team that needs a helping hand it could be easily done. Write what kind of project is it and what kind of dev is needed than let the lead developer or someone capable enough do the short tech interview to check is someone a good fit and also let then check the CV. If you need a senior java dev just to keep on working with new features you could decide to hire c# senior of 5 years of experience because it's an easy switch. Now if you need performance related stuff you would probably go with someone that did actually java and not other languages. This should usually be discussed with managers and the devs involved not just upper layer
This is great advice.
I hope Devs interview, HR's Follow their own algorithm, if you are an else, have a nice day sir.
Nice way to put it
Exactly, I read somewhere that they need a jr developer with the experience of a senior developer and with the salary expectation of an intern.
My previous job said mobile interface developer, with experience in Angular, TypeScript and Ionic, thinking I was going to work on mobile-first web or hybrid mobile projects.
HR: Do you know bootstrap?
π
HR: Have you worked with CSS3?
π€
HR: Congrats, you have been employed as mobile interface developer.
What I do at work is building Android apps using native env. (Kotlin & Java). I dropped this job for good.
At least I had a laugh
HR's obviously should not be conducting technical interviews
I once had to explain to a recruiter for a front-end position what was front end, what was react, what was javascript and how do they relate to each other.
Something similar happened to me a few weeks back. I had to rate myself in Java to a recruiter for a frontend developer position. I really had a hard time to stop myself from laughing my arms off! :-D
Feel you bro
I don't understand the expectation to write on the whiteboard in interviews. I think managers need to understand that the biggest thing to look for in developers to hire is their interest to learn and how they work with others. These 2 factors alone express what a candidate is capable of.
I also wince whenever a company mentions how strongly they value "a very active and healthy GitHub profile" (took this from a job position) when considering a developer. I for one struggled between coding at my last job and the expectation to have all these side projects to show on the side. If someone with that mindset were to see my profile at one point, they would've just made an assumption that I wasn't what they were looking for and dismiss me immediately.
I totally get that. It's as if having a job in tech, and tons of experience isn't enough - you HAVE to have dozens of side projects and contributions to open source. Kind of scary for someone who is good at their job, but doesn't want to do this every waking moment.
I've met some ppl who could code really well, but I would never want to be on a team with them (snarky lone wolves).
This is literally me. I hate taking on side projects because I have a full-time job and I want to focus on it. It increases my productivity.
What if I leave my current job and apply for somewhere else and they don't pick me because I don't have a lot of "projects"
I think my current hiring manager was impressed with my YT channel, I have 13 videos on tuts and how-tos dating back to 2015 with over 100k views... I had only internship at my previous job and I was given a fulltime role at my current job... I think hiring managers need to know more of the position.
Good thing I am nearing retirement. I'd never actually use GitHub or contribute to open source. Is that controversial? =P
Just made me think of John Carmack using floppies as their "shared repository" for Doom or something
Thats actually the craziest thing about working in our field. You're expected to work on code 9-5 as well as going home and doing more coding. Its like your job is meant to be your hobby, your life. You're effectively meant to increase your value as an employee in your own time without being paid for it.
This π©-vision also prevents developers having side projects like building a tree house or making music, which, I think, is more healthy and keeps you refreshed (Unless your biggest hobby is your project on Github).
I would only require a fresh graduate, or a long time not-working developer having personal coding projects. Otherwise I don't find it healthy.
Yes! I have soooo many more hobbies outside from coding that it's such a struggle sometimes, especially since I'm looking for work now. π
Good luck with your search.
Thanks, Guney. π
Some of us get involved with our jobs more than just "9-to-5" kind of thing. For example, after I started my current job, for about 3 years I was "working" over 12 hours a day. It wasn't requested by the company, but after the 8 hours I would stay in the office with a few collegs, open a beer and discuss for hours our product, changes, impact and so on.
I even went on to restructure the entire operational team, even tho it wasn't part of my job and I wasn't even paid for it.
After those 3 years, any sane human asking to look at my GH profile or any other profile is just crazy. Why would I go home after 8 hours to work on small projects when I could make a real impact at the company I work and I believe in? If that's what they are looking for, I'm pretty sure I'm not a good fit.
I've had that happen to me before.
Anyone heard of Revature? I applied to their Jr. Developer position and a recruiter called me within 2 days. They were impressed with my portfolio for someone who was semi-new to programming. They straight up ended the conversation when I clarified I didn't have a 4-year college degree. They told me that was literally the only requirement for the job. They were willing to train. Their exact words were, "If you had just a degree in, let's say, English, it doesn't really matter, we would hire you right away. Unfortunately, without the degree, we can't go forward with you". My work in Python, CSS, HTML, and JavaScript meant less to them than a Bachelor's of Arts degree with no technical skills. I was heated to say the least.
Revature is a HUGE red flag. Be glad you had not done it.
I certainly am now.
Same thing happened to me with them. I've been in the industry for over 10 years and was relatively over-qualified for the position they were hiring for (I just wanted to work in a small town and they were the only tech company there). Revature is a joke company. You dodged a HUGE bullet.
This is a problem myself and I know many others.
10+ years experience but the small-town companies are so far removed from the tech industry latest standards they can't even recognize that you're high-quality talent.
The only way I'll be able to work in small-town with high salaries is running my own company and in honest it will be my employees who will get that benefit not me.
Thank you. I thought I was crazy for a while. They make it seem so nice but, I'm glad to know it was a blessing in disguise.
I wish I could interview more folks with no degrees. All they have to tell me is that the degree was not worth the overinflated cost and then drop a massive portfolio on me. Ahh dreams...
Any here ever interview someone without a degree?
I'm a sec without a degree of any sort. I've been doing IT for the past ten years without so much as a cert. Why pay someone an absurd amount of money to teach me something I can reach myself. But employers don't seem to think it's the same technology or something...
I was the same for a long time. Most of their little songs and dances are not worth the time.
Almost as bad, in my opinion, is when organizations recognize the tendency to focus on keywords, and they proceed to use all of them. You see postings like "Must be proficient in at least one major language: Java, C#, Python, Ruby, Go, PHP...At least one front end framework: Angular, React, Vue, Aurelia...At least one cloud platform: Azure, AWS, GCP... There might also be clouds of other keywords that I've rarely bothered to read in detail, because most of the time they're minor details at best.
I can possibly see a couple of reasons for this. First, they want to find somebody who can become proficient at whatever is needed (like your example), and they want to show up in keyword searches. Or, they really do have that kind of stack, which could be frightening, but might be ok if it's a consultancy.
One thing that helps when I'm reading a job posting, is to follow the list with something like "we use AWS, we use Go, we use Vue. As an applicant, this helps me to understand your stack. Then I can move on if I'm looking for something else. Or, I can choose to study up if I like the organization.
It seems to me as if there are so many applicants that some companies are willing to brutally filter out people based on arbitrary keyword matching just so they can get the list to a manageable level. The result is people who are just as good at gaming the system, but might not be as good a fit as people who were filtered out.
My company's job postings include the requirement of being proficient in any major framework. (React, Angular, Vue) even though we use Angular primarily. We do this because we look for good talent and our okay investing in educating someone with potential on the ins and outs of a certain framework. In fact most of our developers came from a react background. (including me)
As long as that intent is clearly communicated in your postings. Otherwise, I feel like I still want to see specifics of what I'd actually be asked to use. It helps juniors decide where to specialize, and it gives established folks the flexibility to be more picky. If the company was awesome, I'd be willing to go for it if I didn't know a particular framework. I'd like the opportunity to address that in my cover letter and in my early conversations.
EDIT: A short anecdote... Last year, we interviewed two people for one position. One person had a veritable π©-storm of keywords in their resume. The second person had a more focused resume. The boss ended up hiring the first person because they theoretically ticked more boxes. The resulting π©-storm caught the boss completely off guard.
I believe I'm working with that π©-storm at the moment...
I know one π©-storm, he feels bossy about one framework and thinks it will work for all without looking at the cons
I see adverts saying things like "We'll take people with no experience in foo, as long as they can show experience in bar" followed by a tech test that must be done in foo.
Why waste people's time???
I agree that that is a really bad practice on those companylies' parts. My company does have a coding challenge, but we let people use whatever framework they are comfortable with. (We have gotten some and passed candidates with coding challenges in all major frameworks)
I think the primary framework is important to state. I'm starting to see job postings that list almost every technology under the sun or none at all (in a way to be inclusive), but in reality, they make deciding to apply or not confusing, espically, if you ideally want to go to a place that uses a modern component based framework (React, Angular, etc).
For example when places list both jQuery and React.
I understand why some companies ask for jQuery and React because our company is working on the project updateting clients' projects from jQuery to React. In order to do that you have to understand both libraries very well.
hmm, yah that's totally fine. In fact, my past job, I did that (upgraded older apps) - so I think it was my fault I wasn't clear in my example.
My main point of issue is when organizations are not up front about the 'primary' technology when they list dozens of wildly different stacks to for the sake 'inclusiveness'.
IE if a dev wanted react knowledge but ended up working on jquery their whole time, they would probably not be to happy.
This fits their mindset they rather have you arrive with a vague sense of what they actually require.
At my company, the exec in charge of our software regularly says: "I don't want to pay someone to learn", then asks for something that doesn't exist, or for us to use some technology no one has ever used previously. I haven't decided if he doesn't think about what he's saying, knows what he's saying but is fine being contradictory if it suits him for the moment or to make a point, or is maybe just a bit dense.
It's like this everywhere. I think software on some levels is fundamentally broken. It's at the center of most tech, which is an area of business that sees continuous innovation, yet we still see job postings listing a laundry list of skills that match the company's entire stack, none of which everyone at the company understands entirely. It's just a farse. No one really knows what they're doing I don't think.
Ability and motivation to learn is one of the most important thing I look for in a dev. I don't care if you can write a bubble sort. I care if you can dive into my existing code base, understand it, and make positive contributions.
I pay people to learn every day. What I don't want to do is pay people to NOT learn.
Yep, and I bet your software team appreciates it and does a good job because of your approach.
I love this. I have when I hear,"oh we want someone with x years using this language." That says to me that you're stupid because any dev knows that you can pick up another language. It's the concepts.. The reasons behind doing things a certain way.. Not syntax. And don't ask me to do something you don't do regularly it haven't done in a while just to try and trip me up. Furthermore, no coder codes completely from memory. WE ALL USE GOOGLE! So if I can't solve the problem like I would in the real world, don't ask me. What really gets me is the frameworks. Any developer with a solid understanding of JavaScript should be able to move between angular,Vue,and react. These are all just wrappers that abstract away a lot of common tasks. But again it's the concepts and what's going on in the background... How data is sent, processed, and stored, protocols etc, These things never change
My company encourage us to learn and to educate teammate. I love it because I am learning some thing new every and will to transfer my knowledge to other teammates. They also move us to different teams for us to learn different stacks what ever each team is using. I think it is a great idea an positive outcome.
You're right with the "noone knows what they're doing" part
I became a freelancer qualifier after suffering that madness. I realized how many good engineers where dismissed for no good reason on interviews. First thing I told my customers is: let's stick to real coding! (Aka no binary trees crap) and second: framework agnostic technical challenges.
You're totally right with this post and I see it's an international thing, because it's happened to me already (like not knowing enough React, in their freaking opinion). I am in Spain, I wonder if it happens globally but it needs to stop. A good developer isn't the person who knows exactly xyz stack, but the person who can quickly get up to speed with that stack and any other in the future. Plus all the project experience, people skills and so on. Engineers should not do HR stuff, tunnel vision and opinionated egos don't make good qualifiers.
This is so true. Not just for the big players in the house either; small-ish companies somehow got it in their head that for a dev to be worth a damn, they must know RoR, Python, PHP, React, Vue, AND Angular. It so frustrating when searching for a job and literally a dozen emails come through with βYouβre a great matchβ sentiments. When I get to the HackerRank portion of the interview process, I feel inadequate because I donβt have all of the skills of the Unicorn Dev they are seeking. References and proven track records are meaningless. Itβs driving good, experienced people out of the industry.
I had one a few months ago: You are not worth hiring because you wrote something in one line what would take ten lines - although it works.
TL;DR: Write code for humans more so than computers.
There is a legitimate concern there though. Code that can be done in one line is neat, but in the long run, the more cognitive load your code requires to grok, the more expensive it is to the project and the team. I don't remember the exact figure, but something like at least 75% of a dev's time is spent reading code. Therefore, every developer should endeavor to make that large portion of time more productive.
I can understand all the need for writing descriptive code, but these days fluent code writing is so ubiquitous that every library provides it. Even test case writing is being redesigned to be written in Fluent style. So when someone asks me to sum all odd numbers, why would I write a long, lengthy loop instead of a single line that is elegant, readable and fluent?
Stephen Grider mentioned "avoid fancy methods in interviews because the questions are intended to be an interactive thought process exercise." Write the long answer and then ask to refactor.
I had an interview with a small startup based in Michigan. The role was of C#/.NET Developer. The guy who interviewed me was the C.E.O. The first question he asked me was to implement an AVL tree from scratch. And I had no idea what to do at that time. I felt so bad that I was a computer science graduate from college and I couldn't solve the question. I just tried to explain to him that I studied AVL trees like 2-3 years ago and I didn't expect this question to be asked in the interview. The guy insulted me and told me that you need to practice a lot and be good at data structures and algorithms. And then he said that "Sorry, I cannot go further with the interview". I felt so miserable at that point and I was not able to sleep that night.
Engineers have self-focused mind. They are looking for people that are similar to them. If recently they needed to implement something hard, they will use that for their next interview.
That's actually very true.
The concern is that you really need different people on a team, not just ten of the same :D
Agreed. There is not one solution, so your not hiring "you".
Having diversity in work education and experience creates the opportunities for more and better solutions!
I agree that these qualifiers are absurd and dangerous. I won't allow any such in my own company's hiring practices.
When I encounter these I am interviewed, I have an answer ready, however...
Thanks for this
This could be a good as a stand-alone post on its own. Consider publishing.
Good idea...
dev.to/derekanderson/the-ideal-dev... (edited)
If I ask an applicant to solve a problem I'm more interested in their though process than the answer. As for language knowledge, does it matter if a Java dev applicant doesn't know what type erasure is? Nope. Does it matter if they don't know what static means? Hell yes! Understanding is more important than memory.
I was asked to mutate an
Array
prototype. When I said that this is extremely bad practice and shouldn't be done, I was told that this is really "lame excuse for lack of knowledge". Oh yeah, it was a JS lead position.Thinking and code organization are way more important than actual code sills. We can teach a languages, syntax, patterns, and business domain. I'm also okay with ok/problematic code as long as it's organized and reasonably documented so it can be expanded or supported and that you can learn to better.
On a side note, employers who ask people with skills and very specific experiences they are ironically asking for exact people they probably don't want. They are asking for the ..."already been there" and "done that" employee/contractor.
Most skilled developers worth their soul don't want to "do it again", they want to expand their skills and apply what they've learned to something new.
Personally, when I hear this, I see a desperate company that is probably behind schedule and overworking their employees. I'll double my rate/salary every time. I figure its a premium to think your going to get someone 100% productive on week 1, deal with your pressure, and probably perform a job I don't want.
...yeah, I'm on a rant!
I interviewed some guys. They could not solve the add 2 arrays integer challenge in their favorite language. I gave thumbs down on them... Sad.
the challenge
addArrayInt([1,2], [9, 0]) => [1,0,2]
What the hell even is this question?
ππππ
It's probably for data analysis
I also don'tget the answer π€
Regarding the name I'd expect [10,2]
for(int i=0;i<a.length;i++) {
result[i]=a[i]+b[i];
}
return result;
Unfortunately I don't work as a developer, it's just a hobby π
it is for handling big integer add,
if you have 2 numbers:
for example: 123123123123123123123712931290 + 987837298748923749823749823749238472 = ?
you have 2 big arrays of digits represented 2 big integers, we want you to do the ADD operator into a single array.
Your original post didn't say "an array of big integers" nor as of the time of writing this was it updated. Waste of my time. Are you sure they didn't know or said I don't want to work here? :)
hi, sorry for leaving any confusion,
here is the challenge and solution: geeksforgeeks.org/add-two-numbers-...
We are actually using a code editor online like hackerrank, where the challenge is very detail with sample...
the challenge is aimed to check if the candidate has a skills to manage code , variables , loops etc.
This is the result you want
There you go
I know this is not what you want, but I know a CompSci grad can regurgitate the solution in minutes. However, it turns out to be a poor indicator for hire because then I have to spend 3-6 months teaching them AWS, how to probably commit a feature to a repo, how to work with a web framework.
Honestly, just want people meeting business objectives. There are hundreds of books and online solutions where if and when you need to you can produce this result when needed.
I needed OpenCV to crop the whitespace out of a photo so I put my co-founder on it. He never used python, his background is not web-dev (network engineer), he had it working in 30mins.
I put a comp-sci grad on it and they couldn't get it working with a full week timeline. Yet they can solve these puzzles. Make sense of that.
Easily. Your co-founder has a wealth of experience and time served in a wide variety of tools, techniques, libraries, patterns, shortcuts, blockers, research techniques and the graduate has a fraction of that an no understanding of what corners are ok to cut. This is exactly the result you would expect. Why it makes no sense to you, makes no sense to me.
WHY?
Isn't it more important to listen to their approach to solving the problem? You clearly can't expect any candidate to "everything" you know.
I will come to the correct solution but if the process to the conclusion is not the same as the interviewer then it's invalid. I remember I had an algorithm challenge which I think was a multidimensional array where you had to count the occurrences of 1s scanning the rows and the scanning the columns.
The senior interviewer kept interrupting me because they thought I was down the wrong path and we're trying to lead me to the solution thinking like a comp-sci.
Their production server during the interview had was down and the senior interview left and and I was able to continue down my own process where the junior interview did not interrupt and I solved the problem with a lower space complexity than what they were expecting.
I tend to break down problems to their smallest components and then assemble the answer. To me its like cleaning your desk before getting to work. So it appears I'm doing busy work or refactoring instead of just working with what's there.
Buzzwords are so much easier for non programmers to understand than what's actually important - the ability to absorb information and more importantly, problem solving.
Good people will find the best tool for the job even if they're not as familiar with it as they could be, then they go ahead and get up to speed.
I have been in both positons during my work experience as an interviewer and as an applicant.
As an applicant always hated interviewers who did only questions about programming theory when i knewed that none of those things where applicable in the real life world applications being built at that company. The big problem i had with theory only questions was that they forced me as a developer learn stuff copy/paste. I had to answer them exactly like the answer they had on their sheets or it wouldnt work well for me.
This is wrong. This is transforming developers from problem solvers into monkeys.
Thats why when i was in the interviewers position i focused mostly on the real life experience they had on their previous jobs. Also i focused on real life problems we had at work so the applicant always worked on real life situations and we all felt better.
Its true, this way more people passed the interview but all those who passed deserved to pass, how many got hired was then a HR job.
While searching for my very first IT role I attended an interview for a junior technical position advertised as requiring "no experience". In the technical phase of the interview they asked me how I would establish a network between two distant buildings using line of sight lasers and it went downhill from there. Still the most ridiculous interview I've ever had.
I took a React,Cypress, GraphQL interview from a stackoverflow listing despite having not used any of the tech in their stack (except NodeJs & SQL)
Got to the final stage. Finished the first task in the final project while learning all these technologies during that period. Later got informed that while I was a good candidate, they felt that I couldn't solve the second problem as easily (which required more advanced concepts in a foreign stack to me) & that for that reason they can't hire me. The worst part is that they mentioned knowing their stack isn't necessary for the interview
Now I'm CTO at my own company
Hiring managers are notoriously uninformed about the tech stack and its implications. The worst I have ever encountered was someone who wanted me to do Java for them, because I'm good in JavaScript and that's basically the same, isn't it?
Where I live, it's unheard of to hire somebody to work in a stack they haven't worked with before, even if this person has proven that they developed in a similar stack and can learn very quickly.
It's a shame, companies are passing up good candidates just to eliminate time to get an employee caught up.
I was applying for a JavaScript dev job and all the problems that the interviewer asked me to do were resolved by using array functions like map, filter, reduce, etc. For each problem he told me that he wanted me 'to not use those shortcuts' then what I did was to redo all problem with for loops and then he told me that he wanted me implement data structures on all my solutions. Which I did but I told him that it didn't make sense to me why someone will need to know how to implement a hash table to solve a problem that has a one liner solution in JS. They rejected me I guess he didn't like that comment.
If you want to watch a person solve problems watch them play freecell. White boards suck and I love interviewing and whiteboards.
Freecell is awesome because every level is supposed to be solvable, find one you haven't solved and have them play that... Maybe they will teach you something.
... and to HR and hiring managers out there...
Just because someone has only driven Nissan and Chevrolet trucks doesn't mean they are not qualified to drive a FORD truck. This is analogous to many higher-level programming languages. Java and Python its probably not really much of a leap (yeah they do concurrency and threading different but suspect a qualified person could figure that out. However, C/C++ and Python/Java (either way direction) it probably a bigger deal. It might not be a big leap between C++, Rust, and GO.
While applying for my current job I was asked fairly simple questions about the language and frameworks I would be working with.
Every time I answered, they'd ask more advanced questions and go deeper on the subject to see how far my knowledge went, how I responded to certain things etc.
Besides finding out how proficient I was, what my knowledge gaps were etc, they also got to know how I respond to not knowing the answer to questions, having to admit gaps etc; which is about as valuable.
I wasn't hired by a company because, even though I passed both rounds of their coding challenges, during their interview process they based a lot of their questions around distributed databases... which was not part of their job description, and it was something I am perfectly capable of picking up.
I once had a recruiter asking me to explain event loop in JavaScript. She had to type as I was explaining her, and that answer was supposed to be submitted to the hiring manager and decide if I am eligible for the next round.
I spoke in detail for about 2-3 mins, and she moved on to next question. I asked her if she could type all the technical jargons I threw at her, and she said she didn't understand a lot of technicality in it, and she wrote what she could understand. Obviously, I didn't make it to the next round. :(
I still don't know what I could have done better there to make the cut!
According to Joe, if you can solve an easy programming question fast then you're a good hire, if you can't solve the easy programming question then you may not be able to tackle on the advanced stuff.
Source: joelonsoftware.com/2006/10/25/the-...
Appreciate the share, worth noting. Cheers Man!
In late 2017 I heard in feedback from an interview with a digital agency that they didn't think enough of my experience had been in an agency environment. Which was very strange as all but six months of my experience since 2011, when I started in the industry, was in an agency environment...
Agreed, I was asked to name the algorithm to find out the second largest element in a Binary Search Tree, and even though I told them the whole algorithm step by step, with and without the actual code, they didn't accept the answer because I couldn't name it.
Couldn't agree more, oftentimes the qualifiers (criteria) are all wrong. It's not that experience with a specific stack isn't important, but companies who are looking to hire should look beyond that - they should look at more generic and abstract skill sets, both "hard" and "soft". And please let companies stop being hung up on algorithm tests like being able to memorize how to code a bubble sort from scratch.
Some things I never understand as Js Full Stack Developer -
Devs what is your opinion on this?
I think I have this in my head without ever looking it up (but I wouldn't* expect anyone else to know it):
Suppose x is the input and y is the output.
set y to 0take x and modulo by 2 (don't set x yet), AND y with 0x1divide x by two and throw away the decimal remainder and set x to this result.Left shift y by 2.repeat steps 2, 3 and 4 until x becomes 0. Result is in y.See edit**.Although I don't see the use for this especially if the language or libraries can do it for you.
EDIT: I thought about this for a few hours and realized this is incorrect because the highest bit of y is the lowest bit of x. The correct algorithm is:
*the original comment had "would" by mistake! oops.
**I guess if you admit you made a mistake in your algorithm during a job interview you are more likely to get hired for being honest.
What planet are you from, and can I visit?
It's taken me a long, long time to find companies that want honesty and behave like they want it.
I come from a non-developer background so I was very intimidated by the code interviews. Once I was told through my boot camp that most companies want to see your process, I got much more comfortable preparing for them.
I dig this one. These types of problems help to show true problem solving skills.
Hell yes! Blows my mind that some of the smartest people working in some of the most innovative and super progressive companies....can be so myopic :(
Yes, I've too been under the new hire vetting process. What I should have told them is "I look up everything on Stackoverflow". If they don't get that, then it's probably a good thing I didn't get hired there.
I think a lot of companies have hidden requirements. You are not worth hiring unless they can give you any problem, and any due date, and you just make it happen. In my previous job, I had a boss who often overpromised to the client, wouldn't ask for our feedback, then state "You guys are smart, you'll figure it out" and leave us to stress over deadlines and try to make it work. I got fired for coming up with a better plan for a project that wasn't being managed. Needless to say, these kinds of companies that do not have a pulse or the slightest understanding of development, will find themselves with a high turnover rate or developers who are writing fast, dirty code that is not scalable and full of bugs.
"Fake it till you make it" is a mantra I have heard often, and I think it's because of these types of companies.... but I HATE this motto. Sure, you should have confidence that you can figure out problems, learn languages, etc with the right amount of time and resources... but faking your abilities only allows companies to fake their support of you. They will clap your hands when things are not on fire, then abandon you to the flames when they errupt.
Agreed.
Most questions I receive in interviews are academic and chances are, dont apply to the company I am interviewing for.
Also, almost all algorithms are coded for in a library, or are commonly stack-overflowed. Just pass on the company until you get a gig that is more "sane".
Ive worked for at@t, alcatel lucent, general motors, bloomberg, fbi and a number of other high profile companies.
The only clowns asking these stupid questions are nobodies or maybe google.
Oh, "junior" jobs that want 3 years of experience, plus expertise or extensive knowledge of C++, Java, Python and Typescript.
I have since moved away from management, but for a while I was the manager in charge of both the software development teams and the IT teams at the seismic facility I worked at. When I was hiring I would ask some very basic technical questions about the language/stacks we used just to see if they knew about them and why they would be used.
I more focused on questions asking 'how' they would go about solving a certain problem and what their thought process was. That for me ended up getting people better suited for the job. I needed software developers that were also problem solvers. MAny of our developers including myself also went out in the field to support seismic experiments so I needed people who coudl troubleshoot, and possibly write a new utility, solve a hardware problem, or diagnose an issue while in the jungles of Venezuela, or while working out of a yurt hundreds of miles form anything resembling civilization in Mongolia, or in a remote camp in Antarctica.
It's not the same knowing something by memory than really know how things work from the inside. Sure, a bubble sort must be something really basic, but it's something that is though to students to train them to elaborate algorithms just right. On the professional field, is it really necessary to know this or any sorting method?
It's like knowing by memory how to factorize an equation instead of understanding the logic behind the operation. At the end, is just an exercise but not a parameter to qualigy if someone is a professional or not.
I've had occasion to sit on the hiring side of the table. My primary qualifier when my wishlist isn't immediately met is to evaluate the candidate's willingness to learn and how their different path to "developer" can be an asset to the team.
"You're not worth hiring if you can't/don't have..." smells like dogma rearing it's ugly, prejudiced head again in an industry that changes stack and talent approaches faster than Streisand did her concert wardrobe. Get over yourselves.
I am far from being a code goddess, but applied for a coder/customer service position at a game company recently. The game teaches people to code, and while again am not proficient (been out of practice as where I work does not really allow coding outside of work) I did okay on the test. But they didnβt hire me...because I didnβt ace the test...just on the coding part. But this is a job...where the job teaches people to code. Stands to reason, I am going to get proficient in short order, just working there. Logically made no sense to me, lol.
edited to add-I did get to see where I was lacking and working to improve and was so happy to see I had not forgotten everything in the 5 plus years I havenβt been able to code.
For ExamPro I want our hiring process to be that you use our platform to learn to program on our stack and you're hired. Sounds a bit similar.
A good junior developer comes in with opinions he/she inherited from professors or from what they read and necessarily are not speaking from experience. I suspect that by the time most Jr. devs graduate to Sr. and get another step closer to being the hiring manager, their opinions start to be shaped by their team dynamics and company culture.
A good Sr. developer or Team Lead or Product manager should be recognizing from the outset that the Jr's need training in hiring and making decisions on who joins the team as they progress and have an approach that includes the lessor experienced developers in the hiring and decision processes that bring new members on board. In other words, be shocked by the non-sense that comes from the Jr's, but don't take it personally nor act shocked. This is your opportunity to coach!
I can relate to that VueJS experience. It is rather strange to be looked down and years of your experience from synergy domains bashed by few works like - you are too young / I see you've used it only for half a year. The worst thing is this most of the time comes not from HR but the devs alone.
Such behaviour is a big red stop for me
I had a similar experience once, a junior developer said we shouldn't hire anyone who couldn't explain SOLID off the top of their head in the interview. I told him I didn't even know what SOLID was (turns out it was formalized long after I graduated from college). You should have seen the look on his face. And yea, this is someone who continuously needed help to finish their tickets on time. And yes, someone who was part of the interviewing process for all tech hires.
I think as long as the person has experience with development/projects portfolio and is good at googling/searching on solutions, and validating the code is good enough to be hired.
The inmates are running the damn asylum.
Makes you wonder who has the power - dev.to/rwoodnz/attitude-adjustment...
That's ridiculous. That's all I got on that. Ridiculous. I can't find another word...
// , Oooo, I got one, write something about the Hiring Committee Effect!
Bonus points for corollaries to Conway's Law.
I was asked to master AngularJS in just 2 days and give client interview on Monday.
It's not easy to MASTER any tech in 2 days.
The way we are engineering our hiring process at ExamPro is we create mini-courses and you just have to pass them so we know you'll be productive. Since our mini-courses are 1-to-1 with our technical stack, developers will meet the bare minimum.