Hacker News new | past | comments | ask | show | jobs | submit login

I don't about "exclusive" but the very first time a "data structures and algorithms" question ever appeared in an interview I had was in the Bay Area, after having spent 10+ years on the east coast. Prior to that interviews focused almost exclusively on design patterns (not just OO, but general architecture), project experience, and language specific questions where appropriate. I've been here a while now so I have no idea what the interview culture outside the Bay Area is like anymore.

This area has a high density of people who conflate academic computer science with software engineering, or who think the latter is some easily learned demi-skill to be looked down on, etc.

> conflate academic computer science with software engineering

Which is mind boggling. I took an introductory "software engineering" class in (a reasonably prestigious) university ~15 yrs ago which was ostensibly about learning how to use the right tool for the right job, and one of the assignments was to build a web application in C++!

Perhaps the intent of that assignment was to show that it wasn't the right tool, but that was certainly never communicated by the professor.

I didn't really learn any software engineering until I got my first job and had to build software, with a team, that people actually used.

one of the assignments was to build a web application in C++!

As an aside, we were doing this in the mid-late 90s (NSAPI) and we were running rings around Perl/CGI shops. Why? Because what took them a whole rack of machines took us a single box, and we simply skipped all the issues of syncing data, accessing a shared database with locking etc etc etc that they had to deal with.

Right tool for the job ;-)

see my (late) follow up comment: https://news.ycombinator.com/item?id=12559900

Would modern c++ with a decent framework be that bad for web development? I imagine you'd have to do a bit more wiring due to the lack of reflection etc, but that isn't an insurmountable problem.

Edit - There a quite a few frameworks out there. This one seemed quite nice: https://github.com/ipkn/crow

It would usually be a wrong tool for all of these reasons:

1. There isn't a low-level performance bottleneck within most web-dev code. It's almost all occurring at levels slightly above that(disk access, network bandwidth, database queries, horizontal scaling). The stuff that needs to eke out another 50% in an inner loop through optimizing cache access or careful use of hardware parallelism tends to be a single algorithm or batch process that can be developed independently of the larger application.

2. For eliminating whole categories of errors, there is a bounty of options out there that can claim to improve on C++ through better tools, type systems, and compiler technologies. Even Java, as maligned as it is, can constitute a credible step forward.

3. Good C++ developers aren't that common. There are plenty of junior developers who are eager and ignorant of the potential dangers, though - they will make a mess in any environment, but they'll make a bigger one when given power tools. (This is the argument for Go, and w/r to the case of low-pass-filtering junior devs it definitely makes sense.)

Some counterpoints:

1. There are a number of reasons one might choose C++ that aren't related to low-level performance in almost any application. For a particular web application it may or may not be a good choice, but I wouldn't categorically reject it, even for a class project or assignment web app.

2. Any language or suite of them has whole categories of errors, deficiencies in tooling and other issues that can make it suitable or not in the hands of a given team. C++ has more or fewer of these than other languages depending on the context.

3. This seems to be hurling a pretty broad insult at many C++ developers, and "good" requires context.

Obviously this is a very late response to this thread, but I thought I'd add what I actually ended up building for this assignment.

The requirements were specifically to build a game, any game, and as long as it was playable (and your code was readable) you'd get an A.

So, annoyed as I was at the requirement that the backend be built in C++, I decided go above and beyond the requirements and built a single page Othello game, complete with a strong and fast AI (I happened to take this class much later in my studies than the standard curriculum called for, so I had already taken an AI class and had learned how to build a minimax tree with alpha beta pruning, though up until that point I'd only ever done it in Lisp).

So, by changing the actual requirements of the project, I actually made C++ a more appropriate choice of tools for this project and was able to build a very responsive single page Othello game with a strong AI capable of running pretty fast on the hardware we were tasked with using.

I was the only one who used Ajax to make it a single page app, and the only person to build an AI. Needless to say, I got the best grade in the class, but I suppose I had an unfair advantage.

> There are plenty of junior developers who are eager and ignorant of the potential dangers, though - they will make a mess in any environment, but they'll make a bigger one when given power tools.

I've often wondered about this. c++ has a tendency to fail fast and hard whereas higher level languages can lead to a false sense of security/understanding. Blowing your foot off isn't necessarily a bad thing.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact