March 2004 Archives

Outsourcing Creates New Jobs

| No Comments

Well, this is certainly interesting. A new study concludes that the U.S. economy has much to gain from global sourcing.

The gains are not only in real incomes (partly because of lower inflation) but also in jobs.

While offshore outsourcing has and will continue to displace workers in the IT software and services profession, the positive gains to the economy, as a whole, will stimulate job creation throughout the economy. The overall gain is positive: an estimated 193,900 new jobs were created in 2003 and over 589,000 new jobs are expected by 2008, if offshore ITO continues. These estimates include both IT and non-IT jobs. After accounting for the number of displaced IT software and services jobs, the net number of new jobs in 2003 was estimated to be over 90,000, and the net number of new jobs in 2008 is expected to be over 317,000.

One big caveat: the study was commissioned by the Information Technology Association of America (ITAA), a trade body and hardly disinterested in the results.

The ITAA, not surprisingly, wants government to help out: it should

Consider offering assistance to service workers similar to that offered manufacturing workers, in a variety of forms, including skills training (and compensation during the training period) [...]

[ Found via KeepMedia's RSS feed. ]

Update: Sure enough, it looks like the report needs to be taken with more than a grain of salt. Max Sawicky is seriously annoyed and Calpundit, errr, Kevin Drum thinks skepticism is warranted:

You probably shouldn't take these kinds of reports very seriously unless someone you trust gives you a good reason, and you should never take them seriously based only on their press release. Caveat emptor.

How to Interview a Programmer

| No Comments

Found via Mark Pilgrim's b-links, How to be a Programmer. Like Mark, I am struck at how good this is, but I can think of a different way to use it.

It's been a while since I've interviewed people looking for jobs. I may be in the happy position to do so again soon. Most of it is down to intangibles: do they know what they're talking about or are they bluffing. I always want to draw them out, which means I need to ask lots of open questions. (A "closed" question can be answered very quickly, in the worst case with a simple "yes" or " no".)

This document is a trove of open questions. Where it has a section headed How to ..., it's easy to substitute, ,"can you tell me about a time when you did ...." or "what is your approach to..."

The way the document is organized, it's also easy to choose. The sections are helpfully categorized into Introduction, Intermediate and Advanced, with sub-sections on things like Team Skills and Judgment.

The actual answers don't matter so much. The ones in this document are good, but I would expect any candidate to speak from their own personal experience and with their own personality.

Of course, I don't always expect to be sitting on the same side of the table. One day, I'll be the one looking to be employed. Many of the same questions are good for applicants as well. (What is your team's approach to version control? How would your company/organization/department generally make a build or buy decision?)

I'm writing about this at least partly so that I can find it again when I want it. A weblog is more permanent than a bookmark.

Bizarre ColdFusion MX Bug: URLDecode()

| No Comments

Here's a bug that's not documented on Macromedia's web site.

 Error Occurred While Processing Request
Error casting an object of type to an incompatible type. This usually
indicates a programming error in Java, although it could also mean
you have tried to use a foreign object in a different way than it was designed.
 
The error occurred in /bla/bla/file.cfm: line 204

202 : <CFSET blurb="anything">
203 : <CFSET encBlurb=URLEncodedFormat(blurb)>
204 : <CFSET decBlurb=URLDecode(encBlurb)>

That's right, URLDecode() blows up, for no good reason at all. Thanks to a Google search I figured out why. This happens if you select a column called URL and then try to use URLDecode() inside the query loop. Be aware: it doesn't matter if the URLDecode has anything to do with the URL column or not, mere proximity is enough to trigger the crash.

It doesn't work to qualify the name URL with the name of the query. I ended up making an alias for that column in my SQL so I could refer to it without using the dread word URL.

Leaving Cert Nightmares

| No Comments

Maria over at Crooked Timber writes about her recurring dream: having to sit the Leaving Cert again. It's more properly called a nightmare, particularly because she's faced with the dreaded Honours Maths exam.

Judging by the rest of Maria's entry, girls really did have it worse than boys. She compares herself to the Magdalene Sisters and it's only a little over the top.

As for the Maths, the link she gives shows the worst of it: integration. The questions on the paper were a form of intimidation through minimalism. Integrate this.

On the the other Leaving Cert subjects , they deliberately left calculus out of the curriculum, which made physics (in particular) and economics easy. (One exception I remember: there was an easy proof of Gauss's Law you could use that involved just a smidgen of calculus.) The Leaving Cert is one where choosing which questions to answer is among the most important skills. The strategy for physics and (especially) economics was to do the most mathematical questions. That way you eliminated as much subjectivity in the marking as possible: if you got the right answer you'd get 100% of possible marks. Essay questions always carried the risk that an examiner might not like your style of writing.

That risk applied for me even in subjects that had no mathematical content. I don't think I wrote one essay for English in my last two years of school. I got a D in the exam. I suppose it's only fair, but that result is the only one that bothers me.

On the subject of Magdalene Sisters... I went to a boarding school. Our laundry was done at a convent. I now know that means it was probably done by fallen women who were shunted into that occupation for having children out of wedlock.

As their punishment they were washing the soiled clothes and bedclothes of hormone-addled teenage boys.

There was worse. Ann Lovett died twenty years ago while giving birth alone in a grotto Co. Longford. She was fifteen. To this day no one knows who the father was or how it could have happened.

And yet a generation of us made it past the Leaving Cert. We grew up and in some ways the whole country grew up. Surely there can never be another referendum like the one in 1983 again. But is it any wonder that people have uneasy dreams about the period.

The Irrationality of Investors

| No Comments

Found through the Efficient Frontier web site: a presentation saying that people tend to make a lot of mistakes when they invest. People are overconfident about their abilities; they trade too much; they choose stocks based on what's making the news and what did well last year.

Supposedly, men suffer more from the overconfidence syndrome than women. Hmmm...

I know I'm probably as guilty as anyone. I am inclined to the contrarian approach, so I like to sell short. Incredibly, I've lost money on this. I've even lost money shorting dot-com companies that don't make money. To make it worse, I hate to cover shorts that are losing me money.

Fortunately, I'm most of my savings are out of my own control, in 401k retirement accounts and the like, where I only get to select the funds. That part of my savings has done much better overall than the part that I control myself. Diversified index funds are the way to go.

Having said that, I think the stock market is overvalued and I cannot resist looking for a chance to short.

Using Safari as a Shortcut

| No Comments

It's one of those dangerous subscription services that automatically deducts money from your credit card every month. Nevertheless I keep my subscription to O'Reilly's Safari. It allows me to search and browse technical books over the web.

Case in point: I was trying to set up a JSP application I got and got an error message like this:

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: nn in the jsp file: /index.jsp

Generated servlet error:
    [javac] Compiling 1 source file

/yada/yada/index_jsp.java:12: cannot resolve symbol
symbol  : class Foo
location: class org.apache.jsp.index_jsp

There followed some scratching of my head. The class file was there in the classses directory where it was supposed to be. The classes directory is in the default classpath for any servlet. Why couldn't Jasper see the damn class?

In Safari, I searched for cannot resolve symbol and found something that looked promsing in Java Server Pages (3rd Ed). And so it was. In chapter 16, under Dealing with Scripting Syntax Errors, the book explains: Tomcat always compiles JSP pages into a package (org.apache.jsp) and therefore any unqualified class they refer to would be assumed to be in the same package. Ergo you cannot import classes from the default package. Solution: move the Foo class into a real package and import it explicitly into the JSP.

It all makes sense once you've seen the explanation but this did save me some time today. This kind of thing happens often enough that I never feel motivated enough to cancel my subscription.

Bostic on Software Management

| No Comments

Found via a comment on the the excellent Rands in Repose weblog: Keith Bostic on Technical Management. Extreme summary: good management practices are even more important for virtual teams, such as you typically find in open source development.

One example is the mission statement. It is classic Dilbert fodder. Nevertheless, I think he's right. Large corporations usually do awful mission statements: gobbledygook wrapped up in irrelevance imposed from on high. Bostic is talking about mission statements that the people doing the work find useful and motivating. (I'm thinking the dreaded words "buy in") In the ideal case, a mission statement is a rule of thumb that can be applied quickly: is this something I should spend time on?

Time is the theme running through the whole talk because time is something that open source projects are typically even more short of than commercial equivalents. Volunteers cannot, by and large, give eight hour days (never mind ten hour days) week after week. Working remotely slows everything down, partly because e-mail is inefficient as a communications medium and partly because time zones add hours (sometimes days) to turnaround times.

It's not all perfect, but I wasn't too distracted by the parts where he got it wrong. Making predictions is dangerous. There was no way to know that Javascript would turn out to be mostly irrelevant. There's more than enough material here to make up for it.

Software Processes and Risk

| No Comments

Laurent Bossavit has another excellent piece of insight: software processes can be viewed as risk models

This kind of thinking can help us to move beyond the religious software process wars. I've been frustrated by arguments from personal experience and anecdote that really fail to address the underlying reasons.

Risk is at the heart of it and the risks for every project are different. It makes no sense to talk about a process without saying what risks it is designed to address.