Assuming you are looking for a Unix/Linux person:<p>1) Good understanding of the user-land + kernel layers - filesystems, inter-process commn (pipes, shared memory etc..), process vs threads, memory layouts, networking (tcp/ip sockets etc..).<p>2) Experience in kernel development is a big plus but not mandatory.<p>3) If using C/C++, good understanding of the language features, esp. debugging tools like gdb.<p>4) If using Java or VM-based languages, apart from language features, good understanding of the VM tunings and its limitations.<p>5) Scripting - bash, awk, perl/python/php etc..<p>6) Protocols - HTTP, and others. Good understanding on how to build web services.<p>7) Performance and debugging: tcpdump/wireshark, /proc/* tunings, firebug, etc...<p>8) An exposure to web development on the client side - html, css, js. Not necessarily being a guru here but understanding the full stack from the client onwards. It can influence the server-side architecture (handling various ajax requests etc..)<p>9) AWS services - something to consider (this is how we started with our start-up).<p>10) Not to mention, a passion to understand the 'big picture', and how to optimize the various resources effectively.
An understanding of how to automate common tasks so that they can be reproducible and a deep enough understanding of your stack to be able to measure and test you assumptions. Also, like mryan said an understanding of the business needs that lead to the existence of the infrastructure in the first place.
Understanding the business reasons for needing an infrastructure.<p>A love of automation, bordering on an obsession.<p>A deep understanding of the individual technologies that make up the stack, as well as a higher-level view of how all of the moving parts fit together.