106 karma · joined January 30, 2017
These kinds of courses and prep has existed in similarly popular fields for many yeas: law, medicine, finance, etc.
Beyond that, if you do use a single question, you're now playing a game of whack-a-mole: I used to ask this question about the challenge, now I can't because it is leaked and people prepped for it. How do you scale that across an engineering organization? Do you have weekly meeting with every interviewer informing them of the questions about the challenge that are now blacklisted? It's going to be infeasible for any reasonable sized organization.
The challenge with this idea as well is that the risk of false positives is much higher than the whiteboard interview. The current interview process is designed around minimizing false negatives.
False positives are really costly to an engineering organization. It's not good for morale when engineers are being hired and fired in the same month on a regular basis. It's takes time to onboard, and slows the team down. It's also not good for the company reputation - would you apply to a company who had a reputation of firing a good chunk of its new software engineers within the first month?
As someone who gives a lot of interviews, I'd love a better way to assess a candidates ability that is less gameable, but we haven't found one yet.
Then if your company is large enough, your novel challenge gets leaked and everyone knows it ahead of time. Solutions start being sold or distributed. Then your interview is meaningless.
I'm all for a viable alternative to the whiteboard interview, but I haven't encountered one yet.
Take home assignments are easy to cheat on and take a lot of time.
Asking questions about someone's experience is a great way to find someone who is a great conversationalist that can't code.
Asking someone to program at a computer in a limited amount of time falls victim to the same issues that the competitive programming, whiteboard interviews currently do.
If people at Google were interviewed by juggling raquetballs, there would be books, courses, etc. on how to juggle better. People are willing to pay for this prep because they want to work at Google. Eventually most everyone interviewing at Google would be very well prepared to juggle.
* Is attractive enough (compensation, lifestyle, etc.)
* and has a larger supply of qualified applicants than desirable positions
Will result in applicants preparing for however they are interviewed, tested, etc. This isn't unique to software engineering interviews. People prepare for interviews or exams in finance, law, medicine, etc. They all have a system that is gameable. It might be newer in software engineering interviews, but that is mostly because CS is now incredibly popular and top talent is compensated very well.
Most of the labs for this textbook were great: writing a shell, implementing common math functions by bit twiddling, buffer overflows, disassembling the bomb with the debugger, etc. It was a great class. Definitely not easy, but a lot of fun.
Edit: should have keep reading before commenting. In their related work document:
>we are definitely not declaring Lightbend Scala dead. To the contrary, we view ourselves as complementary to Lightbend Scala and hope that our results will create new opportunities for the official compiler. We are planning to keep in contact with Lightbend to discuss our findings and facilitate technology transfer.
I've worked in Scala for the last 3 years and I've found implicits to be the biggest issue. They're hard to debug, it's not easy to tell which implicits are in scope. Things like that.
Being clever is a problem with the developer and not the language. Scala code is dense, sure, but that's not inherently a bad thing.
I still use vim or emacs whenever I need to do some serious text editing or I'm in a console.
I don't have a direct comparison to Uglify, but as of last fall advanced optimizations does save us about 2.5 MB over simple optimizations.
We're also using Tsickle (https://github.com/angular/tsickle) and Clutz (https://github.com/angular/clutz) to be able to use TypeScript with our Closure Compiler compatible codebase. Closure Code can be depended upon in TypeScript code and vice versa. It's been awesome to use the type system of TypeScript in combination with the minification power of the Closure Compiler. The build process is definitely a bit crazy at the moment, though.
Disclaimer: I work at Lucid Software.
It wraps the TypeScript Compiler and outputs CC compatible type annotation comments.