Pros
small teams, engineers own their own services (prod root, testing, alerting, design, end to end), tons of opportunity to work on fundamental infrastructure and relevance problems, but also there is a ton in place to help you do this already. Extremely pro-open source. Flexible work environment, unlimited PTO. Still pre-IPO, but you know, kinda probably will.
Cons
Chaotic: engineering has not been very historically run by strong personalities, which lead to an environment where individual tech teams decided what to build. This lead to a lack of consistency and and "anything goes" engineering mentality. E.g. there are maybe 6 different logging frameworks in production java code, another half dozen different key-value stores, mapreduce jobs are done via pig, scalding, hive, python on hadoop streaming, you name it. So if you're one who is bewildered by many choices, you'll be *very* bewildered at Twitter. It can be a hard place to start your engineering career.