# Visual basic 6.0 Certification/Salary?

**URL:** <https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918>\
**Category:** Factual Questions\
**Created:** [July 18, 2000, 12:40am UTC](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918 "2000-07-18T00:40:41Z")\
**Posts on this page:** 5\
**Page:** 2

<div class="post-metadata">

**Author:** ![bda](https://avatars.discourse-cdn.com/v4/letter/b/5e9695/32.png) [@bda](https://boards.straightdope.com/u/bda)\
**Post date:** [July 19, 2000, 12:53am UTC](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918/21 "2000-07-19T00:53:11Z")

</div>

ajuna . . do you pretty much agree with sam stones advice?

---

<div class="post-metadata">

**Author:** ![Arjuna34](https://avatars.discourse-cdn.com/v4/letter/a/eb8c5e/32.png) [@Arjuna34](https://boards.straightdope.com/u/Arjuna34)\
**Post date:** [July 19, 2000, 3:38am UTC](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918/22 "2000-07-19T03:38:04Z")

</div>

> [@](#):
>
> \*Originally posted by bda \*  
> \*\*ajuna . . do you pretty much agree with sam stones advice? \*\*

Yes, if you can do it. His learning advice is good, but would be hard to do without going to school and getting a computer science degree (which would be an excellent way to start, but may not be practical in your case). If you can find an experienced programmer willing to spend a lot of time with you, you could learn a great deal. I’m not sure of what you end up learning in a “certification” course- I’ve never taken one, or seen much about them. I’d bet that you’d be better off taking a night class(es) at a university and learing VB or VC++ syntax, etc. on your own.

Arjuna34

---

<div class="post-metadata">

**Author:** ![zero](https://avatars.discourse-cdn.com/v4/letter/z/a88e57/32.png) [@zero](https://boards.straightdope.com/u/zero)\
**Post date:** [July 19, 2000, 4:25pm UTC](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918/23 "2000-07-19T16:25:47Z")

</div>

> [@](#):
>
> \*Originally posted by Sam Stone \*  
> \*\*Don’t think you are programmer just because you’ve passed the Microsoft certification course in VB, VC++, or whatever. There’s a reason why people go to university for four years to become programmers - there is a LOT to learn.
> 
> Here is a list of questions I came up with for an initial screening interview for programmer applicants. If you can’t answer these, you don’t even get to show me your certifications, because I’m not taking the interview any farther.  
> \*\*

I think the following are bad examples of interview questions because they rely on knowledge of semantics rather than understanding the element’s context or usefulness. Okay, one may argue that definitions are useful for communicating ideas, but I, being a professional software developer, rarely encounter any of these terms (with the exception of thread) at work. More often people talk about interactions among different subsystems, or the design as a whole. Actually I discuss design patterns more often than any of these low-level CS terms. And have fun trying to find a graduate with a BS in CS who knows what an Observer is or even how to read a UML diagram.

My point is that the smart people will be able to come up with the concepts on their own without regurgitating a CS textbook. Some of these terms below are common sense.

> [@](#):
>
> 1. What is a Stack? How does it differ from a Queue?

Why not ask, “How would you implement a function that takes an ordered set of elements and returns another set of the same size, but with the elements in reverse order?” Or, “Describe how you would build an order system, where orders are processed in the reverse order they were received.” Or, “Explain how you would handle operations if the operations are received faster than they can be processed.”

> [@](#):
>
> 1. What is a Linked List?

Why not ask, “How would you store a list of elements?” “How would you store a list of elements, if the list is very large?” “How would you store a list of elements, if the list is very large, and elements are deleted and added regularly?” “What would be the problems with your implementation?”

> [@](#):
>
> 1. In ‘C’, how is a string represented?

Why would you need to know how a string is represented in C, if you’re not using C?

> [@](#):
>
> 1. What is a thread?

I personally encounter this word a lot in my day to day work. Surprisingly though, many new graduates, although they know the term, don’t know the impact of using threads. I’d ask, “Where are threads useful? Where are they more problems then they’re worth?”

> [@](#):
>
> 1. What is a heap, and what would it be used for?

Many modern programmers don’t access the heap directly, so intricacies of the heap are irrelevant for all but the lowest level programmers.

> [@](#):
>
> 1. What is a constructor? How would a constructor in an object be defined?

I like to ask this one, “Think of a case in which you’d want a constructor to be declared protected? Private?”

> [@](#):
>
> 1. What is meant by the ‘Scope’ of a variable?

Why not ask this, “After you declare a variable, how long will it be valid?”

> [@](#):
>
> 1. What is recursion?

Who uses recursion? I can’t think of a case where recurision is necessary where an iterative solution isn’t better.

> [@](#):
>
> 1. What is a Boolean value? What does a bitwise shift do?
> 
> 2. Describe two ways to communicate with an object.

Even I don’t know what the context of this means. Do you want me to say accessor and method?

> [@](#):
>
> Hopefully, the professional programmers reading this will consider these to be ridiculously easy questions.
> 
> Of the last ten people I interviewed who came from a ‘certification mill’ like a one-year college program or a Microsoft certification course, NOT ONE could answer more than half of these questions.
> 
> My original list had tougher questions on it, but I had to start dumbing it down when no one could answer any of them. (I didn’t find a single candidate who had ever heard of a state machine, for example).
> 
> I really fear for the quality of the world codebase, since so many of today’s programmers are mathematically and logically illiterate. They can string objects together in VB to make a nice GUI, but take them past that and they start producing reams of crap. I remember one guy who produced a gigantic, nested structure of complex IF statements spread across several modules, when what he was trying to do could have been done with a state table and a small recursive function. Unfortunately, he’d never heard of either technique.  
> \*\*

What I think is scarier are graduates with 4 year degrees who can answer the above questions, but who can’t write a concise function. Or who can’t abstract enough to understand where one class ends and another begins. Or who thinks that member variables with names like ‘a’, ‘b’, and ‘c’ are adequate. Or who believes that a line of code that uses a ternary operator no less that 4 times is considered ‘good’.

So, yes, there may be a lot to learn from four years of university classes, but there’s a lot more to learn outside of the university. And most smart people pick up the skills they need from on the job training and postgraduate training.

---

<div class="post-metadata">

**Author:** ![Athena](https://avatars.discourse-cdn.com/v4/letter/a/35a633/32.png) [@Athena](https://boards.straightdope.com/u/Athena)\
**Post date:** [July 19, 2000, 4:32pm UTC](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918/24 "2000-07-19T16:32:00Z")

</div>

> [@](#):
>
> \*Originally posted by Sam Stone \*  
> \*\*Athena: I wasn’t talking about a physical stack, but the logical construct. There is a fundamental difference between a stack and a queue. What is it?
> 
> BTW, queues are used all the time in computers. Microsoft Windows uses a queue for one of the main functions of the operating system. Any clue what it is?  
> \*\*

Like I said, I’m not familiar with the term “queue.” Guess it’s one of those terms that fell through the cracks in my education, or lack thereof. My wild ass guess, though, is that you’re referring to a logical stack vs. a simple list, and the fundamental difference is that a stack works on the last-on, first off concept (ie, if there’s 5 objects in the stack, and you add a 6th, then start popping them off, the 6th is the first one you get back), and a queue would be the opposite. IE, in the above example, the first you popped off would be the first object in the queue, not the last one you added. Do I get the prize?

(note: I have a whole bookshelf full of books that I’m sure I could refer to on this issue, but I thought it would be more fun to pretend I was interviewing and couldn’t look it up.)

Boy, nothin’ like discussing coding theories on the net, vs. actually doing some coding and getting my work done. How come the one is so fun, and the other is (gasp!) work?!?

Dunno what Windows specifically uses a queue for. I’d bet they’re used all over, though, if it’s the logical structure I’m thinking of.

---

<div class="post-metadata">

**Author:** ![Sam\_Stone](https://avatars.discourse-cdn.com/v4/letter/s/ecccb3/32.png) [@Sam\_Stone](https://boards.straightdope.com/u/Sam_Stone)\
**Post date:** [July 19, 2000, 5:45pm UTC](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918/25 "2000-07-19T17:45:11Z")

</div>

Yeah, you got it, Athena. An example of a Queue would be the messaging system in Microsoft Windows.

Zero: You forget that this is a live interview. Sometimes the simple questions are the best, because they draw the person’s knowledge out. I can often learn more from the questions the person asks me to clarify the problem than I could from a straight answer, which may just be regurgitated from a textbook.

Another reason why your questions are no good for an initial interview is that it takes too long. I could spend half an hour with a guy just on your first question alone. And the problem with ‘problem’ questions like you are suggesting is that the person may go down a different path to the solution and not tell you what you want to know in the first place. Your questions would be much better on an exam, but for a live interview I don’t believe they are the way to go.

As for recursion, I built two recursive modules just this month. One was a routine for walking a tree of an undefined number of nodes with an undefined number of leaves under each node, and another was an RPN-\>Infix conversion. Both of those solutions are ‘classic’ recursive functions.

And even if there are rarely uses for recursion, it’s still a staple subject in Computing Science, and I would be leery of a programmer who had never heard of it. The same for Re-entrancy. These are topics covered in CS101, and should be part of the fundamental knowledge set of a working programmer. The fact that you immediately thought of the limitations of recursion proves my point - you are intimately familiar with the topic. Can you imagine an educated programmer who had never HEARD of it?

Two ways to communicate with an object: Properties and Methods. I grant you the question is somewhat ambiguous, but again, that forces the candidate to ask you more questions which will illuminate his knowledge.

I agree with you that the most important things are logical skills, the ability to write concise code, etc. But that’s not the subject of an initial interview. If a person survives the initial, then we’ll get into analyzing code samples with defects, asking for simple quick algorithms for certain problems, some order-of-precedence tests, code cleanup tests (ie give someone some mangled code, and ask them how it could be improved), etc. The specifics of that depend on the job description we’re currently hiring for.

[Previous page](https://boards.straightdope.com/t/visual-basic-6-0-certification-salary/25918.md?page=1)
