Difference between 常常 and 往往
Basically they have the same meanings. Now let's focus on the difference, but first wrap your head in duct tapes in case it explodes.
往往 is usually used with conditions supplied. Without any condition it is usually wrong:

我常常加班。 -- Good.
我往往加班。 -- Wrong.
北京常常下雪。-- Good.
北京往往下雪。 -- Wrong.
北京往往在冬天下雪。-- Good. Notice the constraint.
努力的人常常会成功。-- Good.
努力的人往往会成功。-- Good, maybe better.

However, 往往 can only live in the result, not in the condition:

如果你常常努力，你就会成功。-- 往往 is wrong.
如果你努力，那你往往会成功。-- Good. 常常 is also OK.

往往 focuses on the experience of previous observations, 常常 focuses on existing phenomena. This may not matter much depending on the context:

猫往往会把猎物带给主人。 -- It's an observation, a summary, and maybe also a prediction.
猫常常会把猎物带给主人。 -- It's just an observation, but really, no big difference.

When 往往 is used, there is often a slight enhancement of emotion or stress:

我常常加班到深夜。-- A general statement.
我往往加班到深夜。-- Notice the sense of disapproval.
我常常一加班就头疼。-- A general statement, but...
我往往一加班就头疼。-- The negative sense of 头疼 eludes the difference of 常常 and 往往.
小明常常在班里考第一名。-- A general statement.
小明往往在班里考第一名。-- Good. Though not negative, it sounds more emotional.
小明往往在班里考倒数第一名。-- Good. Negative and emotional.
北京常常在冬天下雪。-- A general statement.
北京在冬天常常下雪。-- Notice although 常常 appeared at different places, it's more of a decorator of the whole sentence.
北京往往在冬天下雪。-- Notice the slight stress. Winter, not spring.
北京在冬天往往下雪。-- Snows, not rains.

常常 can be used in the subjunctive mood. 往往 can't:

你要常常来找我玩哦。-- 往往 is wrong.
我建议你常常复习一下。-- 往往 is wrong.

常常 can be used in the imperative mood. 往往 can't:

常常来找我玩哦！-- 往往 is wrong.
常常复习一下！-- 往往 is wrong.
如果有时间，就常常复习一下！-- 往往 wrong, even with conditions supplied.

Also the negative form:

我不常常吹牛。-- 不常常 is good.
我常常不吹牛。-- 常常不 sounds weird because 吹牛 is an explicit action.
我常常不在家。-- 常常不 sounds OK because 在家 is a status.
懒散的人往往不会成功。-- 往往不 is good. It's the only form of negation.
懒散的人不往往会成功。-- 不往往 is absolutely wrong.