News for hackers. Stuff that matters.
Re:The software development final exam: Algorithms and Data ... by amix on Monday October 08, 2012 @06:34AM (#4626230)
While I can answer some of these questions (and could answer them all a few years ago while attending university) this kind of knowledge is simply not something that I use on a daily basis. I also doubt that many others developers use it unless they have very specialized jobs.

These kind of questions should not be the only basis of the software development final exam. In software development problem solving, communication with others, knowledge of the tools etc. are much more important than knowing random knowledge about algorithms. And these skills are much harder to test than asking the worst-case run time of quicksort.

Re:The software development final exam: Algorithms and Data ... by lifeformed on Monday October 08, 2012 @02:52PM (#4628251)
I don't know these answers off the top of my head, but if I needed to know them in the real world, I could easily find them out in a couple of seconds or minutes with Google and Wikipedia.

The difference between me and someone who is unfamiliar with computer science (but is still good with Google) is that I can read the answers and their corresponding articles and understand what they mean, as opposed to the other person, who would just be able to recite the answers as trivia.

Re:The software development final exam: Algorithms and Data ... by kamaal on Tuesday October 09, 2012 @12:06AM (#4629900)
Actually a few years into the industry, I would doubt any body who claims to know these things straight out of this heart(Unless that is his day job).

Seriously do people remember all this math all the years they are building software? Unless you spend a great deal of time revisiting these concepts every other month, there is no way this is all going to be in your head. And if you actually are spending that amount of time learning this kind of math, I would wonder what kind of a programmer you are. A programmer is supposed to build things in this time, gaining mountains of factual knowledge which doesn't have much value in the real world is not very good use of time.

By the way this algo/DS love looks very similar to tool religion. People focus too much on tools used to solve problem, while they should actually be focused on problems.

Re:The software development final exam: Algorithms and Data ... by eru on Wednesday October 17, 2012 @08:51AM (#4664143)
Those questions strike me as very basic knowledge. Why would I need to revise constantly to keep that in mind?

And yes, you are right, you can get away without knowing that stuff, and still do awesome work. And you can know all those things, and never get anything done.

Re:The software development final exam: Algorithms and Data ... by shrughes on Monday October 08, 2012 @08:56AM (#4626603)
They're the sort of thing I use on a daily^H^H^H^H^Hfrequent basis. The questions are not asking trivia questions or looking for knowledge, they're asking questions whose answers can be figured out.
Re:The software development final exam: Algorithms and Data ... by nollidge on Monday October 08, 2012 @09:35AM (#4626747)
How do you "figure out" what a B-tree is? That's a trivia question.
Re:The software development final exam: Algorithms and Data ... by shrughes on Tuesday October 09, 2012 @01:01AM (#4630044)
Right, you need to know certain things. But the point of the question is not that you know what a B-tree is a have memorized a fact about the btree. The point is the followup question, which requires you to understand the consequences of using different kinds of trees. That's not the sort of thing you memorize, it's the sort of thing you internalize. If you can't answer the second question, you probably wouldn't know enough about trees to be able to casually think about certain problems you might come across in "systems programming".
Re:The software development final exam: Algorithms and Data ... by sukuriant on Monday October 08, 2012 @07:57PM (#4629261)
My school didn't teach B-trees, though they did teach 2-4 trees. I've never really been in a situation where I've needed to use a B-tree; and, I was an accomplished competition programmer in college.

That said, I looked up on the internet what they were and it was pretty easy to follow.

Re:The software development final exam: Algorithms and Data ... by shrughes on Tuesday October 09, 2012 @01:03AM (#4630050)
It would be very cool if there was a programming contest problem that required efficient disk access.
Re:The software development final exam: Algorithms and Data ... by sukuriant on Tuesday October 09, 2012 @03:55AM (#4630477)
There are some problems that require efficient reading, which is from the disk; and some that require efficient writing --- though that's more of just "buffer your outputs and don't use complex print methods, like System.out.printf"
Re:The software development final exam: Algorithms and Data ... by topbanana on Monday October 08, 2012 @06:37AM (#4626237)
Yes, this is CompSci, not software engineering
Re:The software development final exam: Algorithms and Data ... by peteretep on Monday October 08, 2012 @06:40AM (#4626240)
Then perhaps the author shouldn't be presenting them as practical issues, and claim that people who don't know the answers either shouldn't be programmers, or work in some tiny niche. You read the context article he linked to, right?
Re:The software development final exam: Algorithms and Data ... by mquander on Monday October 08, 2012 @06:59AM (#4626293)
Just to get the facts straight, the linked article had this to say:

If you can't answer the majority of the questions on these four papers, and you're working or intend to work as a software developer, you should ask yourself why — most likely you're either you're missing something you really should know, or you're lucky enough to be working within a narrow area where your deficit doesn't matter.

The reader can judge for themselves whether this is claiming that "people who don't know the answers shouldn't be programmers." I personally find that characterization rather rude toward the author.

Re:The software development final exam: Algorithms and Data ... by clinth on Monday October 08, 2012 @08:14AM (#4626469)
> or you're lucky enough to be working within a narrow area where your deficit doesn't matter

This implies that non-algorithmic work is a narrow area. In my experience, it's the vast majority.

Re:The software development final exam: Algorithms and Data ... by hkarthik on Monday October 08, 2012 @10:41AM (#4627045)
I agree, non-algorithmic work is the vast majority of programming work today because most of it is related to Application Programming.

The reason for this is that most Application Programming emphasizes the use and sufficient knowledge of a framework, rather than a full understanding of CS fundamentals.

While those with CS have a head start in understanding frameworks quickly and utilizing them effectively, self-taught programmers can catch up rather quickly if the framework is well written and geared towards them. And fast majority of frameworks trend towards this.

Application programmers generally need to know the ins and outs of a framework and this knowledge often carries them further than the fundamentals.

All that being said, after 10 years of application programming, I'm slowly trying to re-learn much of my CS material out of my own personal interest and get off the framework treadmill. It's been a fun process to rediscover fundamentals after learning them over 10 years ago.

But let's be realistic about it, most app programmers have no interest in CS fundamentals or theory unless it has some direct context to their daily work.

Re:The software development final exam: Algorithms and Data ... by rhizome on Monday October 08, 2012 @02:41PM (#4628195)
Just as an anecdote from a self-taught, I few years ago I started in on GoF and got about 100 pages in before I came to the conclusion that a lot of what I'd read so far and was attempting to incorporate into my knowledgebase is already a part of the languages I'm currently using.

I know there's a use for these details, I want to learn them, but I suspect that many times the direct context is built-in, which is pretty much what you say about learning frameworks, which may be possible to consider as dialects of a language. In fact, by Googling I see that people have written about language subsets in the context of Lisp, so full-circle I go.

Re:The software development final exam: Algorithms and Data ... by cperciva on Monday October 08, 2012 @08:17AM (#4626476)
You've only seen 1/4 of the exam so far. Sure, there's plenty of software development which doesn't involve fancy algorithms or data structures... avoiding computer architecture, operating systems, mathematics, networking, databases, and distributed systems as well is a bit harder.
Re:The software development final exam: Algorithms and Data ... by clinth on Monday October 08, 2012 @09:32AM (#4626739)
I see that you're the author. Thanks for replying!

> Sure, there's plenty of software development which doesn't involve fancy algorithms or data structures... avoiding computer architecture, operating systems, mathematics, networking, databases, and distributed systems as well is a bit harder.

This is at odds with the statement in your article that jumped out at me:

"If you can't answer the majority of the questions on these four papers, and you're working or intend to work as a software developer, you should ask yourself why--"

I disagree, and furthermore, adding more topics means that your assertion is going to be less accurate.

Of course, it's better to know more, and I'm glad to have a computer science degree. However, I think that conflating having a computer science background and general software development is confirmation bias. I don't have data to back me up, but I believe that it's more common to simply not need to know what a bipartite graph is, or even a majority set of these topics. Given the theoretical grounding of the question in your first block, I'm guessing that parts 2-4 will be similarly structured.

Computer science is one slice of software development. Software development is a huge, deep field. A software development exam could just as easily contain an exam including the following topics: communicating effectively through email, distilling requirements from customers, writing meaningful commit messages, testing theory, or hundreds of other non-theoretical topics.

What I'm trying to say is that your exam is a good reminder of computer science at the root of many of the fields of knowledge in software, and is fun, but it's not representative of software development. In a given year, most software developers are going to spend more time puzzling through garden-variety implementation bugs than thinking about any two of the questions you list. Which is why they're not "lucky". :)

Re:The software development final exam: Algorithms and Data ... by panda_person on Monday October 08, 2012 @10:09AM (#4626893)
Yeah, but they are really important to know for interviews. Which of course may or may not have anything to do with the actual life of a developer, but that's life.
Re:The software development final exam: Algorithms and Data ... by cunac on Monday October 08, 2012 @11:11PM (#4629748)
whenever prospective employer has this type of CS trivia questions I lose interest to work in that environment regardless if I know or don't know answers. It shows lack of maturity and experience to understand what are actually characteristics to look for to determine good developer. This type of questions might be useful for non experienced candidates but it is fairly counterproductive for experienced candidates
Re:The software development final exam: Algorithms and Data ... by kamaal on Tuesday October 09, 2012 @12:27AM (#4629958)
Last year I interviewed a BigCorp which was all about these interviews. The first guy clearly told me that the project was sort of stuck and they needed to sprint to make it happen.

The interview was 99% math. The people who asked me question looked all smart alecs and their questions all seemed to indicate that they wanted to show me how intelligent they are, and how stupid I am.

By the end of the interview it was clear to me why they were stuck. Those people had absolutely no interest in building things. It was all about individual One-upmanship, and showing their little math and puzzle tricks they would have gathered by combined reading on the internet over the years.

Re:The software development final exam: Algorithms and Data ... by peteretep on Monday October 08, 2012 @07:14AM (#4626318)
I guess it depends if you interpret:

> you should ask yourself why

As referring to "you can't answer the majority of the questions" or "you're working or intend to work as a software developer". I read it as the latter, but I guess it could also be read as the former.

Re:The software development final exam: Algorithms and Data ... by cperciva on Monday October 08, 2012 @07:20AM (#4626327)
The intention was "why don't you know these things", in the sense of "I really think you should go out and learn / re-learn these areas, because I think it's very likely that knowing them better will help you produce better code".
Re:The software development final exam: Algorithms and Data ... by pjmlp on Monday October 08, 2012 @01:25PM (#4627853)
It depends on the country.

My degree in Portugal was a 5 year degree with lectures from computer science and software engineering.