I was trying to explain to someone the other day what I did; he was in BioInformatics. It occurred to me that there was a dimension in computer science that I had not been able to articulate properly before: algorithms and architectures.
Some people who call themselves Computer Scientists of one flavor or another focus on solving what seem to be basically algorithms. For example, getting the right image processing algorithm or credit scoring algorithm. On the other hand, others who also call themselves Computer Scientists focus less on the algorithms but on the organization of the computer system. For example, ensuring that the image processing can actually be used effectively in a user's context.
I have noticed a tendency for people to clump themselves into either the algorithm class or the architecture class. I personally gravitate to the latter. I have also noticed a tendency for algorithmists (sic) to discount the contribution and relevance of the work of the architects -- and vice versa. It shows up as “I've solved the problem with this cool algorithm” on the one hand and “Apply that function here” on the other hand.
Of course, both are important. It does happen that many of the hard architecture problems are in arenas where the algorithms themselves are trivial (adding up a column of numbers anyone). Similarly, the UI for a video player is also pretty simple, even if the playback algorithm itself is not.
In the world of Service Oriented Architecture, with action at a distance to be supported in a safe and effective way, we have a situation where we need both world-class algorithms (e.g., to correctly infer the consistency of a purchase order with a vendor's Ontology) and world-class architectures (e.g., to ensure that we can actually place those orders in a reliable, safe and effective way).
Some people who call themselves Computer Scientists of one flavor or another focus on solving what seem to be basically algorithms. For example, getting the right image processing algorithm or credit scoring algorithm. On the other hand, others who also call themselves Computer Scientists focus less on the algorithms but on the organization of the computer system. For example, ensuring that the image processing can actually be used effectively in a user's context.
I have noticed a tendency for people to clump themselves into either the algorithm class or the architecture class. I personally gravitate to the latter. I have also noticed a tendency for algorithmists (sic) to discount the contribution and relevance of the work of the architects -- and vice versa. It shows up as “I've solved the problem with this cool algorithm” on the one hand and “Apply that function here” on the other hand.
Of course, both are important. It does happen that many of the hard architecture problems are in arenas where the algorithms themselves are trivial (adding up a column of numbers anyone). Similarly, the UI for a video player is also pretty simple, even if the playback algorithm itself is not.
In the world of Service Oriented Architecture, with action at a distance to be supported in a safe and effective way, we have a situation where we need both world-class algorithms (e.g., to correctly infer the consistency of a purchase order with a vendor's Ontology) and world-class architectures (e.g., to ensure that we can actually place those orders in a reliable, safe and effective way).