• (cs) in reply to Chemisor
    Chemisor:
    FredSaw:
    SQL skills are unimportant and lots of skilled developers don't have them.
    The job they advertised requires SQL experience, so if you don't have any, you shouldn't apply. I know I wouldn't.
    I know. My post was just a tongue-in-cheek echo of another guy's comments in an emotionally charged (for him) exchange several days back.
    Chemisor:
    I am a skilled programmer, but I have so far completely avoided (not entirely by choice) having any experience with databases. Having only read a few SQL books, I am bound to ask WTF questions like: "so, all those examples in the book have text output; does that mean I have to write a friggin parser for every query I do?", which will pretty much guarantee that I won't get the job. So why bother? I'll just look elsewhere.
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it. I have worked with DAO, RDO, ADO, ADO.Net, LLBLGen Pro, Access, SQL Server versions 6 through 2005, and Oracle versions 8 through 10. I even worked on an application once that accessed a FoxPro database, although that code was all already in place when I inherited the app. I've done everything from writing in-line SQL queries to designing and creating databases from scratch. All this I consider to be part of my job description as a developer.

    What is it that all you "skilled programmers having no experience with databases" are working on? What kind of code are you writing, that doesn't access a database? Games, or something?

  • (cs) in reply to DOA
    DOA:
    TBL1: Index,Question - All fields req. TBL2: Index,Answer,AssociatedQ(IndexfromTBL1), RightWrongFlag All fields req.
    Allows for more than one right answer.
  • (cs) in reply to FredSaw
    FredSaw:
    Chemisor:
    FredSaw:
    SQL skills are unimportant and lots of skilled developers don't have them.
    The job they advertised requires SQL experience, so if you don't have any, you shouldn't apply. I know I wouldn't.
    I know. My post was just a tongue-in-cheek echo of another guy's comments in an emotionally charged (for him) exchange several days back.
    Chemisor:
    I am a skilled programmer, but I have so far completely avoided (not entirely by choice) having any experience with databases. Having only read a few SQL books, I am bound to ask WTF questions like: "so, all those examples in the book have text output; does that mean I have to write a friggin parser for every query I do?", which will pretty much guarantee that I won't get the job. So why bother? I'll just look elsewhere.
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it. I have worked with DAO, RDO, ADO, ADO.Net, LLBLGen Pro, Access, SQL Server versions 6 through 2005, and Oracle versions 8 through 10. I even worked on an application once that accessed a FoxPro database, although that code was all already in place when I inherited the app. I've done everything from writing in-line SQL queries to designing and creating databases from scratch. All this I consider to be part of my job description as a developer.

    What is it that all you "skilled programmers having no experience with databases" are working on? What kind of code are you writing, that doesn't access a database? Games, or something?

    I suppose that could depend on the size of the organization. I tend to work for larger places, and the "department" usually consists of 2-3 gui people, 2-3 server people, 1 lead-dev/architect, 1-2 DB developers, 1 DBA shared amongst departments, separate QA, and so forth. The GUI folks tend to use the wrappers for communication and DB access provided by the other sub-teams.

    Our GUI developers know SQL, but I wouldn't think of turning them loose without some of the back-end folks checking it. Conversely, I'm a back-end person, and have written my share of GUIs, but I can't design, let alone draw/render something that looks even remotely professional. Also, I can muddle my way through fairly complex queries, but routinely go to one of our DB folks and ask them to redo my queries to make them better.

    Context is everything.

  • Todd (unregistered) in reply to FredSaw
    FredSaw:
    Chemisor:
    FredSaw:
    SQL skills are unimportant and lots of skilled developers don't have them.
    The job they advertised requires SQL experience, so if you don't have any, you shouldn't apply. I know I wouldn't.
    I know. My post was just a tongue-in-cheek echo of another guy's comments in an emotionally charged (for him) exchange several days back.
    Chemisor:
    I am a skilled programmer, but I have so far completely avoided (not entirely by choice) having any experience with databases. Having only read a few SQL books, I am bound to ask WTF questions like: "so, all those examples in the book have text output; does that mean I have to write a friggin parser for every query I do?", which will pretty much guarantee that I won't get the job. So why bother? I'll just look elsewhere.
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it. I have worked with DAO, RDO, ADO, ADO.Net, LLBLGen Pro, Access, SQL Server versions 6 through 2005, and Oracle versions 8 through 10. I even worked on an application once that accessed a FoxPro database, although that code was all already in place when I inherited the app. I've done everything from writing in-line SQL queries to designing and creating databases from scratch. All this I consider to be part of my job description as a developer.

    What is it that all you "skilled programmers having no experience with databases" are working on? What kind of code are you writing, that doesn't access a database? Games, or something?

    Really big government projects that will never get finished and each person can only work on one tiny part of it.

  • (cs) in reply to FredSaw
    FredSaw:
    DOA:
    TBL1: Index,Question - All fields req. TBL2: Index,Answer,AssociatedQ(IndexfromTBL1), RightWrongFlag All fields req.
    Allows for more than one right answer.
    Isn't that what constraints are for?
  • Todd (unregistered) in reply to snoofle
    snoofle:
    FredSaw:
    Chemisor:
    FredSaw:
    SQL skills are unimportant and lots of skilled developers don't have them.
    The job they advertised requires SQL experience, so if you don't have any, you shouldn't apply. I know I wouldn't.
    I know. My post was just a tongue-in-cheek echo of another guy's comments in an emotionally charged (for him) exchange several days back.
    Chemisor:
    I am a skilled programmer, but I have so far completely avoided (not entirely by choice) having any experience with databases. Having only read a few SQL books, I am bound to ask WTF questions like: "so, all those examples in the book have text output; does that mean I have to write a friggin parser for every query I do?", which will pretty much guarantee that I won't get the job. So why bother? I'll just look elsewhere.
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it. I have worked with DAO, RDO, ADO, ADO.Net, LLBLGen Pro, Access, SQL Server versions 6 through 2005, and Oracle versions 8 through 10. I even worked on an application once that accessed a FoxPro database, although that code was all already in place when I inherited the app. I've done everything from writing in-line SQL queries to designing and creating databases from scratch. All this I consider to be part of my job description as a developer.

    What is it that all you "skilled programmers having no experience with databases" are working on? What kind of code are you writing, that doesn't access a database? Games, or something?

    I suppose that could depend on the size of the organization. I tend to work for larger places, and the "department" usually consists of 2-3 gui people, 2-3 server people, 1 lead-dev/architect, 1-2 DB developers, 1 DBA shared amongst departments, separate QA, and so forth. The GUI folks tend to use the wrappers for communication and DB access provided by the other sub-teams.

    Our GUI developers know SQL, but I wouldn't think of turning them loose without some of the back-end folks checking it. Conversely, I'm a back-end person, and have written my share of GUIs, but I can't design, let alone draw/render something that looks even remotely professional. Also, I can muddle my way through fairly complex queries, but routinely go to one of our DB folks and ask them to redo my queries to make them better.

    Context is everything.

    The funny thing is one good developer could do all those people's jobs quicker because of all the time wasted in arguing and communicating what needs to be done.

  • jimi (unregistered) in reply to zeke

    The real WTF here is that some jackass agreed to interview a 20 year old (probably not even graduated from college yet)

    And zeke, in response to this:

    zeke:
    More importantly, was she cute?
    Please review the following: xkcd
  • (cs) in reply to snoofle
    snoofle:
    FredSaw:
    DOA:
    TBL1: Index,Question - All fields req. TBL2: Index,Answer,AssociatedQ(IndexfromTBL1), RightWrongFlag All fields req.
    Allows for more than one right answer.
    Isn't that what constraints are for?
    Tell me how you see that working.
  • (cs) in reply to FredSaw
    FredSaw:
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it. What is it that all you "skilled programmers having no experience with databases" are working on? What kind of code are you writing, that doesn't access a database? Games, or something?

    Try office applications. A word processor has no reason to talk to a database (except for mail merges, which is not my problem). I did write a data collecting program once, about ten years ago. It did not use a database because it was intended as a consumer product, so it just saved the data in a file. It did have to talk to a server to share the data, but the server was also something I wrote myself, and it worked more like rsync than a database.

    Even now when I have data, I am far more likely to just design a file format for it and stick to it than use a database. I want to make software for regular people, to use on their personal computers, and regular people don't have a database server running. They have no interest in administering it or in transaction safety (since they are the only ones using it), and would have trouble understanding why data has to be stored in some central location and in a whole directory instead of a single file. Frankly, I have trouble understanding that myself. I am sure there are good reasons for it, I just don't know what they are.

    The reason there is so much database use is that most applications are developed for business use; inventory control and the like, where databases are a perfect fit. I find it troubling that there aren't more consumer programs that let people use the computer for something other than games. Other than Microsoft Office and a web browser (and games, of course) there is almost nothing out there.

  • jimi (unregistered) in reply to jimi

    I didn't finish my thought... what I meant to say was that interviewing a newbie programmer (obviously she seems a bit below average even for a newb, but that could have been nerves) for a position that obviously requires some experience is the WTF. Probably some headhunter firm firing resumes at this company and hoping something sticks.

  • Robert S. Robbins (unregistered) in reply to SomeCoder

    I've never know anyone to hire a architect or a DBA. Designing the database is almost always left to the developer. For that matter, the developer is often required to know Photoshop and create the company's web site design. I've even been asked to do marketing because SEO is too technical for anyone but the developer.

  • (cs) in reply to Chemisor
    Chemisor:
    Try office applications. A word processor has no reason to talk to a database (except for mail merges, which is not my problem).
    I never mess with Office programming these days, but I have in the past. Excel worksheet, accessing a database in the VBA code and displaying the data, filtered according to dropdown listboxes of criteria.
  • AdT (unregistered) in reply to Saladin
    Saladin:
    I was going to say something about how "we just want to see how well you think outside the box" is the real WTF here, but someone beat me to it.

    You beat me to saying that someone beat me to it. This is classical inside the box thinking. What's wrong with that, anyway? No one can think outside the box all of the time unless maybe (s)he's a lunatic. Sometimes the simple and well-tested solution happens to be the best, so: Think inside the box!

  • BitTwiddler (unregistered) in reply to DOA
    DOA:
    I'm not exactly a DBA so out of curiosity, how would the following compare with the above?

    TBL1: Index,Question - All fields req. TBL2: Index,Answer,AssociatedQ(IndexfromTBL1), RightWrongFlag All fields req.

    The problem is that there's no standard DB-centric way to prevent two or more flags from being set to "right" at the same time.

    Yes, you could do it with triggers or stored procedures, but those are hardly standard (the concept is, but not the implementation) and they aren't really part of the data model per se anyway.

  • Khanmots (unregistered) in reply to FredSaw
    FredSaw:
    What is it that all you "skilled programmers having no experience with databases" are working on? What kind of code are you writing, that doesn't access a database? Games, or something?

    Applications that are based around storing/retrieving large amounts of information are only one set. There's a lot of other types out there.

    Consider the majority of embedded applications for instance...

  • nobody (unregistered) in reply to FredSaw
    FredSaw:
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it.

    Ugh! I studied CS because I find things like games, 3d graphics, artificial intelligence, compilers, and operating systems interesting. It totally sucks that, after I graduated, I am just now finding out that 99% of software development jobs is just an enterprisy - "collect data, filter it, organize it, display it" business. I should have just stayed at uni.

  • AdT (unregistered) in reply to Todd
    Todd:
    Really big government projects that will never get finished and each person can only work on one tiny part of it.

    Let me guess... the reason that they never get finished is that people are trying to reinvent a DBMS so they don't have to use any of the existing, well-tested implementations?

    Chemisor:
    I want to make software for regular people, to use on their personal computers, and regular people don't have a database server running.

    Bogus reason #1: Embeddable DBMSes like Berkely or Firebird do not require a database server.

    Chemisor:
    and would have trouble understanding why data has to be stored in some central location and in a whole directory instead of a single file. Frankly, I have trouble understanding that myself.

    Bogus reason #2: When using embedded Firebird, for example, you can put the entire database in one file.

    I used embedded Firebird with the ADO.NET provider for a program that generated single file databases (and one to access them). It was a snap. Designing my own filesystem and the necessary access routines would have been a lot more trouble.

  • (cs) in reply to nobody
    nobody:
    Ugh! I studied CS because I find things like games, 3d graphics, artificial intelligence, compilers, and operating systems interesting. It totally sucks that, after I graduated, I am just now finding out that 99% of software development jobs is just an enterprisy - "collect data, filter it, organize it, display it" business. I should have just stayed at uni.
    LOL! You make it sound like you were interested in hotrods, so you became an auto mechanic, only to discover that you would always have grime under your fingernails.

    Can't you find a position with a games or 3D or AI company? I haven't tried, but I had the impression there were plenty of them out there.

  • (cs) in reply to Chemisor
    Chemisor:
    Tammy:
    So exactly how would any of you have answered this question?

    First I'd like to know about the purpose of the application. Is it to expeditiously approve time-off requests, or to deny them through an enterprisey solution that gives appearances of activity while bogging down each request in an impassable quagmire of bureaucratic procedures.

    If the former, I'd recommend changing their business methods to avoid so much micromanagement. Let each supervisor decide on his immediate subordinates' time off requests. Then all that each of them would have to do is stop by his office and ask. It's efficient, free, and is what every sane person would do anyway.

    In the latter case there would be some serious design issues. First we must ensure that the time-off requests can be aggregated at each level into a compact report, stating total time off, total workers on time off, and productivity loss estimates. When the CEO gets approval requests one by one, he will probably sign them. If he can see the enormous numbers calculated above, which get even larger if you can include yearly projections, his pointy hair will turn white and all requests will be summarily denied.

    Second, a show of activity is needed. Modern computers are just too darn efficient, so delay fields must be introduced. For example, on the pretext of reducing managers' workload, all requests should be reviewed in bulk on a particular day of the month. Some code will also be needed to optimize the scheduling of this day for each level of management to maximize the time in the queue. Additionally, it is prudent to require supervisor approval for denials as well as approvals. This ensures that each requests goes all the way to the top.

    To track all this activity and to placate the grumbling workers, each time off request should generate a daily progress report email to the submitter. Something like "Your dedication to this company is very important to us. Blah blah blah. Your request is being processed by our highly competent computers. Requests will be processed in the order received. Your current place in the queue is 43777381928349. The approval level on your request is 445 of 12378758. Have a nice and productive day!"

    A weekly time off status report should be generated for each manager, with summary totals, yearly projections, cost estimates, etc. The report should include a detailed powerpoint presentation, bulleting each important point, displaying historical data in graphs, and calculating a manager's "approval rating" by dividing the number of denials issued by the number of approvals issued. (No pressure should be applied to increase one's rating. That would ruin the game, and besides, they'll do it anyway)

    I bow deeply to your superior cynicism.
  • (cs) in reply to Adam
    Adam:
    I've had this happen to me before.

    A guy comes in, talks with my boss for a while then he sends myself and a coworker in. We ask him about his resume for a while then tell him we're about to ask some technical questions.

    Him: "I wasn't told there would be any technical questions." Me: "Oh, sorry. [pause] Well, that's what we're here for. Do you have to be somewhere?" Him: "No" Me: "Okay then, how about we get into some technical questions then?" Him: "I wasn't prepared for technical questions? I didn't know there would be any." Me: "It's okay, they're not that difficult, just some basic ones that your resume says you should be able to answer." Him: [annoyed look]

    I once gave the technical part of a phone interview with me and a coworker on our side, and the candidate on speakerphone. The candidate had just got his masters in computer science so we asked questions related to his school work. After trying to tease out any detail at all, the straw that broke the camel's back was this:

    arty:
    What did you do in your digital signal processing course?
    Candidate:
    Process ... Digital ... Signals?

    At that point, my coworker wisely muted the phone cause we were both losing it.

  • MrB (unregistered) in reply to BitTwiddler
    BitTwiddler:
    Here's a good question for testing SQL skillz:

    Imagine that a professor needs to store a set of multiple-choice test questions, with a suite of answers for each question, exactly one of which is right. However, the programmers building this app are incredibly bad, so you want to protect the database as much as possible from bad data (two 'right' answers, no 'right' answers, answers without questions, etc), by using indices, RI, etc. Note that students' answers need not be stored; only the questions and set of potential answers.

    Propose a set of tables/indices/RI to store this data. Are there any 'holes' in your solution? What other possible solutions did you consider, and why did you discard them?


    I encourage all you non-WTF people to give this a try - it's not nearly as trivial as it seems to close all the holes, and even when you do, the solution is right on the borderline between very elegant vs a horrible hack.

    DAMN YOU!!! Reading this and looking at some of the answers made me think : "Yes, but would that allow them to generate SCORM compliant output compatible with the latest IMS Question and Test Specifications"?

    Yes, I am a dably babbaged individual.

  • MrB (unregistered) in reply to MrB

    Oh and PS : I'd actually answer that the use of a database is probably inappropriate and you should really use one of the multitude of SCORM compliant quiz generators so that this stuff could go in the profs LMS.

    That said, you've now got me wondering if I can do this with a DTD or whether I'd need to use XSD/Relax NG.... :/

  • Kuba (unregistered) in reply to Chemisor
    Chemisor:
    Even now when I have data, I am far more likely to just design a file format for it and stick to it than use a database. I want to make software for regular people, to use on their personal computers, and regular people don't have a database server running.

    You seem to conveniently ignore existence of embedded databases (say SQLite). The "regular people" argument doesn't hold any water - I have one shipping application used by "regular people" and it uses an SQLite database. It made things much easier - it originally used a text file to store the data. The file had to be read each time on startup, the parser had to be maintained, etc. The database reduced the code size by 2-3klocs and made the code more robust too.

    They have no interest in administering it or in transaction safety (since they are the only ones using it)

    Yeah, because computers never crash, and you never ever have to Undo anything.

    and would have trouble understanding why data has to be stored in some central location and in a whole directory instead of a single file.

    A good embedded database will use a single file.

    Frankly, I have trouble understanding that myself. I am sure there are good reasons for it, I just don't know what they are.
    1. Don't reinvent the wheel.
    2. Don't reinvent the wheel.
    3. Um, don't reinvent the wheel?

    Somebody has spent tons of time debugging the database. At the time I abandoned the plain-text file, the parser still had known bugs which had no easy workarounds (luckily they didn't affect any users).

    The reason there is so much database use is that most applications are developed for business use; inventory control and the like, where databases are a perfect fit.

    How's that different from managing an address book, a list of software packages, or a list of files in software packages? SQLite databases are routinely used in Linux package distribution via yum - the software downloads bzipped sqlite file, and can then do very efficient queries on dependencies, files, etc.

    I find it troubling that there aren't more consumer programs that let people use the computer for something other than games. Other than Microsoft Office and a web browser (and games, of course) there is almost nothing out there.

    What hole do you live in??

    "Consumers" routinely use software like photo editing and media managment/editing in general, even computation (students!). Just two examples in non-business setting. Go to local computer store (that's not BestBuy to you) and see what software is on the shelves. Games are <50%.

    Cheers!

  • Dale (unregistered) in reply to nobody
    nobody:
    FredSaw:
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it.

    Ugh! I studied CS because I find things like games, 3d graphics, artificial intelligence, compilers, and operating systems interesting. It totally sucks that, after I graduated, I am just now finding out that 99% of software development jobs is just an enterprisy - "collect data, filter it, organize it, display it" business. I should have just stayed at uni.

    This is why I tell CS students to take the time to learn and understand databases and SQL. This immediately gives them the upper hand in the competition for entry level development jobs. I'm still surprised at how little education about databases there is at the undergrad level.

  • (cs) in reply to AdT
    AdT:
    Let me guess... the reason that they never get finished is that people are trying to reinvent a DBMS so they don't have to use any of the existing, well-tested implementations?

    You mean "existing, godawfully bloated, poorly designed, and hard to use with C++" implementations? I agree that MySQL certainly has a place, but not for everything. A typical desktop application does not need all those fancy features a database provides, making them little more than bloat and inconvenience. For example, a typical desktop application will have the following differences:

    1. Single user access. Nobody messes with your data but you, and nobody connects to it while you are working on it. This makes concurrency control unnecessary, scalability pointless, and transaction control useless.

    2. Small data set. Regular people are not Fortune 500 companies and don't have terabytes of data. Most data sets are a few megabytes in size, if that. This means that all those painstaking query optimizations will not help much.

    3. Offline. Most people don't have broadband at home. If your database server is inaccessible, the app is unusable, which is very very bad. A git-like full clone solution is a far better choice for distributed data sets in this scenario.

    4. Run their own backups. When I want to back up a file, I want to back up a file, not a goddamn directory in some cryptically named location. I might even want to attach it to an email. Remember, small data sets!

    5.Don't have a DBA degree. And consequently not willing to spend time on weird administration tasks that require connecting to a shell-like SQL interface. (Or at least that's what all the tutorials I've read do. What's with the goddamn text, people? This isn't 1976; we have GUIs these days! Or are you too cheap to make one?)

    1. Goddamned text. Text-mode operations require parsers to convert to and from text data. Parsers are hard to write correctly.

    IMHO, MySQL is simply not a good idea in this situation. It's the wrong tool for this job.

    AdT:
    Chemisor:
    I want to make software for regular people, to use on their personal computers, and regular people don't have a database server running.
    Bogus reason #1: Embeddable DBMSes like Berkely or Firebird do not require a database server.

    True, but they don't provide any benefits over the simple dump-my-data-and-index solution. They are actually worse, since they have C interfaces, which will defile your pure C++ design. There is NO excuse for using plain C interfaces these days. Good design requires structure, and C can't provide any.

    AdT:
    Chemisor:
    and would have trouble understanding why data has to be stored in some central location and in a whole directory instead of a single file. Frankly, I have trouble understanding that myself.

    Bogus reason #2: When using embedded Firebird, for example, you can put the entire database in one file.

    It's not a bogus reason if I haven't heard of some obscure package that allows one-file operation. Most other programmers will not have heard of it either.
    AdT:
    I used embedded Firebird with the ADO.NET provider for a program that generated single file databases (and one to access them). It was a snap. Designing my own filesystem and the necessary access routines would have been a lot more trouble.

    In a single user scenario you don't need a filesystem. You just write your data as you have it in memory, in an vector or something, into a file. Writing serialization routines is not that hard. If you care about memory usage, you might implement a sliding window backend, which isn't very hard either, but in most cases you don't need one.

    Once again, I am not disputing the need for MySQL in a huge company with terabytes of data. There you have concurrency issues, scalability issues, security problems, query performance, and all that. However, for an end-user application this is all unnecessary.

  • (cs) in reply to FredSaw
    FredSaw:
    snoofle:
    FredSaw:
    DOA:
    TBL1: Index,Question - All fields req. TBL2: Index,Answer,AssociatedQ(IndexfromTBL1), RightWrongFlag All fields req.
    Allows for more than one right answer.
    Isn't that what constraints are for?
    Tell me how you see that working.
    proc: q+correct ans must be inserted together, neither can be null constraint on insert of incorrect ans: referenced Q must exist procs that change the date (eg: prof entered wrong answer as correct) need to validate one correct answer and remainder incorrect, and valid referenced Q

    The point is while there's more than one way to skin a cat, as long as you are consistent within your chosen method, and don't start with a live cat, you have a chance of success.

    Aside: on interviews, sometimes a nervous (but competant) person might blank out on an otherwise reasonably simple question, if it catches them off guard. Honestly, when was the last time someone came up to you at work and said "design xxx and give me a working model in the next 2 minutes"?

  • Jim (unregistered) in reply to Gedoon

    VB? How is that enterprisy?

  • Vryk (unregistered) in reply to DOA

    It allows for more than one correct answer per question as well as no correct answers.

  • (cs) in reply to snoofle
    snoofle:
    proc: q+correct ans must be inserted together, neither can be null constraint on insert of incorrect ans: referenced Q must exist procs that change the date (eg: prof entered wrong answer as correct) need to validate one correct answer and remainder incorrect, and valid referenced Q
    You would prefer to write a stored procedure to validate everything, rather than use referential integrity?
  • (cs) in reply to Kuba
    Kuba:
    You seem to conveniently ignore existence of embedded databases (say SQLite).
    I am not ignoring them. I simply find them unnecessary.
    Kuba:
    Yeah, because computers never crash, and you never ever have to Undo anything.

    Most user applications don't support undo over a restart. I don't see that as a limitation. And as for handling crashes, the most common way is to write out a temp file and then move it over the original. Regular people don't have terabytes of data and this temporary waste of space is not an issue.

    Kuba:
    1. Don't reinvent the wheel. 2. Don't reinvent the wheel. 3. Um, don't reinvent the wheel?

    Somebody has spent tons of time debugging the database. At the time I abandoned the plain-text file, the parser still had known bugs which had no easy workarounds (luckily they didn't affect any users).

    1. Don't use goddamn text formats. 2. Don't use goddamn text formats. 3. Sometimes you need to reinvent the wheel because you are making a bicycle instead of a race car.
    Kuba:
    How's that different from managing an address book, a list of software packages, or a list of files in software packages?

    The data set is small, so you don't need fancy features. Yes, of course you can use SQLite, but you can also use a sledgehammer to drive in nails.

    Kuba:
    "Consumers" routinely use software like photo editing and media managment/editing in general, even computation (students!). Just two examples in non-business setting. Go to local computer store (that's not BestBuy to you) and see what software is on the shelves. Games are <50%.
    Yes, do go. And then count the ones that are actually new. Most have been around since the 90s and are simply being maintained with pointless improvements. IMO, most of these new versions are much worse than the old ones. For example, I prefer Microsoft Photo Editor to Photoshop. I also can't use the current financial software due to the goddamn "web look" with razor-to-the-eye unchangeable white backgrounds. And where is my Norton Utilities? Or a decent defragmenter that can compact that FAT32 partition I have to keep to share files with Linux? Or a word processor where I can permanently get rid of that stupid WYSIWYG lets-show-the-user-a-page-like-paper look? Or a music player that doesn't try to look like a physical stereo, faking perfectly good system controls with pseudo-knobs and buttons? Such garbage!
  • Anonymous (unregistered) in reply to Walleye
    Walleye:
    sir_flexalot:
    I would've just kept asking questions about the first mentioned item, i.e. "what's the constant for", etc. and go until they just admit they don't know what's going on.

    What would be the point of that? It's obvious that she is not qualified for the job and she's not going to get it, what do you gain by humiliating her. Do you also like to pull the wings of flies?

    How do you know that?

    Isn't this an infinite loop, since bApprove is a constant?
    *gasp*
  • Uber (unregistered) in reply to me
    me:
    Tammy:
    So exactly how would any of you have answered this question?
    Mary? Is that you?

    Little late don't you think?

    Anyway, as they told her, you don't need to give an explicit answer, just start a process of problem resolution with them, ask questions and design on responses, maybe even them don't know what they're asking since this is supposed to be a hypothetical question.

    Do some pseudo-uml drawings, some pseudo-code and give an enterprisy answer... am I hired?

  • Anonymous (unregistered)
    Or a decent defragmenter that can compact that FAT32 partition I have to keep to share files with Linux?
    NTFS-3G, anyone?
  • Joe (unregistered) in reply to Robert S. Robbins
    Robert S. Robbins:
    I've never know anyone to hire a architect or a DBA. Designing the database is almost always left to the developer. For that matter, the developer is often required to know Photoshop and create the company's web site design. I've even been asked to do marketing because SEO is too technical for anyone but the developer.

    Or my personal favorite

    Idiot: You're good with computers. Right? Me: I'm a DBA and a software developer. Idiot: Great! So that means you know how to use Photoshop. Hey, I need you to design a cool looking poster for my department's product launch party. Me: How is it you manage to earn a paycheck at this place?

  • (cs) in reply to FredSaw
    FredSaw:
    DOA:
    TBL1: Index,Question - All fields req. TBL2: Index,Answer,AssociatedQ(IndexfromTBL1), RightWrongFlag All fields req.
    Allows for more than one right answer.

    Look at the bright side... if the professor doesn't pay you, you can hack the app, switch all the answers to false and watch the students organize a lynch mob.

  • Fdo G (unregistered) in reply to DOA

    Im not a DBA either, not even CS grad yet. But here's my attempt (they hammered me with 3NF, so bear with me :p)

    TBL 1: Index (Auto Increment, Unique) |Question (Unique) - All fields req.

    TBL 2: Index (Auto Incr, Unique), AssociateQ (Unique, Asociated to the index of the corresponding question), Right Answer - All fields req.

    TBL 3: Index (Auto Incr, Unique), AssociateQ (Asociated to the index of the corresponding question), Wrong Answer - All fields req.

    It allows for only one right answer in the right answers table, yet any number of wrong answers in Table 3.

  • (cs) in reply to Anonymous
    Anonymous:
    Or a decent defragmenter that can compact that FAT32 partition I have to keep to share files with Linux?
    NTFS-3G, anyone?
    Sorry, I don't want to mess with FUSE. A FAT32 partition is still simpler.
  • (cs) in reply to Fdo G
    Fdo G:
    Im not a DBA either, not even CS grad yet. But here's my attempt (they hammered me with 3NF, so bear with me :p)

    TBL 1: Index (Auto Increment, Unique) |Question (Unique) - All fields req.

    TBL 2: Index (Auto Incr, Unique), AssociateQ (Unique, Asociated to the index of the corresponding question), Right Answer - All fields req.

    TBL 3: Index (Auto Incr, Unique), AssociateQ (Asociated to the index of the corresponding question), Wrong Answer - All fields req.

    It allows for only one right answer in the right answers table, yet any number of wrong answers in Table 3.

    If you had a one-to-many relationship between Question and RightAnswer, then a second table would be justified. Since there can be only one RightAnswer, it's pointless to put it in its own table. Make it a field in TBL 1 instead.

  • welcor (unregistered) in reply to Fdo G
    Fdo G:
    Im not a DBA either, not even CS grad yet. But here's my attempt (they hammered me with 3NF, so bear with me :p)

    TBL 1: Index (Auto Increment, Unique) |Question (Unique) - All fields req.

    TBL 2: Index (Auto Incr, Unique), AssociateQ (Unique, Asociated to the index of the corresponding question), Right Answer - All fields req.

    TBL 3: Index (Auto Incr, Unique), AssociateQ (Asociated to the index of the corresponding question), Wrong Answer - All fields req.

    It allows for only one right answer in the right answers table, yet any number of wrong answers in Table 3.

    Yes, but you could risk having no right answers at all. You need that correct answer in the same table as the question.

  • (cs) in reply to Fdo G
    Fdo G:
    Im not a DBA either, not even CS grad yet. But here's my attempt (they hammered me with 3NF, so bear with me :p)

    TBL 1: Index (Auto Increment, Unique) |Question (Unique) - All fields req.

    TBL 2: Index (Auto Incr, Unique), AssociateQ (Unique, Asociated to the index of the corresponding question), Right Answer - All fields req.

    TBL 3: Index (Auto Incr, Unique), AssociateQ (Asociated to the index of the corresponding question), Wrong Answer - All fields req.

    It allows for only one right answer in the right answers table, yet any number of wrong answers in Table 3.

    I'd say you passed this.

    While others may say you now need three fields to hold one field of data (right answer) as opposed to the previous answer using only two tables with the right answer listed in the question table, your solution allows for future changes to be easily made when the inevitable scope change happens to allow for more than one right answer.

    Your solution does lead itself to questions without answers though. The previous allowed questions with no wrong ones listed but you always need a right one. Issues like these are best addressed in the business logic in certain systems and not at the DB level.

    Sometimes thinking about the future leads you nearly back to the "in the box" solution because of scalability or ease of maintenance.

  • (cs)

    I think she came to see us afterwards...

    We went through a mass interview process a few months ago for a total of 6 people. There are some REAL interesting candidates on the market - people that have spent WAY too much time adding buzzwords to their rezzy.

    Sigh...

  • Joe (unregistered) in reply to Dale
    Dale:
    nobody:
    FredSaw:
    See, that's what I don't get. From the moment I entered the professional IT world I have been required to access data. That's what we do; we collect data, filter it, organize it, display it.

    Ugh! I studied CS because I find things like games, 3d graphics, artificial intelligence, compilers, and operating systems interesting. It totally sucks that, after I graduated, I am just now finding out that 99% of software development jobs is just an enterprisy - "collect data, filter it, organize it, display it" business. I should have just stayed at uni.

    This is why I tell CS students to take the time to learn and understand databases and SQL. This immediately gives them the upper hand in the competition for entry level development jobs. I'm still surprised at how little education about databases there is at the undergrad level.

    At my university as an undergrad, the professors were too busy having an orgy with their algorithms analysis to tell us of the real world importance of such things. Professors teaching CS are focusing on things like teaching the Church-Turing thesis. Fine. But to get a job after getting the degree, we'll need to know something else.

    Towards the end of my schooling I noticed there were lots of local businesses trying to hire CS students to build them some custom database apps to handle simple things specific to their business. At that time I knew Access enough to build the databases and the front ends. That alone was more meaningful to my wallet than the Pumping Lemma.

    You need to know both the CS type fundamentals as well as some practical skills to pay the bills. If only professors reminded their students of that. Then again, none of what I get paid for I learned specifically at school. It gave me the fundamentals, but the specific languages and whatnot were all self taught.

  • Patrick (unregistered) in reply to Grovesy

    The sad thing is both have their appropriate uses, but knowing where and when to appropriately apply them is lost on most people.

  • (cs)
    Alex:
    Don't forget to submit your own interview story, from either side of the table.

    If Microsoft ever bothers to respond to all the resumes I've sent them, I might get a few stories to submit. I don't get it... the job I'm applied for is practically the exact same thing as my last job, so my resume should at least merit a phone screening.

    I think I pissed off one of their recruiters when I was in college. They're not the vengeful sort of company that blacklists people for trivial stuff from years ago, are they?

  • Rick (unregistered)

    If you used a Multivalue database, you could so it all in one table. LDAP db could do the same thing.

  • (cs) in reply to FredSaw
    FredSaw:
    snoofle:
    proc: q+correct ans must be inserted together, neither can be null constraint on insert of incorrect ans: referenced Q must exist procs that change the date (eg: prof entered wrong answer as correct) need to validate one correct answer and remainder incorrect, and valid referenced Q
    You would prefer to write a stored procedure to validate everything, rather than use referential integrity?

    While referential integrity is probably best implemented at lower levels, stored procs can be used for that purpose. Is it ideal? No. Is it best? No. However, when interviewing, folks don't always come up with the best solution off the top of their head. IMHO, I find you get a better read of someone's abilities if you see how they think it through, rather than focusing on the quality (within reason) of their solution. Remember, you have asked this question before and have had the opportunity to think it through; the candidate is likely hearing it for the first time.

  • Andy (unregistered) in reply to Chemisor
    Chemisor:
    (snip)

    Or a decent defragmenter that can compact that FAT32 partition I have to keep to share files with Linux?

    (snip)

    There is a very good solution for that: http://www.fs-driver.org/

  • (cs) in reply to Andy
    Andy:
    Chemisor:
    (snip)

    Or a decent defragmenter that can compact that FAT32 partition I have to keep to share files with Linux?

    (snip)

    There is a very good solution for that: http://www.fs-driver.org/

    According to the FAQ, that driver does not support access rights, which means that any application will be able to write anywhere in my Linux fs tree. That is unacceptable. I don't trust Windows applications and mostly just boot there to play games, fill in pdfs (as in tax forms), run uTorrent, and perform other sundry tasks that Linux doesn't do yet. Anything shared between the two must be isolated and totally non-critical.

  • Anon (unregistered) in reply to FredSaw

    Used to work on machine vision: math, no databases.

    Used to work on physical simulations: math, no databases.

    Work on 3D modelling software now: math, no databases.

  • Gilhad (unregistered) in reply to Tammy
    Tammy:
    So exactly how would any of you have answered this question?
    Well, I would start with the obvious: It would need a table for such requests. This table needs unique autoincrementing id (as each employee can have more then one request, and also it is generally good idea). Next the table will need employee_id, which wil be pointer to another table, where are stored employee nationals. This also serve as pointer to employee_chef table, which holds structure tree of the company relations. Then there will be two dates - one for start and other for end time. Field for comments (or pointer to another table, depending on analyse). Maybe two of them - the original request and the request for change / confirmation. Also flag of the state of request (created, accepted, rejected, returned, climbing_up_the_tree). Or maybe two flags - active and state, so filtering will be easier. And one mor pointer to employees, who is just now responsible for doing something with it (chef, his chef, worker ...) This is very simple schema, but better analise could show more point, which depends on other company databases/tables/systems. Also is possible to do some logging or tracing or versioning, if needed by company for evidence (as big companies tends to) ....

    So I will continue in this style, until they stop me, or have some questions ....

    Remember - it is not so, that you have to write this application from scratch to the end on interview ... this is, that you should prove, that you know how to do such things ... they probabelly do not need such app at all and maybe they have only one boss and request are made simply by asking, but this is example problem and solution is to start solving it ... nothing more ...

Leave a comment on “The Case of the Clueless Candidate”

Log In or post as a guest

Replying to comment #169509:

« Return to Article