776 karma · joined July 25, 2010
For distributed systems there are two main things to learn from: good papers and good deployed systems. A researcher named Leslie Lamport invented a number of key ideas such as Lamport timestamps and Byzantine failure models. Some other basic ideas include quorums for replicated data storage and the linearizability consistency model. Google has published some good papers about their systems like MapReduce, BigTable, Dapper, and Percolator. Amazon's Dynamo paper was very influential. The Facebook engineering "notes" blog also has good content. Netflix has been blogging about their move to AWS.
Every software engineer needs to manage complexity, but there are some kinds of complexity that only show up in big systems. First, your system's modules wil be running on many different machines. The most important advice I can give is to have your modules separated by very simple APIs. Joshua Bloch has written a great presentation on how to do that. Think about what happens when you do a rolling upgrade of a 1,000 node system. It might take days to complete. All the systems have to interoperate correctly during the upgrade. The fewer, simpler interactions between components the better.
The best advice I know of about operating a big distributed system is this paper[1] by James Hamilton. I won't repeat its contents, but I can tell you that every time that we didn't follow its guidelines we ended up regretting it. The other important thing is to get really good with the Unix command line. You'll need to run ad-hoc commands on many machines, slice and dice log files, etc.
How did I learn these skills? The usual mix of how people learn anything - independent study, school, and building both experimental and production systems.
1. http://www.usenix.org/event/lisa07/tech/full_papers/hamilton...
import commands print commands.getoutput("your system call and args")
1. http://google-chrome-browser.com/how-google-speeds-chrome-re...
1. http://seekingalpha.com/article/72911-why-was-everyone-wrong...
We need frontend developers to work on a rapidly iterating consumer facing website.
We are also hiring backend developers interested in natural language processing and the infrastructure needed to support large scale data processing.
TechCrunch coverage:
http://techcrunch.com/2010/07/21/time-to-meet-wavii-the-supe...
http://techcrunch.com/2011/01/17/wavii-waviimania-investors/
jobs@wavii.com
Quora has so many respected tech industry people using it that I want to use it. That's similar to how Facebook was first Harvard only, then Ivy League, etc. - you want to be where your perceived social betters are.
My Quora feed shows the topics that my friends are interested in. This is super valuable for finding information slightly outside what I would search for myself.
Their email notifications keep me clicking back to the site so that I stay engaged.
The 3rd part of the linked article even says:
"So it appears that there are a wide variety of social factors that affect (or are affected by) sex differences in math and science. Because of limitations in the way these studies can be controlled, it's difficult to say that discrimination or differential treatment cause the sex differences we see in math and science."
Overall, the linked articles do not support the hypothesis that "men's brains are wired better".
1. http://www.networkworld.com/community/blog/there-sexual-hara...
I didn't mean to insult you. I did mean to say that the aggregate behavior of many men has discouraged many women from participating in CS. That's not disingenuous, it's a fact supported by evidence.
1. http://www.networkworld.com/community/blog/there-sexual-hara...
EDITED TO ADD: where's your citation for the "brain wiring" comment above?