On a page like a User profile - is it better to allow editing fields by going into an explicit "Edit Mode" where all fields become editable? Or is it better to just have all the fields have 'edit' buttons when you're viewing your own profile?
The answer depends on how your audience is expected to use the site.
Edit Mode - If your user is likely to edit their profile only once or twice, as an isolated task - and can easily divide the two modes (view / edit) conceptually - then by all means make use of an edit mode.
Inline Edit - If the editing is likely to be an iterative process - where the use is expected to slowly add to, and amend, information stored in their profile over time - it might be better to allow inline editing.
I choose option 3) No seperate 'Edit' or 'View' mode at all.
Just give them the ability to go into the user details page and if the user wants to edit something the can.
Provide them with a 'Save Changes' button at the bottom / top of the form that saves any changes they made. If they want to edit then they can, if they just want to View the details then they can just do this too.
The first option is much better than the second for both (dynamic or static) interfaces. Doubtful convenience in fast access to an editing mode is expressed in ten elements of mode management (probably with different interaction) instead of one. It looks as a TV remote, powered by two AAA-batteries, with separate compartments for each of batteries with the different mechanism of opening of a cover. Considering that the basic part of time you switch channels, instead of be engaged in replacement of batteries - it's much easier to remember one model of interaction.
I am a developer. I currently develop most stuff in the edit mode, meaning if you are allowed to edit the information, you can edit it from where you can see it.
So, if you are a manager, and you have drilled down to an employee, and you have permission to change the employee info, then you will see text boxes, not just text. If there are things that you cannot change due to permissions, you will see just text, not text boxes.
I think it's fair to assume that if you can change information and you came to a place to view that information, odds are, you might need to change that information.
And, I loathe creating duplicate display and edit pages. You have to create those pages as well as the navigation between those pages.
I find it much easier to code locking down individual items that to grant 0% or 100% access on whole pages.