Thoughts on Computers, Education, and Programming

Thoughts and essays on Computer Science, Education, and Programming.

Tuesday, July 22, 2003

Is Artificial Intelligence Coming? 

Four or five years ago I had a chance to talk to Marvin Minsky. For those of you who don't know who this is, he is a very well-known scientist who was had a huge influence in Computer Science in general and Artificial Intelligence (AI) in particular. (He was also the model for the depressed robot in Douglas Adam's "Hitchhikers Guide to the Galaxy").

He was not a happy camper. He believed that the field of AI had done nothing meaningful for the last twenty years. Reflecting on his comments, and having spent some time in the field myself in the mid-1980's, I'm forced to agree. The neural network and other connectionist folks have done some interesting work, but failed to make progress on the real core area of AI--making a machine that thinks and acts more like a human.

I expect Dr. Minsky is a little happier today than he was then. There's been some movement in the AI field in the last few years. And it looks like this time they might actually get somewhere. I think there have been three changes in the last twenty years that have given AI a chance to make some serious progress.

The first change, of course, is that machines are faster and have more memory than they did twenty years ago. A lot more. The second is that while there may not have been much progress in the core areas of AI, there has been progress in related areas that produce useful technologies and techniques for creating AI software (Agents, Baysian Networks, Clumping, etc.).

The third is that programmers are different now. Programmers have to learned to effectively work together in small teams, they have more experience with large complex software projects, and they have learned a set of programming techniques that were unknown or little understood twenty years ago (Object-oriented programming, distributed programming, and many lesser techniques).

And there are a lot more programmers around now. This means that while the top five programmers today are probably not really any better than the top five programmers twenty years ago, the top thousand programmers are a lot better than the top thousand back then.

Ten years ago I didn't think we'd reach true AI within my lifetime. Now I think we might make it in twenty or thirty years. Expect big changes as we learn the advantages and problems associated with truly intelligent machines.

Monday, July 14, 2003

Happy About Programming Jobs Going Overseas 

I see that the ACM Technews references another article about the possible loss of programming jobs in this country because overseas programmers work for less money. I've seen several similar articles over the last few years.

As I write this in July of 2003, it certainly seems like something to fear. Computer Science jobs are difficult to come by, especially in the Bay area. I know several recent CS and CIS graduates who are working in non-computer related jobs because there simply is not enough work out there.

And yet I find I'm rather happy about the idea of a team of programmers in India or Russia ready and willing to write code for a fraction of the cost of a similar team in the US. The reason for my happiness may also be a way to ensure that you are not one of those whose job is lost (or never exists) becaues of cheap, overseas competition. That reason is Agile Programming.

Very briefly speaking, Agile Programming is about designing and writing code quickly and well, using a small team and appropriate technologies. If you want to know more (and you should) read about it. There are lots of blogs, web articles, and books. Also look for "Extreme Programming" which can be thought of as a specific type of Agile Programming.

I think that programmers in this country can be competative by using Agile Programming. So what if someone can get a team of fifteen programmers in India for the price of three in this country if the three in this country can produce a better application in less time. That's the way programmers here can compete. Workers in this country haven't been able to compete in the global economy on per-worker costs for a long time, but productivity is another matter entirely.

One aspect of Agile Programming that should be a huge advantage is the importance it places on communication. Not just communication within the team, but communication with the customers and users. (Fred Brooks in his famous book "The Mythical Man-Month" made some of these same points in 1986. Maybe this time the industry will listen). Programmers who live in the same country, the same time zone, and speak the same language as the customer will certainly have an advantage when it comes to communication.

Now let me tell you the real reason all this makes me happy. No more COBOL, it just doesn't work for Agile Programming. For that matter traditional object-oriented languages like C++ and Java are pretty marginal. We'll be forced to use high-level, dynamic programming languages like Python, Lisp, and Perl. You know, the languages that make programming fun.

So if a bunch of COBOL, Ada, and 'C' programmers lose their jobs to programmers in other countries...well I'll have trouble feeling bad about it. They can either retrain in newer and more effective technologies, find a different line of work, or learn to live on 15 dollars a day.


07/01/2003 - 07/31/2003  

This page is powered by Blogger. Isn't yours?