Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
User Journal

Journal Journal: How has the job search / interview changed? 9

I've been gainfully employed for 5 years. I'm laid off as of Q2. The last time I interviewed I remember going on like 12 interviews and getting 11 offers.

Those days are over. In the last 6 weeks I've had two interviews, and both chose "not to go forward."

What are people finding the interview is like these days? Lots of phone screens? Heavy on what we used to call the "tech out" portion? For both my interviews I got the same thing -- first, meet a boss and/or HR person who tell me about the company and the job, ask about my experience, and basically do the "feel good / personality fit" thing. In both cases I got asked back for a second. In both cases those were with techs. In the first case I met 2 Java coders who liked me, and 2 business analysts -- one liked me, one didn't, and I got shot down. In the second case I think I was misled a bit because the first interviewer kept asking me about my hands on experience and how I felt about rapid prototyping, but the second interview asked me nothing but questions on formal design methodology, then declared me "not technical enough."

Both of those leads came from my primary recruiter, who I have worked with before. I'm not just in his database, I know that he's calling places and trying to sell me. I've also answered a bunch of cold calls from headhunters who want my resume (I'm sure to just stick in the database) and never heard from any of them.

I've filled out numerous online applications, usually by emailing the HR contact a copy of my resume and a cover letter. Gotten back a handful of "We received your resume" form letters, but no callbacks yet.

monster and dice don't really have anything for me. Monster's primary role seems to be a place for headhunters to search for new resumes. Dice seems to have been stuffed by a company called KForce.

What's the interview like for people? Everybody's telling me that no matter how much it sucks, the fact is that you will be reduced to 20 buzzword checkboxes and if you've got 19 and the next guy's got 20, you lose. Yes, that sucks. I want to respond with "Who would want to work for a company that believes they can reduce an employee to 20 checkboxes?" but if it turns out that they're in the majority, well, I have bills to pay. :(

Movies

Journal Journal: AI Movies as Inspiration

The recent slashdot story about new evidence of life on Mars yanked an old movie memory into the front of my brain. Called "Tin Man", from 1983, it's about a deaf man who has a computer that does all his speaking for him. He gets an operation to restore his hearing, and goes on to start a company that turns his computer into a true AI. I saw this movie when I was about 14, I think I probably had my first computer for a few months at that point.

There's a scene in the movie where the guy has brought his venture capitalists in to talk to the computer, to see how smart it is. One asks, "Is there life on Mars?" and the computer says "Yes." When they laugh, the inventor tells the computer to explain, and the computer proceeds to argue that there is a high probability that the spacecraft we've sent to Mars had bacteria and other single celled organisms aboard it, and likewise, there is at least some probability that some of it was able to adapt to life on Mars.

I remember it being a pretty cool AI movie for the early 80's. Sure as hell made me want to write an AI, I'll tell you that. My science fair project that year was an Eliza program that could do tricks, like if you asked it "What is the third month?" it could say "March". I baffled teachers by doing a few simple examples ("What is 3 x 9?") and then going into my big finish, typing "What do you get when you multiply the sum of every third number between 123 and 9843 by 5?" and holding my finger over the enter key, looking at the teacher and smiling as they said "No...way." Of course my parser was hardwired to look for sentences of the form ("What do you get when you X the Y of Z...") and just looking for potential parameters, such as "all" or "every Nth". LOTS of "if...then" logic :). What do you want, it was in BASIC.

I even had something taken right from Tin Man, where if you gave it a statement like "There is X", you could later ask it "Is there X?" and get back a true or false answer. This actually led to a lifelong love of natural language parsing. My science fair experiment the next year examined grammatical structure of sign language and Esperanto and argued that since a computer has no real world concepts for the words we use, it would be more appropriate to create a new language specifically for the purpose of communicating with computers. I believe these days that's called "Loglan". In college I remember speaking with one of the creators of Loglan (who had a disagreement with the other creators and went on to form Lojban which was the exact same language). I asked him if any humans could speak it, and he said no. Kinda defeated the idea.

Comparatively speaking, all TRON did was make me believe that if you started with a chess program you'd originally end up with the MCP. Although to be fair I did spent lots of time trying to write a good light cycles program. I could only ever program a defensive AI, though. I could never seem to get one that would make you crash.

Wargames just made me want to tie up the phonelines.

Books

Journal Journal: The Programmer and the Plot Device

A recent ask slashdot asked for good examples of "real" portrayals of programmers in the movies. This morning I was reading a scifi book where the following is a glaringly obvious plot device -- software run amuck, original programmer brought in to solve the problem, has access to 90% of the source code, finds new and mysterious "compiled module" in the middle of it that he knows nothing about. Of course, he can't get at the source code for it (because the evil head of the corporation is actively hiding it), and "without the source, it's impossible to figure out what it does."

Ummmm....I guess this parallel universe doesnt have reverse engineering, emulators, that sort of thing. Oy.

Software

Journal Journal: Donald Knuth Dreams

Last night I had a dream that I was in an argument over the coming collapse of computer science. More specifically my argument seems to have been against patents. I was trying to argue that over the last 50 years there was enough open/free computer science out there that Don Knuth was able to write four massive volumes and still not be complete, but these days every little "innovation" that seems like common sense is being stamped with a ridiculous patent. This, in turn, causes small companies to have to work in fear that they might have inadvertantly arrived at the same (obvious) conclusions as somebody else who decided to patent it first, thus risking the company's livelihood once the lawyers get involved.

The really odd part was that I was arguing this over brunch...with Frank from Trading Spaces. What's really, really odd is that he didn't seem to care, and just kept making lesbian jokes. We were filling our plates at the buffet, and I'm pretty sure that Vern, one of the other designers, was already seated at the table.

I couldn't make this stuff up.

Software

Journal Journal: Code Blue! Reset the patient!

I saw Danny Hillis speak once and he made an interesting parallel between biology and computer science. He said, "If a human body loses an arm, it can still be saved -- it won't just die instantly. So why do we write software that just up and crashes as soon as a semi colon is out of place? We need to think about fault tolerant software a whole new way." (Paraphrased from faulty memory).

For several days this week I've been debugging my Windows machine that just stopped accessing the net for no discernible reason. I tried everything humanly possible, knowing full well the whole while that "Remove the router from the picture and reset the thing to factory defaults" was an option. But the way I saw it, that was the *last* option. My home network, to me, is a living, viable system that should be kept that way. I have no way of knowing who is accessing my web site or sending me mail, so I really want to avoid just disconnecting my servers at the first sign of trouble. It was only after days of trying everything else that I finally considered that option. Much like a human system, you want to not screw with it for as long as possible before starting to do drastic things.

Before resetting the router I contacted tech support. First thing the guy said was, "Reset the router." It would be nice to think that this was some psychic wisdom that he knew would fix my problem, but let's be real, just like the guys who work the help desk who only know how to reimage your machine, they're pretty much a one hit wonder. To them, the reset is the *first* line of defense, making them the polar opposite of debuggers like myself.

The fact that support droids only know how to reset or reinstall a machine is nothing new. I thought the biological analogy was interesting, though. Should a full system reset really be such a quick option, just because it can be? Don't your servers deserve more than that? (In fairness to the support droids who *do* know what they're talking about, I expect that a big part of their job is based on not wanting to waste time, and a system reset really does solve the problem a significant percentage of the time. Of course, my argument against that would be that a reset almost never *solves* the problem, it simply makes it go away by clearing out the variables that likely caused it.)

Random plug : In Cory Doctorow's "Down and Out" book he has a similar thought -- the doctor who only knows how to fix people by telling them to restore from a backup. When a patient comes in who says "No, find something else" the doctor gets all upset.

Science

Journal Journal: Swarm, swarm, swarm!

Always on a quest for things to keep my brain busy, I'm listening to "Prey" on disc in the mornings and hearing some fun "nano-fiction". But, it got me thinking...

Say you've got a 2d space on which you're about to drop n agents. Your goal is for them to arrange themselves into a circle, and then move as a single unit. The only way they know about their own position in space is relative to another agent that they are communicating with.

Here's what I came up with. All agents remain in a "beacon" mode until they have identified and connected with 2 and exactly 2 neighbors (via whatever communication mechanism they have). This should create a closed loop (think about it - 3 will make a triangle, 4 a square, etc...) Once you have two neighbors, calculate a delta force by attempting average the distance between your two neighbors (in other words, if you are A and your neighbors are B and C, move to approach AB=AC). Apply this delta force to any other forces or velocities currently affecting you.

The interesting "bug" in this system is that you might end up with a closed loop that does not use up all of your agents. Actually it is very likely that this will happen. You would then get several closed loops, using up all of your agents until you have So, how do you do it? An agent that is part of a closed loop can know that it is in a loop (using a simple heartbeat similar to feynman's tin soldiers). But how can they know that there is another loop that they should merge with?

Assume potential real world conditions, namely that N might have changed on you for better or worse. So you can't just count the length of the loop and see if it is What I'm envisioning (and if I lose my stupid job maybe I'll write :)) is a playground where you release a bunch of black dots that form a circle and then begin moving. At any time you can add new dots, which should get swallowed by the circle, or else remove some, in which case any holes should close up.

This is what I do with my brain when it is not otherwise full. Although I'm familiar with the concepts of swarms, emergent behavior and various "boid-like" creatures I've never sat down and tried to code them. What I'm talking about code be a known algorithm. I think the primary difference is I don't just want a mass of the things all moving together -- I want as close to a real circle as I can get.

User Journal

Journal Journal: Smug Apathy 1

What's the best way to react when you know you're going to get laid off? Allow me to suggest "smug apathy". That's when people who get to keep their jobs come up to you with their frustrated sighs and say "The company wants to do such and such! That'll never work!" and you smile and say "Yes, I know." It's all in the smile - try not to look too gleeful, but appropriately...well, smug.

It's quite fulfilling.

User Journal

Journal Journal: Coding first draft? 1

If you're writing, just about everybody will tell you to whip up a first draft and then begin revising. If you're painting, you often start with a pencil sketch. Even for speed reading you're taught to whip through the book first and get a high level view of what's in it before you go back and do several passes, getting deeper every time.

Why should writing code be any different? You have an idea, or a problem to solve. open up an editor and start writing, don't stop until the original problem is solved. No fair adding constraints as you go. If they were part of the original problem, save them for the next pass.

I think the biggest complaint would be, "But once that first pass [hack!] is complete, you'll ship it and never come back to fix it." My solution to that is, what happens when an author sends his first draft to an editor? editor sends it back and says "No way." In other words, somebody has to make the call that it is not ready to ship like that. The same applies for software. Just because the novel ends with "the butler did it" does not mean it is finished. Just because source code solves the original problem doesn't mean the program is finished. Somebody gets to play editor and decide when it is ready to publish.

Is this what XP is all about? It's not what I was thinking of when I was thinking about first drafts (it actually occurred to me while listening to a tape on speed reading). But as I write this, the comparison and relation to refactoring seems obvious.

User Journal

Journal Journal: Business Logic

As a Java programmer I hear all the time that the most important thing in the universe is to separate your business and presentation logic. Mind you, this often comes from JSP developers who have just recently helped themselves to the custom tag library Kool Aid, who a year ago would have told me that it's fine to mix Java and HTML together because everybody pretty much knows both anyway (that's an exact quote from an earlier argument, by the way).

So today I was thinking about exactly what it means to separate your business logic. I mean, where do you stop? Separate it from what, exactly? Is it ok to just separate it from the JSP page, and therefore stick it in the Java? At my current job we've had a rule since day one that certain business operations needed to be possible without Java intervention (for example, the creation of new site map elements). That meant extracting certain logic even farther, such as into XML files that could be dynamically reloaded without the need for a code push or a server reboot. Is that what separation of the business logic *really* means, and it's just that the rest of the industry hasn't reached that point?

I had a discussion today on the following subject. I have a business object that contains some properties I need to expose in a JSP. One option is to create a custom tag for every property. Another is to create a [property name="x"] tag. In the days of just DTDs I would have opted for the former, for validation purposes, but now with XML schemas that's not so much of an issue. Here's the catch -- the business object is defined by an XML file, which may in turn change its definition during normal running of the site (i.e. fields may be added/deleted). Now what? If I use the first method and want to add a field, I need to add Java code for a custom tag (whether it is automatically generated or not), do a code push to production, and possibly a server bounce. But with the second, I push out the new XML file and schema, and have an ops person use the admin console to restart the appropriate service. Is one method superior to the other? Some would say that if you're going to push changes out to production than it doesnt matter how you do it because your exposure is the same (that is, you could crash the site no matter what you do). But I think that the separation issue comes into play, since the latter method doesnt invoke any development resources (no IT resources at all, if we can assume that the service in question will be reloaded on a fixed schedule such as nightly).

So maybe when we say separate the logic, what we really mean is *who* is responsible for it, and what can that person do? Our content management system uses JSP framework files that just drop HTML content "tiles" into place. Why? Because we have an army of web monkeys who only do HTML and were not trained as JSP programmers. So we made a separation (content has no custom tags) that many people would not even have considered, if they have a team of all JSP people. But is that right? Is there a universal right?

When we first started, the rules were easy because everything was pretty much being hand coded. HTML people did HTML, Java people did Java, and so on. We even had one content dude who insisted he wouldn't leave MS Word (we wrote him an automatic doc to html converter, and no we didn't use Word's because it sucks). We had certain separations because we had no choice. There was no hot deploy for our server, either, so pushing new Java meant bouncing (which was a no-no). But times change. XML is considered a good thing not because people will write XML, but because it's easy to write GUIs that populate XML and hide the syntax. So we let our "non-developers" generate and push out XML. Ok, well, why not use that XML as a feed to a Java code generator and build some classes on the fly? Debugging's not really an issue, because if you debug your generator, you'll know that all your classes are correct. Once upon a time the answer would have been that dreaded "code push == server bounce" gotcha, but hot deploy changes even that. So is it even valid anymore to make the separation where we've made it?

One of the reasons that this has come up is that my team has existed for five years, and developed a certain philosophy for how web architecture, roles & responsibilities should work. And we're all getting laid off. So naturally we're looking to see how leveragable our experience is in the job search. And I'm finding that often it seems like we did things *differently*. I'm wondering if that therefore means we did them wrong. I don't think so.

For the record, I have no point, I'm just rambling to try out my journal.

Slashdot Top Deals

As far as the laws of mathematics refer to reality, they are not certain, and as far as they are certain, they do not refer to reality. -- Albert Einstein

Working...