1. A computer-implemented method for customizing a user interface, comprising: receiving information associated with behaviors for a set of users when each user interacts with the user interface, wherein, for each user in the set, the information associated with the behavior for the user describes a set of functions of the user interface that are used by the user; recording the behaviors for the set of users using a directed graph, wherein recording the behaviors for the set of users comprises using the directed graph to aggregate the received information, wherein vertices in the directed graph correspond to visual components in the user interface, and wherein edges in the directed graph that are between the vertices correspond to actions taken by the set of users by using the visual components; determining a usage pattern from the recorded behaviors for the set of users, wherein said determining comprises identifying at least one path in the directed graph that corresponds to a sequence of actions taken by the set of users by using visual components; generating a user-specific customization of the user interface based on the determined usage pattern, wherein said generating comprises creating a function that performs the sequence of actions; and customizing the user interface based on the user-specific customization, wherein said customization comprises adding a visual component to the user interface that corresponds to the function.