read


read
or learn more

Computerists

Apr 10, 2013

How can you tell that someone is not a scientist?

They’ll have the word “scientist” in their title.

This seems harsh right? The truth is that if you look at most of the fields defining science you’ll see that the practitioners rarely call themselves scientists:

  • Biologist
  • Chemist
  • Physicist
  • Geologist
  • Astronomer
  • Botanist

So why not call ourselves Computerists? First of all, the term computerist is akin to calling an astronomer a telescopist. The deeper problem is that a title like physicist is not merely a label or a fancy term for the resume. Instead, a physicist is a natural philosopher who decided to stop goofing off and start applying the scientific method. Here’s a terse explanation of the scientific method:

The scientific method is a body of techniques for investigating phenomena, acquiring new knowledge, or correcting and integrating previous knowledge.

So are we, as computer scientists, applying the scientific method? I’d say in almost every case no since, in my opinion, we generally fail on every point in the definition above. Humans are fallible, illusory, coping animals. You take a human and put them almost anywhere on planet earth and they will adapt, cope and survive. However, the only thing that separates us from shaved apes is our ability to reflect on our nature and do something about it. In fact, the scientific method is extraordinarily useful in breaking our natural habit of coping by shining a spotlight on the B.S. that we’ve conveniently chosen to ignore.

However, as computerists we celebrate our coping mechanisms to the extreme. We can take the worst operating system in the world and somehow manage to get something done by adjusting. We can slog through the most brain-dead of programming languages by hacking in features that make it “just work” and convincing ourselves that we’ve done something amazing. For every new programming language we reinvent techniques that were discovered in the 60s and before. The reward? Top ranking blog posts and consultant fees.

Are we having fun? Probably.

Are we getting things done? Sometimes.

Are we scientists? No.

Do we care?

:F

38 Comments, Comment or Ping

  1. Paul

    I agree.

    Do we make observations, develop hypotheses, design experiments, and test the hypotheses? I suppose I’ve seen something along those lines when people do performance tuning, but it doesn’t seem like science when the theory you are trying to construct is based on memory/disk usage of an individual application.

    In general, what we do is engineering. We take the tools that others (often mathematicians, rather than scientists) have developed and apply them in novel and interesting ways. Like all engineering, there is a certain amount of rigor, and a certain amount of “art”. Personally, I do find it to be fun. :-)

    It’s not so bad though. Not many people trained in “science” get to do “science”. I have a degree in physics, but I rarely did science. I performed a lot of experiments, but it was mostly to validate what I was taught. The only theories I ever developed independently turned out to not be original (it was gratifying to know that I could develop a solid theory, but disheartening to know that it had all been done before). With the exception of some postdocs, most of the “scientists” I know don’t do science.

    I really enjoyed the first minute of the SICP lectures. You may recall that Prof. Abelson pointed out that “Computer Science” is a terrible term, because it’s neither a “Science” not about “Computers”.

  2. In English there is a split between Software Engineering and Computer Science. German uses the word Informatik which comprises both disciplines.

  3. josh bowles

    Nice post. A lot of computer science came out metamathematics, philosophy of logic and math, and mathematical logic — I’m thinking of Leibniz, Boole, Church, Godel, Turing, etc… And a lot of that was building formal systems that did or did not have to be (or could not be) empirically verified by observation in the real world (ironically, real world engineering seems to disconfirm the incompleteness Theorems). In way, they were just making things up according primitives and rules: Lamba Calculus, Turing Machine…. It shouldn’t surprise anyone that a lot of Computer Science is “just making things (up)”. Funny enough, it seems the scientific methods gets applied the most once you’ve got engineers building stuff with code for businesses. New features/products will hypothetically be awesome, until you build it, test it, release it, observe it in the wild, and learn.

  4. Alex

    Datamancers.

  5. dbg

    Personally I’m fond of the term “datalogy” as an alternative to the field we presently call “computer science”. that seems to really capture the important bit. what we study is data. methods of manipulating data (aka algorithms). schemas and systems for structuring, persisting, accessing, and analyzing data.

    so we ought to call ourselves “datalogists” or something to that effect and thereby take our place next to the chemists and biologists of the world.

  6. “Computer Science” and “Software Engineering” are terrible terms. Computer Science is about neither computers nor science, and Software Engineering isn’t engineering. I don’t think there is really any room to apply the scientific method in computer science, with the exception of HCI research.

  7. I am on the fence about this one, I have many times employed the scientific method in order to solve a particular technical issue.

    Doing something over and over writing down results, and proving it true or false.

    And there are other times, when sheets are thrown to the wind and you are on a deadline and just need to get something done.

    I’ve experienced both philosophies as an admin. Would I call myself a scientist? Probably not, but I do at times employ the scientific method. Thomas Kuhn would be proud.

  8. Phil

    “make observations, develop hypotheses, design experiments, and test the hypotheses”

    When programming, dont we do exactly that?

    make observations => see a feature in real life, in another program or webpage you would like to adopt develop hypotheses => think about how you could make it work design experiments => code test the hypotheses => compile if necessary and GO!

  9. I suggest you take a look at an excellent book from a seminal Computer Scientist:

    http://www.amazon.com/Sciences-Artificial-Herbert-Simon/dp/0262691914

    Yes, we should lament a bit that we aren’t scientists like the others dealing with natural phenomena.

    Instead, we almost entirely deal with artificial phenomena; which, nonetheless, benefits from a rigorous, scientific approach.

  10. @Phil

    Ummmmmmm.

  11. Gorm

    @dbg, the “data” part of “datalogy” is an improvement on CS, but the “-logy” suffix is as ill fitting as “science”.

    In Norwegian, a fairly common term for CS is “datateknikk”, or “data technics”. That seems pretty spot on to me.

  12. The misnomer might be due to something akin to the “tastes like chicken” idiom. We are attempting to use analogies to describe what is essentially a radical novelty (Dijkstra 1988). And then it was too late. A bit like car/cdr I suppose.

    Is it all bad? We’ve constructed a term that is socially almost as inscrutable as Mathematics. Just ride the gravy train while it lasts. Much better than being called extremely-precise-instruction-givers.

  13. Prof

    how about “nerds”?

    oh, i kid! and am one myself.

  14. Tim Clemons

    I like the notion of moving away from “Computer Scientist” — although I’d tweak the name to “Computationist” as we’re less concerned professionally with the computers we use and more with what we are having them do.

  15. The fact that the world needs programmers to get stuff done with computers will go the way of scientists having to blow glass to make their own lab equipment.

    To compare this field to science is way too self aggrandizing.

  16. Matthias

    what about “Informatics”, as it’s called around here?

  17. gasche

    Contrary to what some people in the comments seem to think, there are people that do scientific research about computers, algorithms, programming methods, fundamental aspects of formal languages, etc.

    I’m not sure what you mean by saying “we’re not doing computer science”, other than “I’m not doing computer science”. Maybe if you’re not doing computer science it means that you’re actually not one of those people doing scientific research, and indeed you should find another name for your job than “computer scientist”? That doesn’t imply that the name, in itself, is a bad choice to designate people that do.

    For the record, fogus, I enjoy reading your blog a lot and I don’t want to be diminishing in any respect, but I wouldn’t qualify it as a “computer science” blog indeed. I would consider John Regehr’s blog ( http://blog.regehr.org/ ), or Neelakantan Krishnaswarmi’s blog ( http://semantic-domain.blogspot.com/ ), or Leo Meyerovitch’s blog ( http://lmeyerov.blogspot.fr/ ) to be computer science blogs. Other equally interesting blogs such as yours of Yosef Kreinin’s ( http://www.yosefk.com/blog/ ) are of a different nature. It’s fine!

  18. @gasche

    I’m not sure what you mean by saying “we’re not doing computer science”

    It’s probably easy to miss on a quick read, but I did say “in almost every case no.” I know that there are people in the computing field doing science. I wouldn’t say otherwise. Most people are not however, including myself.

    find another name for your job than “computer scientist”

    I don’t call myself a computer scientist.

    wouldn’t qualify it as a “computer science” blog

    That makes two of us.

  19. Josh

    Mathematicians at worst, hackers at best.

  20. Nikita

    It’s programmist in Russia. :)

  21. Jack

    Is mathematics a science? Computer science is more like mathematics than physics. There’s not much to observe, and test, except other mathematical constructs, all of which are created, which makes mathematics more of an art than a science in many ways.

  22. etandel

    I like to call myself a Turing Machine Tweaker because what I do is basically getting Turing Machines to do what I want.

  23. I used to do science. Then I called myself a computer scientist and I made a point of stressing the scientist part.

    Now, sometimes I engineer software. Sometimes I am just writing code, which feels more like a carpenter making furniture than it does engineering.

    Often, our field suffers from its young age. It is similar to early engineering attempts where you would just try to build the tallest church you could and hoped it didn’t fall. If it did, you built it back a little lower.

    We do not have the techniques and methods to build something big and complicated correctly the first time, which we do have, for instance, when building skyscrapers. Most of the time, they stand the first time they are built, even though each one is different.

  24. Bob

    I agree, computerist doesn’t sound good. How about “Computationalitst”? Just how the Biologist studies biology, the Computationalist studies computation.

  25. I think the right to be called scientists was lost when moved from the white aprons to the shorts and flip-flops…

  26. Stefan

    Are we scientists? Sometimes:

    • Software engineering: structure
    • Data analysis: mathematics, …
    • Theoretical computer science: algorithms, graphs, …

    Don’t overdo science, keep the fun and get something done.

  27. Jonas B

    I’ve put a bit of thought into this issue myself. In the IT department I am currently involved with there are three categories of staff (not including “useless”). One is the engineers. Critical and highly valued, they nevertheless are not doing “science.” They make the machines work. Then there are what we might call (using the russian term) “programmists” – those who make the programs work. Most of them aren’t doing any appreciable science, but a few are. And what they study is a specialized subset of programs (computationists, perhaps?) Then there are what I’m going to call informationists. These few are only interested in the hardware and programs to the extent that it is where the information lives. They are interested in what the information does, how it moves, who consumes it, who produces it, why it’s kept, why it’s important, etc etc. This is information science.

  28. Laxator2

    In all other fields of science the rules are those of Mother Nature. They don’t bend as a reaction to what the researcher discovers.

    In “Computer Science” the rules are made by the language designer, and it is idiotic to compare Mathematics with CS. As Sroustrup put it “Mathematical numbers don’t overflow”, but in all machine implementations they do.

    So the rules do change, and applying the scientific method is counter-productive.

  29. @Laxator2

    So the rules do change, and applying the scientific method is counter-productive.

    Non-sequitur.

  30. Winston

    Sheesh, you guys – have any of you ever done any debugging? Sometimes debugging is intuitive but if you hope to ever get very far as a programmer, you better be applying some scientific method to debugging. Debugging is, or should, involve hypothesis, fact gathering, experimentation, conclusion. Of course so many programmers are “specialists” now, maybe they don’t do their own debugging anymore. So for those guys, the real scientists are the QC testers. As a programmer – and a debugger – I appreciate a tester who can apply scientific method to his work and give me useful conclusions, or if not useful conclusions at least relevant facts. But I suppose a large number of testers aren’t capable of providing any more information than an average end user. From my POV, I need relevant facts and I need to know how to ask for them, and more importantly, recognize them when I see them.

  31. I think it is all too nick picky about labels. I have had traditional training in science and apply the knowledge and skills to my IT work all the time. Most employee’s I work with, and I believe that most program developers out there, who do not have a scientific backround seem to approach projects like a bull in a china shop; no forethought, no design, and no respect for the contingies in the future events/results. The more theory and questioning we do in a business world about a project, is indeed science, either natrual or unatural phenomena.

  32. Brian Balke

    I like the term “programmer”, particularly when taken in the broader sense of the dynamics between software and the systems it affects.

    I think that the definition of “Science” is fine, but I think that normal usage does not take a “scientist” as one that “does” science. A scientist can interpret science when they read it. A “physicist”, for example, can interpret a report on matter and fields and understand how it relates to other studies and the goals of ongoing research programs.

    For example, I think that many of the observations made by the author about the evolution of programming languages are actually valid observations in the domain of computer science.

  33. kfee

    I have to agree with Winston a bit on the point of QA. Quality Assurance (or Quality Control depending on your company), at least the good QA techs, tend to be scientists more than the so-called Computer Scientists are. They have something to observe, and when it goes weird they can develop a hypothesis as to why, and test that hypothesis, then write an article for “peer review” (the bug report). Standard developers (not academics) aren’t scientists. We really aren’t. We aren’t theorizing. We’re BUILDING. We’re engineers, or craftsmen.

  34. SeattleC++

    “The scientific method is a body of techniques for …acquiring new knowledge, or correcting and integrating previous knowledge.”

    The practice of computer science is about the discovery and encapsulation of knowledge. You discover how a (business) process works. You discover what users need. It is in this sense rather distressing more a descriptive science like biology or sociology. Yeah, the distillation of the discovered knowledge into code is more like engineering than science.

    There is plenty of experimentation in computer science, from prototyping to optimization. The teaching of computer science doesn’t traditionally involve much design-of-experiments, which is dumb, because I think that if more practitioners realized how much they were “doing science”, they might do it better. I’ve met exactly one practitioner who really understood her work as science (Hi Jennica!).

    There is a natural-science underpinning to computer science too. Design and analysis of algorithms and computability theory are quite like mathematics, which is widely regarded as hard science, even though it is descriptive.

    People spend far too much time worrying about whether computer science is “science” and not enough time doing new science with their CS.

  35. I think it depends on what you’re doing. Computer Science is emphatically not programming: it’s a completely different discipline — indeed, it’s possible (but not advisable) to be a computer scientist without learning to write a single line of code (although I’m not sure how good a computer scientist that’d make you). However, at its base, computer science isn’t really about computers: it’s about the formalization of algorithmic thought and stepwise logic in a mathematical context… there is a science to this type of thing, but whether it’s a type of science that, say, a physicist would recognize as such is debatable.

  36. Shed Dweller

    When I went to Uni in Australia back in the early 90s and got my degree, the piece of paper read:”Informatics” degree majoring in Software Engineering and Artificial Intelligence.

    However due to the human auditory circuits difficulty parsing “I have an Informatics degree” as different from “I have a nymphomanics degree” during job interviews, now I just tell people “I have an IT degree”. It saves on awkward moments in the lunch queue.

    As for whether my programming work was art, engineering or science… I’d say no, it was not an either/or situation. It was all three.

    The scientific method helped me break everything down into provable blocks that only worked as a theory until I researched the language and started to code. The code was then tested and improved until actual results match expected results. Along the way I discovered different aspects, capabilities and limitations of the virtual environment I was working in. The practice of engineering was applied to build structure into my theories and code. Finally as I gained experience, as with all creations of the mind there was a great deal of art involved in making both the theory and the result elegant. Neither science nor pure functional engineering care much for elegance, but all engineers strive for an elegant solution to the problem at hand and scientists seem to have more confidence when the answers to their questions are elegant.

    All three contribute to the final product.

  37. quick ways to make money for 12 year olds

    Today, I went to the beachfront with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!

Reply to “Computerists”