Wednesday, September 19, 2007

I Weep for my Profession

My views are my own, not those of my employer or of anyone affiliated with my employer. Here I speak in a personal, not professional, context.

Those of us in the engineering field all know fellow engineers who should never have gone into the field. This of course is not specific to engineering; there are accountants who can't account, salespeople who can't sell, marketers who can't market...the list goes on. Who among you didn't carry a weaker student through some group project? And if you didn't...well...I'll let you think about that one for a bit. If you took Operating Systems 2 with me, you know the person who I epitomize as the type who should never be let near a compiler, let alone graduate with a CS degree or work as a software engineer. Talk but no substance (and this guy didn't even have talk part because he was quiet and hard to understand).

My employer's been looking to hire a few software engineers, so I've been involved in that process: interviewing, looking at resumes, all that fun stuff. Part of the application process is a code sample that each applicant must complete. My boss gives each applicant a specification for a simple program which any first year (first semester, for that matter) CS or SE student should be able to write. I won't say what it is, but at the heart of this program is a function (which I'll call f()) that can be written in 2-3 lines of code (not counting whitespace or comments). Depending on what inputs you want to handle gracefully, it could grow to 5-6 lines (again, not counting whitespace or comments). I was skeptical that such a simple program could tell you so much about an applicant, but I've been made a believer.

When I first became involved in the hiring process, I was a bit intimidated. I found it strange evaluating applicants while being so early in my career. The first person I interviewed was in the field longer than I'd been alive, which was a very strange thought to consider. I've grown accustomed working with people who have children older than me, but interviewing and evaluating them is a whole different ballgame. I had visions of candidates thinking to themselves, what's this pissant guy fresh out of college doing interviewing me?. But it's part of my job, so I do it as best I can. And because I know I'm susceptible to bullshit, I place a heavy emphasis on how well the person writes their sample program.

I remember the first code sample I evaluated. It was written by an applicant who as I recall had just under a decade of professional experience. The code was bad. And wrong. Their implementation of f() did the complete wrong thing. And when you're applying for a job, it's a bad thing to turn in buggy and wrong code.

And at this point I feel I must digress. I've written buggy code in interviews before; I suspect I'm not the only one who has. But I had to write it on the spot, on a sheet of paper. This is different. This person had a computer, a compiler, a debugger, Google, and as much time as they needed to write this application. And it was still buggy and incorrect. So I wrote a summary of what was wrong with it and went back work. Surely, thought I, This was an isolated incident.

I was emailed a second code sample a week later. It was worse than the first, written by someone with more experience. I was shocked. How could this be? These people are professionals who have been doing this for a long time. How could they not write f()? It's not that hard. Just to make sure I wasn't insane, I spent a couple evenings writing my own version of this program. And lo and behold, I wasn't insane; it's an easy program to write.

For a time, whenever I saw one of these bad submissions, I got angry. People applying for senior positions wrote code just as bad or worse than non-senior applicants. I've seen programs written by senior applicants where f() was 3 pages long. Lest we forget, we as a society have come to rely quite heavily on software engineers, and some of them out there can't do something any first year student should be able to do.

I don't get as angry as I used to when I see a bad submission, though I find myself ranting about it often. Recently I've seen two incorrect implementations of f() which were both incorrect in the same way. It was really strange because it was a way of writing f() I would have never thought of (mostly because it was wrong). I shouldn't be surprised and saddened anymore at this bad code, yet I am every time I see it.

Some of my colleagues tell me I'm overly harsh, that I wouldn't hire myself if my own submission landed on my desk. Given that all the open positions require at least four years professional experience and I have half that, they're right that I probably wouldn't hire myself. But I'm cognizant of this and try not to hold anyone's code to a standard higher than the one I use for my own. When I wrote my implementation, I met every criteria I myself use for judging one of these code samples. And given that we are talking about a CS 101-style project, and given that some people write submissions that I like, it's certainly an achievable standard.


Post a Comment

<< Home

Wednesday, September 05, 2007

An Interesting Read

I read Misquoting Jesus by Bart Erhman last night. It was good enough that I couldn't put it down until I finished it and good enough to mention here, though it might have been nice if it went into a bit more detail on the subject.

Things I learned/had duh! moments on after reading the book (if you already knew these things, congratulations):

  1. There are more textual differences between the Greek manuscripts of the New Testament than there are words in the New Testament (between 200,000-400,000 differences). Most of these differences are forgotten or transposed words. Occasionally scribes changed wordings to (it is claimed) correct what the scribe thought was an error, to make a passage more consistent with some other passage, or to give further support to what the author calls the proto-Orthodox view of Christianity.

    One example of this from the book is 1 Timothy 3:16 in the Codex Alexandrinus, one of the earliest, most complete manuscripts surviving today. What one reads on the parchment today is approximated by the King James translation (published in 1611) of this verse:

    And without controversy great is the mystery of godliness: God was manifest in the flesh, justified in the Spirit, seen of angels, preached unto the Gentiles, believed on in the world, received up into glory.

    What someone discovered in 1715 was that the Greek word for God was quite clearly not the original word written on the page. The original word was who. Someone had modified who to look like the abbreviation for God commonly used in Greek manuscripts. The wording prior to modification is approximated by the more modern American Standard translation (published in 1901):

    And without controversy great is the mystery of godliness; He who was manifested in the flesh, Justified in the spirit, Seen of angels, Preached among the nations, Believed on in the world, Received up in glory.

    A minor detail, but the first version presents much stronger evidence of Jesus' divinity than the second. This was probably useful when arguing against people who claimed Jesus was not God.

    And obviously there's no one original Greek that we have today. So when someone tells you such and such is in the original Greek, the first words that come out of your mouth should be which original Greek?

  2. The Greek manuscript used for the King James translation of the New Testament was from the 12th century and is (according to the author) one of the worst manuscripts we have today. See above for one example.

    I had a friend in high school who claimed the King James translation was superior to all others because, in his words, it was translated by 50 righteous men. Guess it's one of those garbage in, garbage out situations which 50 righteous men can't solve.

  3. The time when it was most important that we have consistent and accurate transcriptions of the various manuscripts making up the New Testament -- when the church was figuring out what Orthodox Christianity was going to be -- was the time when the least accurate copies were made. Professional scribes weren't regularly used to copy manuscripts until the 300's, after Constantine became a Christian and Christianity started entering the mainstream (for those keeping score, that's 270 years after Jesus died). Before that, it was semi-literate and literate Christians who made copies of manuscripts in their free time.

    This was a duh! moment for me, but it made me kinda upset. Growing up going to a Christian school, they teach that you can trust that the copies were accurate because the monks would throw away a page and rewrite it if it contained more than three errors (don't know if it's true, but that's irrelevant). That's great, but the damage (if you want to call it that) was already done by the time monks entered the picture. I'm going to add that one to the lies by omission column.

The discussion of deliberate word changes was pretty interesting, as was the discussion on how Bible scholars attempt to determine what the original text was. There's nothing in the book earth-shattering that would make you change your mind on the Bible (though this study did cause the author to lose his faith as he went deeper into his post-grad and doctoral work). For me, it's further evidence that the Bible was not an inspired work but rather the Wikipedia of its time: everyone (well, everyone semi-literate) could edit it, most people did so honestly, but some people made changes to suit their purposes. Only difference is, Wikipedia lets you see all the revisions and lets you easily see what changed between them (and no one claims Wikipedia inerrant, nor do they claim it authenticates itself). For a Protestant, none of the changes are major enough to invalidate Sola scriptura (and if pressed I'd probably agree that that's true of what was presented in this book). For a Catholic, it's further proof that Scripture is not a sufficient basis for Christian faith and morals and that the Church (in the capital-C Catholic sense of the word) is the final arbiter of those things.

One thing I hope anyone who reads this book (and indeed I recommend it to anyone who's read this far into the post) takes away from reading the book is that one needs to be careful when using an argument that depends on the specific wording of a specific verse. It's possible that this wording wasn't what the author originally wrote. If your argument is a big-picture one based on your interpretation of the overall feel or theme of a chapter or book, you're probably on much safer ground.


Post a Comment

<< Home

Saturday, September 01, 2007

The Haircut

I got my hair cut a couple weeks ago. For most people this isn't a big deal; they do so every couple months or so. I didn't think it was a big deal either, though just about everyone in my section of the building at work was either shocked that I got my hair cut or commented on the fact that I got my hair cut. The response was very similar to the one time I shaved off my beard in college: total shock from everyone who'd never seen me without it. I suppose the reaction kinda makes sense; I think the last time I cut my hair was in February, so it was getting pretty shaggy.

I have two criteria for determining when I should start considering getting my hair cut. The first and weakest of these is when my hair is no longer dry when I get to the office. My hair style routine consists of washing it in the shower and combing it back while it's wet. When it's short, it dries by the time I get to work and falls in a manner which looks good to me. If it's still combed back and wet looking by the time I walk through the office door, it's getting a bit long.

My second criteria is whether or not my hair's obstructing my vision enough that it's an annoyance. If I find myself needing to wear a hat or find myself doing that back and sideways head jerk to get my hair out of my eyes, it's really getting to be time to cut my hair.

I don't like getting my hair cut, though. It's annoying to take time out of part of a day to get it done, waiting to get my hair cut is boring, and I've never been good at describing how I want my hair cut. Usually the best I can muster is See how it looks? Now think how it must've looked 6 months ago. Unfortunately, until archaeological studies of hair is a standard part of a barber's curriculum, this is not going to be a reliable method of describing how I want my hair. So then I fall back on Cut at all a couple inches shorter than it is, which usually results in a better idea of how I like my hair, though it still results in questions on bang length and whether or not I want my hair to cover my ears. The comic below is part of a bit of commentary on my skills in this area by the person cutting my hair.

Fortunately it all turned out OK. But for a time I was pretty nervous. I had hair in my eyes so I couldn't really see what she was doing, and that little comment made it clear that I had failed to make her understand what I wanted. One of these days I'm going to get smart and bring a picture of myself with my hair cut to use as a model to anyone who ever needs to know how I want my hair.


Post a Comment

<< Home