Flutterby™! : TWO questions

Next unread comment / Catchup all unread comments User Account Info | Logout | XML/Pilot/etc versions | Long version (with comments) | Weblog archives | Site Map | | Browse Topics

TWO questions

2008-11-12 19:24:47.794324+00 by meuon 21 comments

I think I've got the geek interview question down to 3 questions;

  • What languages(s) do you have experience in?
  • What development environment do you use?
  • What language can you write code in without an IDE prompting you and a cookbook website or book lookup for every command.?
or I can just ask the last one. The answer is typically -none-.

I'm down to not caring what language, if they actually understand and code in it, I'm betting they can probably code any other. Note: HTML and XML are not programming languages.

[ related topics: Interactive Drama Books ]

comments in ascending chronological order (reverse):

#Comment Re: made: 2008-11-12 20:07:55.936011+00 by: ebradway

I only list on my resume languages that meet #3: Basic, Python, C/C++, SQL. I used to have Perl on there but I don't use it regularly enough and it's not the kind of language that "sticks". And of course, I could pad that list with a dozen or so other languages that I've experienced.

The problem with #3 is by the time I reach that state, I'm constantly using cookbooks for APIs. For instance, I have been able to code in C and C++ with just a text editor and command-line tools for probably 18 years now. But anything that I actually need to do (that isn't trivial) involves finding the appropriate library and some good examples.

When I've interviewed for jobs where I wasn't familiar with the development tools in use, I've always stated:

"Becoming proficient in a new development environment is almost trivial. Becoming proficient in your business practices is not. I can go to Barnes & Nobles and buy a book on Extreme Q++ for Dummies. There is no book at Barnes & Nobles. If I can't learn your development environment, what makes you think I can learn your business practices?"

#Comment Re: made: 2008-11-12 20:23:44.077709+00 by: John Anderson

bonus interview question: *why* are (HT|X)ML not programming languages?

#Comment Re: made: 2008-11-12 21:21:08.066562+00 by: spc476

Question the first: How do you define “experience?” I can rattle off a bunch of languages I've actually written code in, but in order of my comfort, I prefer C, Assembly (6809, 8088-80386, MC68000) and possibly Forth (although I have a love-hate relationship with it).

I have done Ada (and seen Ada in C), Perl (can't stand it personally), C++ (can't stand it personally), PHP (really can't stand it personally), Assembly (VAX, MIPS, can recognize 6502, Z80, 8080, 6800), Erlang, Java, Javascript (don't like it), sendmail (no, really!) and BASIC (there's also VIth, but I wrote that language, so I doubt it counts). I can work with these languages, but it might look a bit funny.

Question the second: What's a development environment? Linux? I use a text editor and a command line compiler. Debugger is optional, but nice (I've gone for so long without one, that I've learned how to debug without one). I never did like IDEs (mainly because the ones I've seen forced some god-awful editor on me) but I can see the value they provide (crutch more like it, but I'm a programming curmudgeon). I now prefer developing under a Unix environment, just for the command line tools.

Question the third: My answer: none. Or rather, ANSI C? I know most of the ANSI C Standard Library but will have to look up the occasional function (whats the order of parameters to fputc()? And is it putchar() or putc()? Those are functions I rarely use). I look up just about everything else, including APIs I developed!

Perhaps a better question would be: What language can you code in without having to lookup language issues? (declaring variables, etc)

#Comment Re: made: 2008-11-12 22:32:23.1001+00 by: radix

#1 is what I use on the resume because most hiring decisions are made by idiots looking for buzzwords
#2 nope. emacs is the closest. I tried with some of the Java environments, but I've been doing unix for so long it just felt stifling
#3 shell (bourne - runs everywhere, interpreted by bash,zsh,ksh, lots of others), perl, SQL of course, awk. Can you tell I'm a systems analyst/troubleshooter and not a developer?

My favorite interview question for unix people is:
give me three commands with at least two flags on each that you expect to use working here

My favorite sideways interview question is:
why are manhole covers round?

#Comment Re: made: 2008-11-12 22:43:52.571576+00 by: Dan Lyke

I think the discussion of #3 goes to the heart of how you approach programming. Is programming about plugging together modules that someone else built? If so, then a decked out IDE is the right tool. If it's about algorithms, where the code is primary and the hooking between modules is secondary, then an IDE like VisualStudio just gets in the way.

Probably 10 years ago I was sitting in a Microsoft presentation and someone was stepping through the "how easy it is to build a project in this environment" and I realized that if adding libraries to a project and calling them was where programming was headed, I needed to find another profession. I still think that, occasionally, and I admire the kids who can sit there and do the mindless in VisualBasic or C# all day, but it ain't me. And I don't think it solves the interesting problems.

Which is why Radix's answer speaks to me. I've never bothered with AWK, I just use the various -a, -n, -p and the like with Perl. I like Emacs, because it does what my fingers tell it, and does the "compile in this environment and go to the errors", and there are times when I'd like argument expansion (especially if it worked in the way it did in that old Vax LSE editor), but doesn't keep me from doing lots of things all at once in the way VisualStudio does.

#Comment Re: made: 2008-11-12 23:27:59.120109+00 by: petronius

Question 1: Yiddish and Pig Latin Question 2: A warm supportive, almost amniotic environment question 3: Code? I have nothing to hide!

#Comment Re: made: 2008-11-13 02:41:31.835691+00 by: meuon

Radix and others, you are the choir and I should have expected such.

Petronius: You are hired. Laughing. I have no idea for what but with answers like that you'd at least be fun to have around and display quirky intelligence.

#Comment Re: made: 2008-11-13 07:43:59.244849+00 by: Mars Saxman

I've been writing all my code in Visual Studio for the last six months. It's actually not bad. I use the same minimal feature set you can find everywhere: basic text editing, file/directory regex search, debug output log, stack crawl on crash/assert. It all works fine. Every now and then the debugger does something useful, too. The rest, which I ignore, stays out of my way.

#Comment Re: made: 2008-11-13 11:50:31.013698+00 by: John Anderson

Speaking of interview questions, I've been trying to help my company fill a Perl coding position for the last several months (we found somebody last week, *finally*). The question that eliminated more than 75% of the applicants: "Name the three basic types of Perl variables."

People with resumes touting multiple years of Perl experience were unable to answer this question(!).

#Comment Re: made: 2008-11-13 13:06:11.735863+00 by: meuon

John. I'm not sure what you are looking for.. ie: Private, Global? Scalar/Variable, Array, Hash? (I had to look that up). or would you call it an associative array rather than a hash?

Mars, but (I am assuming) you could write code without an IDE. It's ok to like one and use it, but I am amazed at the people whom claim to be a coder, with a degree, that can't do anything without those helpful hints, command completion and cookbook samples. Not even simple things. Didn't even know it is possible.

#Comment Re: made: 2008-11-13 13:45:50.723336+00 by: Dan Lyke

Meuon, your private/global list is about scoping, not type. John means scalar, array and hash, although there's kinda 4 because filehandles tie in there weirdly (and in Perl, filehandles are very weirdly). References are a case of (the) scalars, and blessing yields a reference to a sub-type of one of those four.

I'd think the deal killers on Perl questions would be about things like closures, not the simple stuff. On the other hand, I've seen code written by alleged Perl professionals where someone iterated through the keys of a hash to see if the hash had a key of a particular value (rather than if (defined($hash{$value}))).

#Comment Re: made: 2008-11-13 14:43:21.290154+00 by: John Anderson

Yeah, scalar/array/hash, and filehandles, typeglobs, and references are why the word "basic" is in the question -- although if you want to quibble about whether three is the right number, you pass.

AFA questions about closures, yeah, we'd like to get to that, but when your answer to the "three types of variables question" is "<long pause> uhhh ... static, dynamic, and the other one?" then we're really just wasting the time of everybody involved. (Yes, that was really an answer I got, from a "Perl expert" with "eight years of Perl consulting" on his resume.)

The overwhelming feeling I'm taking away from this round of hiring is that I'm underpaid, because my skill set is evidentially a *lot* more rare (at least in these parts) than I thought it was.

#Comment Re: made: 2008-11-13 15:30:04.035701+00 by: meuon [edit history]

One of the problems in evaluating such things like types of variables is whether the person was trained/educated in the same ways as the person formulating the question. While I understand the word "scope" and "type" I don't use those classifications in my head. I'm mostly self taught, I missed the basic vocabulary lessons and formal concepts.

I'm looking for aptitude and understanding, specific knowledge can be learned. Example: Lucius (aka Unkmar) is a Euphoria nutcase, and leveraging some other experience (light PHP) with an understanding of what's really going on, has written some kick ass C and Perl code for Utiliflex for doing Modbus communications over ethernet and data collection into MySQL using Perl. He knew little of either when he started those tasks.

#Comment Re: made: 2008-11-13 15:41:30.891314+00 by: Dan Lyke

Giving you an idea of how long it's been since I've actually coded in Perl, rather than doing one-liners, I'd be remiss in not mentioning code references.

Like you, my continuing issue is how I monetize this trivial arcana. Yesterday afternoon and early this morning were spent learning about boot processes on a particular architecture. I really hoped that someone had this in a script, and they probably do, given that scripts exist to allegedly (I can't test without booting) do all the rest of the hard stuff, but I really doubt that I'll ever be asked to use this crap again, probably never after today.

#Comment Re: made: 2008-11-13 16:37:22.457109+00 by: ziffle

My big question is: "Will you stay until the project is finished?"

#Comment Re: made: 2008-11-13 16:42:29.203395+00 by: meuon

In theory, I'm good at monetizing it. In practice, I'm too nice of a guy. I do better when someone else handles the business negotiations, most of the time.

As for staying until the job is finished... never been a problem for me. Hmm..

#Comment Re: made: 2008-11-13 17:19:21.015989+00 by: other_todd

Reading this thread once again reinforces my feeling that I am the last of the legacy Perl coders. Can't help it. It just fits, the same way I never looked back once I found emacs. As the man says, it does what my fingers tell it to.

I wouldn't mind finding one question for each language that has only one correct answer IF you are suitably familiar with that language, like the scalar/array/hash question in Perl. Sure, you can quibble with it in numerous ways, but if you were writing Perl every week, you wouldn't. Then it would have only one answer, realio trulio.

Is there really anyone who does not know, or is incapable of deducing, why manhole covers are round? I think I'm going to go ask this question to a random sampling and see what they say.

#Comment Re: made: 2008-11-13 17:35:35.170226+00 by: Dan Lyke

Todd, I think the interesting bit of that question is: "why else are they round?"

Doh, more evidence of my lack of recent Perl experience: replace if (defined($hash{$value})) with if (exists($hash{$value})). In almost all the code I've worked on the first works, but there are times when only the second is correct.

#Comment Re: made: 2008-11-13 17:40:42.370959+00 by: other_todd

There's another reason apart from that it makes it impossible to drop the cover down the hole?

#Comment Re: made: 2008-11-13 18:04:00.614753+00 by: Dan Lyke [edit history]

Sure, one that immediately comes to mind: Have you ever tried to move a square block of metal that size by yourself? Much easier to roll if it's round. Other possible answers include things like maximal area for minimal material, and in that vein you can engineer for a single supported span distance.

#Comment Re: made: 2008-11-13 20:22:46.760135+00 by: ebradway

Back to Dan's first response:

I think the discussion of #3 goes to the heart of how you approach programming. Is programming about plugging together modules that someone else built? If so, then a decked out IDE is the right tool. If it's about algorithms, where the code is primary and the hooking between modules is secondary, then an IDE like VisualStudio just gets in the way.

Code I write now is entirely about the algorithms. But I still have to hook those algorithms to something. For instance, my current major coding project involves a crazy set of algorithms for generalization spatial data and storing them in a consistent manner. But I needed to input and output the data in from some standard format (shapefiles and SQL). I used canned libraries for this because it IS entirely about the algorithms - and not my developing a new GIS.

In fact, it's really about the data structures. I probably should have started relying more heavily on Boost and CGAL because I've spent an insane amount of time writing computational geometry algorithms that understand my data structures.

As for development environments, I went through several in the course of this project. I just installed Visual Studio 2008 Team Edition and am tickled pink. Because I spend as much time writing about what I'm doing in Word, I find the editor doesn't get in my way. Visual Studio has long been able to essentially hyperlink function calls to function definitions, so navigating the code is less about greping or paging around. And the Team Edition gives me a built-in code profiler - so I can provide empirical results to back up my theoretical estimates of algorithm performance.

Of course, Visual Studio costs the same for me as GCC.