I interviewed a 'senior' developer who had been a consultant for several years. When we asked how he implemented past projects, his answers were really vague. We got suspicious and dropped down to a simple problem like, "write a loop to print the numbers from one to ten."
The guy was writing some really weird stuff. When asked to explain, he confidently told us that in C++, every time you reference the iterator variable inside the loop, it gets increased. His solution was something like:
for (int i = 1; i <= 10; i++)
{
printf("%d\n", i); // <== i gets incremented!
i--; // need to compensate for the extra increment!
}
(except I'm pretty sure he didn't get printf right)
So, yeah, I see FizzBuzz as a wonderful way to weed out the incompetent right away, allowing you to focus on deciding whether you need capable or exceptional.
Incidentally, one of the guys on my senior project team in college didn't understand how variable assignment worked. He would write:
int flagsVar = COMMON_BASE_FLAGS;
flagsVar = ADDITIONAL_FLAG_I_WANT;
CallAPI(flagsVar); // Why doesn't it work?!
Words cannot describe how tired I am of hearing these sorts of weird sports metaphors used to describe tech talent. Are we really so immature as an industry that we have to constantly rely on sports metaphors? It's as bad as talking about ninjas and rockstars.
Also, I'm really sick of all these mindless, droning, uninsightful posts about hiring in general. Who cares? Tech interviewing and hiring is a joke, and everyone here knows it. Larger companies act like you're saddled with the new hire forever, even though in most places reading HN it's extremely easy to fire people. Small companies act like they absolutely have to find the best talent in the universe, even though what they actually need to do is get some product shipped. It's all just ego stroking and an attempt to codify insecurities.
How about more awesome submissions about hacks, ingenuity, and product success, and less B.S. about name-dropping, baseless pontification on interview tactics, and overuse of bad metaphors. While were at it, let's drop the bubble FUD and ridiculous guesses about big company tech strategy.
OLE, ActiveX, .NET, MFC, WinRT - they're all entirely different technologies
Not really. Initial versions of OLE were built on DDE. COM was the next generation of OLE. ActiveX was just COM with a DispInterface (self-describing interface to allow dynamic scripting), so named solely because of a rebranding effort to put an X into everything. .Net was, in my opinion, a ridiculous branding of what was essentially analogous to Win32, and it was only named .Net to align with the Internet craze. MFC was just an app development architecture, so as I understand it it's related in intent to WinForms.
Why was COM with a DispInterface called ActiveX, to stand alongside DirectX, when the two had essentially nothing in common with regards to meaning or context, yet MFC and WinForms, which seem related in intent, share absolutely nothing in terms of branding or name?
Microsoft's rebranding efforts just confuse everyone: developers, users, and IT.
And hey, Windows is just DOS with a bit of new code, and wasn't that just a quick copy of CP/M. Really we should expect Windows 8 to have been called Microsoft CP/M 2012, right?
Some of the names you mention are indeed related, but branding and marketing are entirely different beasts, and from a marketing perspective, it may be perfectly logical to give disparate names to tangentially related technologies.
Windows 8 has no code parentage from DOS. Windows NT was as a completely separate OS design. Compatibility and so on for various submodules, sure, but DOS isn't in the parentage. They've had/have POSIX as well as OS/2 subsystems in there too, but NT is its own thing.
And hey, Windows is just DOS with a bit of new code
If you think that the step from a command line to GUI, multitasking OS is anything at all like cramming an 'X' or 'Live' into a bunch of disparate technologies, then I don't know what to tell you.
Edit:
from a marketing perspective, it may be perfectly logical to give disparate names to tangentially related technologies.
Please explain the logic of 'X' and 'Live'. From where I'm sitting, they're just aliases for '1997-2003' and '2005-2010' (numbers purely guessed). It added absolutely nothing of value for anyone, aside from the marketing team.
From my totally unqualified understanding of marketing, it's because it makes people go "oooOOh" and statistically more likely to buy or even notice the product, because they associate it somehow with fast cars and filthy sex. This makes the "random and without value" renames vaguely sensible in a for-profit corporation: it drives the bottom line. But hey what do I know, I'm a nerd and have barely sold a thing my entire life.
Quitting the devil's advocate role and in support of your position, if nerds had their way, the entirety of marketing and design would be annexed in favour of technically aesthetic solutions (functional product names, stable UIs, uniform web designs, ...), but sadly when speaking of the masses, buying choices are simply not driven by rationality. My ideal world will probably never come, at least in this lifetime.
DX (DirectDraw+DirectSound+DirectNetwork) had support added for IDL - basically making an AX wrapper for DX native parts. However, MFC encompassed the entire message pump, which winforms just consume (unless additional code is added).
I do remember delivering an ATL-MFC COM component that had interop with .NET some time around 2000. It would have also had some additional OLE code too, but at the copy+paste feature was removed sometime mid-project. If your code needed access to a keyboard, the screen, the network AND wanted to be able to use it as a library this was the only "sane" way to do it.
The overlap and confusion was insane, and it hasn't stopped.
.NET (.NET Enterprise Technology) is a bit more than just an API like Win32. It's a whole cross-platform language runtime, in addition to a massive standard library...
How many billions of people are there on the planet? 'Social' is probably the only application of technology that I see applying to every single one of them. While I think what we've seen so far is rather faddish, 'social' will continue to be a massive application for software.
I've seen a lot of Forbes articles appear on HN lately. I don't think a single one of them has seemed the least bit insightful or interesting. They mostly seem to write poorly-based opinion pieces that show ignorance of large swaths of tech. They can usually be summed up as, "Web 2.0 ... Web 2.0 ... Web 2.0 ..."
Often, when I'm reading a resume I'm thinking: “This guy is great, look at all this experience. He clearly knows Ruby and JavaScript like the back of his hand, and this interview is just going to be a formality”
For what it's worth from the other side, I've been repeatedly amazed at how much interviewers have managed to read into or project onto my resume. And I'm not talking about recruiters, for whom a single keyword instance qualifies you as an "excellent match!" but actual working engineers and engineering managers.
The guy was writing some really weird stuff. When asked to explain, he confidently told us that in C++, every time you reference the iterator variable inside the loop, it gets increased. His solution was something like:
(except I'm pretty sure he didn't get printf right)So, yeah, I see FizzBuzz as a wonderful way to weed out the incompetent right away, allowing you to focus on deciding whether you need capable or exceptional.
Incidentally, one of the guys on my senior project team in college didn't understand how variable assignment worked. He would write:
He graduated.