Nailing the Interview...?

I am applying for a programming job (entry level) for designing simulators to test designs for marine systems in boats. Much of my experience to date in programming is mostly with VB.NET. I know how to program in C++ and most of my C++ programming is done at home as a hobby. At work, the extent of my programming has been writing scripts for CAD systems (in Windows). Besides that my main job isn't programming. I don't write in C++ at work because other engineers have to interface with my scripts and nobody knows C++. VB.NET doesn't look as cryptic, is easier to pick up and read, therefore that is what I use. However I totally prefer C++.

The job I am applying for requires a computer science degree, experience with C++ and Linux. However, I don't actually have a computer science degree (or any for that matter). For the past 2 years though, I have been writing scripts and even some full on application development to carry out solutions for fairly complex problems and computations for marine systems. I don't have any experience with Linux though.

My question is, despite my lack of requirements, how can I leverage my current experience to try and prove that I am a good candidate for the job? To be quite honest, I know people with CS degrees who leave school and don't have the same abilities as somebody who has had on the job training. I am not saying that a degree does not hold value, but in comparison I think actual job experience holds more value. I have never actually been to a interview for a programming job. What are some questions I can expect? Do you guys have any tips?
...but in comparison I think actual job experience holds more value.

Yes it is true. But just two years of C++ experience does not make that much of a difference.
Okay, so how many years of experience would equate to bachelors in CS?
You are off to a good start, but I think you are a little bit pessimistic about what a college degree entails.

An employer would expect someone with a computer science degree to have a reasonably good understanding of how data structures and algorithms are put together. A candidate should be able to understand a number of algorithms to be able to design efficient solutions to various problems that would be encountered while working on a project. Someone with a couple of years of experience might be able to come up with a solution, but it may not be as efficient or maintainable as other options.

Knowledge of C++ is one tool in a programmer's toolbox. There are many more.

Do you understand various sorting algorithms and why one may be better than another is a particular circumstance? Do you understand big-O notation and why it's important? Do you know the difference between a directed graph and an undirected graph? Do you have at least a vague idea of what Dijkstra's algorithm is and how it works? Are you familiar with the concept of Design Patterns? Ar you familiar with source code management? Do you know how operating systems work (at some level) and how tasks are scheduled? Do you know how to work with sockets? Do you know how to work with network protocols?

There are many more. Nobody has all of the tools, but a good candidate has a number of them. In some ways, knowledge of the language may not be as important as some of the other tools. Once you know how to write a quicksort in C++ you can write it in any language once you are familiar with the language. Someone with good computer programming skills can leverage his/her knowledge when learning a new language.

I was like you, I think. I was a civil engineer with little formal computer training. I spent time on my job writing little computer applications to help me and my coworkers do our jobs more efficiently. I also had a very large program at home that I was developing. It was probably 10000 lines of BASIC in which, among other things, I unknowingly developed my own little database (cool, but not very efficient or maintainable).

I later went back to college for an MS in comp sci and just in the pre-requisite courses I had to take before I started graduate classes I learned all sorts of things I never would have come up with if I had only worked on my own little pet projects.

To answer your question,
Okay, so how many years of experience would equate to bachelors in CS?
, I would say somewhere between 5 and 10 years based on the type of programs you are working on and the type of knowledge you are gaining. Pick up some books on computer science (not programming language, but theory) and read it. Look at a requirements for a college degree and figure out what you don't know. Or better yet, sign up for a college program, even if it's 1 class at a time on-line. As you learn more tools you will be more employable.

Wow, 5 to 10 years to equate to just a BS in CS? I'm sorry, but I must scoff. You give way too much credit to undergrads. Maybe the ones from the top tier schools are amazing but I mean, those are already the best of the best so it's not really a surprising revelation nor is it a realistic expectation.

There's a strong difference between industrial and academic code. Namely, industrial is typically of lower abstract quality because of pressure imposed by deadlines. Academic code is more of an exploration into programming. It may uncover something useful or just be a fruitless endeavor. Any scientist understands that risk.

So if you want a job, industrial code experience is obviously better. Academic coding will definitely give you the skills to be good in industry but I think they diverge greatly from each other.

General rules of thumb though should just be, always be learning something new. Always push your own boundaries. Learn some functional programming. Learn C++'s type system really well. Implementing interfaces and traits and such was quite mind-bending for me at first.
Topic archived. No new replies allowed.