There's a post over at SitePoint calling Page_Load evil. The complaint is pretty much that because it's automatically there (VS.NET generates the Page_Load handler by default) people just cram everything in there.
Technically some broad statements about Page_Load are made which I don't agree with. Since when is Page_Load too late to add controls? Page_Load is too early to deal with button clicks? You can only have 1 event at a time, it's either going to be before or after...events are fired AFTER Page_Load so that you can dynamically re-add controls and have their event raised.
Overall, I agree that a lot of people abuse Page_Load. They never understand why using PreRender, or Init might be much better alternatives given a particular case. ASP.NET is hard - I've even argued that it's too hard.
In this case though, the blame squarely goes to the overwhelming amount of bad programmers. If you're doing ASP.NET you simply MUST understand the page lifecycle, even though it's relatively super-complex. Take 1 day, load up Reflector, examine the Page class (specifically the ProcessMain function), load up some tests, play with viewstate, dymamic controls, events and prerender and become a better programmer. You're either an ASP.NET programmer or you aren't.
The article proposes a more comprehensive alternative to just Page_Load. All he's really doing is renaming events, Init to AddDynamicControls, PreInit to ChooseMasterPage, Load to LoadData and PreRender to BindData. Those might be good guidelines for someone just starting to learn ASP.NET, but it doesn't really do anything to promote an understanding of and proper use of the page lifecycle.