I am by far not the authority on this but at this point I am more of the former, but have some glimpse of the latter, and hopefully will be able to move over.
Most of the time these are interchangeable but what I am
really talking about is the difference between programmers at places like banks (IT) versus the ones at tech companies (CS) like Google.
I have never worked at a tech shop but recently spoke
to an interviewer at Bloomberg, a
finance company but whose life blood is mostly in the technology and we did talk about what tech shops look for in general.
The former companies don’t see technology as their life
blood (developers are under traders, bankers,
…), even though they should. I mean if
the systems fail, all hell would still
break loose so you would think they hire good developers and keep them happy and productive. But most of the time it seems we are the first to get cut, the last to get any
rewards, and have to deal with clunky systems and bureaucracy… They also hire a
bunch of code monkeys (as my friend likes to put it) and domain
experts, people "really good" at just one
thing which they have been doing for many years.
The majority though aren’t
much of an expert… just old. Doing
something for many years does not automatically make you an expert or even good
at it. Furthermore, do you really want someone who cannot keep up with the times or evaluate and adopt new technologies that are would increase efficiency or create new innovations?
Tech companies, again from what I've heard, understand that technology is their life, blood
and they need their systems to work perfectly... 99.999% of the time... and at a
much larger scale.
The systems I work on are tiny and with users who have no better
options (we’re a mini monopoly). How
many users does Google handle per second? And how much competition do they have?
In addition, they
innovate like crazy… code monkeys do not
innovate… For innovation, you need engineers, who are unhindered by constant
bureaucracy (we have a lot of that, takes forever to get things done). And at that scale, they better
know how to optimize like crazy too (algorithms and data structures).
...so if I want to fall into the 2nd group, I’ve got my work cut out for me. I don’t think I am a code monkey, as I constantly look for ways to improve our systems (using new technologies) and fix inefficiencies when I see them. But currently
without Algo. and DS, I cannot think at their scale, where tiny inefficiencies that I may overlook, become huge problems...
As I told the interviewer: at the
scale I work at…
list.Sort()
is good enough… at a tech companies it rarely is.
But there may be another element: the subjects also provide
building blocks and frameworks that may be very helpful for creating new technology.
I think I am pretty good at making 1 + 1 > 10… An engineer with his knowledge
can make 1 + 1 > 100 or maybe 1,000,000….