Best software engineers are also strong systems administrators. It's also commonly understood that strong systems people must be strong software engineers. An operation department at a serious Internet company wouldn't even invite somebody who can't write production quality code for an in-person interview (they wouldn't pass a phone screen).
Strong operations people would also resent being called "IT". IT sets up corporate desktops/mail/calendaring, the VPN and mounts machines in a rack. Indeed, this could be outsourced (mail to Google Apps, rack mounting to Rackspace, OpenVPN in lieu of an expensive Cisco product).
Production operations involves something entirely different and requires an entirely different skillset. Think being able to create application specific automated provisioning, configuration, deployment, software load balancing, monitoring, fault tolerance and high availability. Monitoring is especially tricky: nearly all the enterprise and open source NMS products, for example, "get it wrong" (e.g. hyperic using a single database to store events and allowing you to only poll every few seconds). Monitoring an application (as opposed to a machine) requires writing custom code (by definition), otherwise you simply can't capture the essential vital statistics (and not just whether or not somebody listening on port 80).
I hate doing an appeal to authority, but I should add I've done operations at a very large scale (10,000+ machines) in a big name Internet company, as well as on a smaller scale at startups. I've since moved on to software engineering (since that's what I love doing the most), but it bugs me to see misconceptions about the nature of running an Internet service. Unfortunately these misconceptions run deep and often disadvantage entire application stacks by making them unfriendly to operations (e.g. the flaws of JMX).
Strong operations people would also resent being called "IT". IT sets up corporate desktops/mail/calendaring, the VPN and mounts machines in a rack. Indeed, this could be outsourced (mail to Google Apps, rack mounting to Rackspace, OpenVPN in lieu of an expensive Cisco product).
Production operations involves something entirely different and requires an entirely different skillset. Think being able to create application specific automated provisioning, configuration, deployment, software load balancing, monitoring, fault tolerance and high availability. Monitoring is especially tricky: nearly all the enterprise and open source NMS products, for example, "get it wrong" (e.g. hyperic using a single database to store events and allowing you to only poll every few seconds). Monitoring an application (as opposed to a machine) requires writing custom code (by definition), otherwise you simply can't capture the essential vital statistics (and not just whether or not somebody listening on port 80).
I hate doing an appeal to authority, but I should add I've done operations at a very large scale (10,000+ machines) in a big name Internet company, as well as on a smaller scale at startups. I've since moved on to software engineering (since that's what I love doing the most), but it bugs me to see misconceptions about the nature of running an Internet service. Unfortunately these misconceptions run deep and often disadvantage entire application stacks by making them unfriendly to operations (e.g. the flaws of JMX).