Dealing with complexity

Mark Chu-Carroll has a really cool blog. If he doesn’t blog, he works for Google. Here is his answer to my Hamming question:

I’ll do my best to answer. By necessity, I’ve got to be a bit vague, because I don’t want to give away any google secrets.

First, I need to draw one important distinction. Computer science is too broad – there are lots of different areas, and I don’t think I can pick exactly one of them that’s clearly more important than the others. So I’ll arbitrarily pick the one that I know best: software engineering.

So – what are the most important problems in software engineering? I’d answer “dealing with complexity”. Software is frighteningly complex, and becoming moreso by the day. The editor that I use for programming has reached more than 2 million lines of code – I don’t think that there’s any person in the world who actually understands the whole thing. And that’s just a programming tool! Imagine the complexity of the things we build with it! Software is now built by groups of people, and no one person can understand all of the details. It’s built for hardware that people can barely program themselves (if they can do it at all!). It’s built to run scattered around huge numbers of machines around a network (the mail client where I’m writing this is running partly on my computer, partly on a web server at google, and partly in a mail database server.)

What do I do? I’m a toolbuilder. I make tools to help software engineers deal with complexity. Over the last few years, I’ve worked on SCM systems – which are tools that help groups of engineers deal with the complexity of working together. I’ve worked on programming environments – which are tools that help individual programmers deal with the complexity of understanding systems. And I’ve worked on build tools – which are tools that help deal with the complexity of assembling a large system from many small parts.

So what I do is a small part of trying to solve the biggest problems in software engineering. I don’t want to sound too egotistical – it is a *very* small part of a *very* big problem, but it’s the part that’s interested me from the first time I saw a computer, and I’m very proud to be contributing to it, even in a tiny way.

Working on the tools really isn’t a prominent job, but important none the less. Researchers may write prototypes and evaluate them for papers, but it needs more people to make real, useable programs out of that. When the programs are written we need even more people to maintain, adapt and debug those programs.

Published in: on September 2, 2007 at 2:51 pm  Comments (5)  

The URI to TrackBack this entry is:

RSS feed for comments on this post.

5 CommentsLeave a comment

  1. Hey I just visit you’re site. And it’s really cool good keep it up. And yeah it’s my blog you are most welcome in my blog. See you soon.

  2. Well, I cannot give you definitive answers to your questions, in fact I cannot answer any of your questions in the first place. Although this could be attributed to my lack of sleep (and need to sleep because of early classes)…anyway, if you’re interested at all in linguistics and computer science, then I’m your man–err well, actually woman for that matter, but that phrase strange if I alter the gender to suit my needs.

    Rambling aside, how familiar are you with the subject of linguistics–theoretical, diachronic, etc…or any combination of those? I’ll try to remember to look around your blog tomorrow once I have 4+ hours of sleep, and then perhaps I’ll have something a little more worthy of posting.

  3. Thanks, weyouth. Yes, I hope to keep it up.

    Go ahead, acthros! I’m not familiar with linguistics, so i’m interested in your view. Post it as a comment or write me an email!

  4. Cool Blog,Keep Blogging!

  5. We have become the antibodies for the ever increasing intellegance of the “Super” computer system. We are the bone marrow constructing the new software cells which are supporting an overall larger system, beyond our individual comprehension. And yes, there are those individual virus intities who attempt to reproduce through the distruction of their hosts.

    Which has become the greater?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: