Tech Companies, New and Old, Clamor to Entice Cloud Computing Experts
nytimes.com
nytimes.com
Cut off everyone else's oxygen? There are maybe 10 companies that hire in volume and are willing to match top tier offers. The companies that aren't willing to match top tier offers could do so by hiring fewer people and paying them better, but they choose not to. Those companies are cutting off their own oxygen.
Some companies are willing to pay more than others, often by 2x or more, and those companies have a lot more options when it comes to hiring. That's how the market works now that the wage suppressing no-poach agreement has been canceled. And frankly, that's how it should work. Companies should be able to go out and pay market rate to get the people they want. And people should be able to take advantage of that.
[1] http://h1bdata.info/index.php?em=Netflix&job=SENIOR+SOFTWARE...
Take a project you've done and start figuring out what it would take to do it at 100x the traffic. Now figure out what it would take to make each of the instances stateless. Lastly, how can you make it work through network partitions, latency, and eventual consistency?
These are real problems people in the "cloud" are working with. Just being able to talk about these types of problems excitedly says a lot about where an engineer fits.
Most companies mess around with tools or distributed storage systems because it's fun, not because they actually need to do it. Debugging live systems at scale is another bit of black magic. If you basically know what Brendan Gregg does then you could probably qualify for these types of jobs.
1. strong fundamentals of L2/L3 networking 2. software defined networking state of the art 3. linux and windows virtualization state of the art 4. distributed storage state of the art 5. familiarity with commodity 64 bit hardware of all varieties (supermicro, dell, hp, etc.) 6. kernel debugging skills (maybe not development) 7. networking debugging skills @ the packet level 8. strong understanding of http and proxying 9. strong understanding of load balancing 10. strong understanding of wide area networks 11. physical datacenter knowledge i.e. how to actually install shit and get it to work together. 12. power fundamentals
for example, solve this problem:
we have a datacenter in oregon and a datacenter in virginia. connect them physically and logically. know what the goals are, know who to call, what to ask for/buy, and how to debug it.
1. Formal specifications. Complex distributed algorithms are too difficult to understand without exhaustively checking a design for all possible executions that end in dead-locks or violation of some invariant. Clouds require sometimes complex orchestration between various services. Unit tests aren't going to cover you if your design isn't correct (they'll ensure that some small portion of your system is correct and scale has a funny way of revealing everything you didn't test for).
i.e., how do you assembly-line build an entire rack or cage without manually installing any software? it's not easy. in fact it's very hard, probably even the most advanced groups require some manual intervention or at least some manual troubleshooting every once in a while.
yeah, but you have to work for Oracle.
edit: oh, next to South Beach, never mind.