When the Macromedia and WHITTMANHART teams met, it was clear that there was quite a bit of talent in the room. However, it was also clear that many skills overlapped. As such, we had to ensure that we made the best use of the skills we had at our disposal.
We assembled the team into two core groups, a creative team and a technical team. As one might expect, the creative team was responsible for the overall look and feel of the application, the user interface design, and the user interface architecture. They guided the visible human interaction side of the experience. The technical team was responsible for implementing the user interface by developing components and the client and server-side business logic.
An ideal team for a Flex project is comprised of seven core roles; project manager, creative director, technical lead, visual designer, information architect, client programmer, server programmer. Understand the relationships better by viewing the following chart (Figure 2).
Figure 1. The team hierarchy for a Flex project.
On the WHITTMANHART project our team comprised of a total of 11 designers and developers:
Except we only had eight people on the team to fill the 11 roles . Many times skills overlap between individuals, and the Flex project manager can leverage individuals in different places, using the methodology discussed in this article. In the end, a project dictates the team makeup; or the skills necessary for the project.
Next, let's look at the roles that make up the team. In this section, I use personas that describe each of the roles, typical activities of the role, and tools of the trade—rather than giving a straight definition for each role. My intent is to simplify the process for identifying the right person for a role on a team.
The visual designer conceives, creates assets, and refines the look and feel for the application. This includes, but is not limited to the components of the application, user interface controls, iconography, and so forth. The visual designer is responsible for providing the conceptual design including typography, color, branding, and graphics.
While visual designers may relay concepts through documents, mood boards, and other artifacts, their primary contribution to the development process is graphic assets.
The toolset that designers use include products such as Macromedia Fireworks, Macromedia Flash, Macromedia Freehand, Adobe Illustrator and Adobe Photoshop
Information architects use user-centered design principles to organize content and navigability requirements for the application. They are responsible for defining the application’s structure, information design, user interface design, and interaction design. An information architect's goal is to define a well-structured, intuitive and functional interface that maps user requirements to a visible asset, typically referred to as a schematic, wire frame, or sometimes simple “wires.”
The information architect usually coordinates communication about requirements between business owners and creative/development teams. They are usually involved very early in the project life cycle and often participate in thinking and strategy sessions that surface to refine project requirements.
Information architecture is a relatively new discipline and is critical to well-designed Rich Internet Applications; information architects conceive and articulate animations for transitions, context, and usability. In a project without a formal information architect, look to the project manager or designers. It is not uncommon to find skill overlap in either of these disciplines.
The toolset that this person uses would include products such as Macromedia Fireworks and/or Microsoft Visio.
Flex programmers fall into one of two categories, client programmers and server programmers. Some teams are fortunate enough to find a developer with the skills required to do both, but it is unlikely. Since most teams will assign different people, let’s look at the roles separately.
Client programmers are responsible for structuring and writing the code of the client application. This person works with the visual designer and information architect to implement the structure, design, and behaviors of the application. In the same way, the client programmer will interface with the server programmer to determine the APIs for the client-to-server data requests.
Key areas of focus for the client programmer are handling user input (from mouse and keyboard), component creation, user interface controls, and client-side validation. Since client programmers must interface with both the user aspects as well as the back-end aspects of the applications, they must have a breadth of knowledge that allows them to understand both the front and back end of the application.
There are two primary languages used in Flex, MXML and ActionScript. MXML is an XML-based declarative language that primarily defines the user interface, behaviors and effects in a Flex application. As such, a good client programmer for a Flex project will be very comfortable with HTML and will likely have experience with XML, ActiveX controls, web services, and VBScript. In addition, Flex uses of ActionScript 2.0 to define procedures and functions. Given that ActionScript 2.0 is object-oriented and based on ECMAScript, the ideal Flex client programmer will have an object-oriented programming background, experience with Java applets, and be extremely comfortable with JavaScript and ideally ActionScript.
In contrast to the client programmer, who is responsible for the user aspects of the application, the server programmer is responsible for interfacing to the data sources and bringing that data to the application in a structured way.
The server programmer will use MXML and ActionScript to define the model and other services necessary to surface the data in the application. To be successful in Flex, the server programmer will need to possess much of the same coding knowledge that a client programmer knows (such as, ActionScript, XML, web services, JavaScript, and so forth). In addition to these skills, the server programmer should be comfortable with one or more of the typical server side technologies, such as JSP and servlets, ASP/.NET, ColdFusion, and so forth.
Server programmers will be busy during many phases of the application development. In the early stages of application development, after wire frames and requirements, server programmers create data models, define the server patterns, and determine the APIs for client method calls. Their role continues with creating server data storage, defining and implementing application security, and defining access to back end systems.
The project manager has many roles in a project, but one of the key roles is ensuring that there is communication between all of the parties involved in the project: developers, designers, customers, and so forth. The project manager oversees project resource allocation, timelines, and budgets. The project manager is the primary interface between the customer and the development team. It is the project manager’s responsibility to ensure that the team meets, or if possible, exceeds the customer’s requirements.
The project manager is involved throughout the duration of the project, but typically won’t be involved 100% of the time.
As mentioned in the information architect description, it is common to see the project manager act as the information architect on a project. Likewise the project manager may not only help define requirements, he or she may actually work with the customer to help guide and refine the requirements over time.
Typical tools that the project manager will use are Microsoft Project, Groove, and so forth.
As the names suggest, these folks are the team leads in their respective disciplines. These roles typically exist in larger teams. When a project requires four or five designers, three or four information architects, five client developers, and five system programmers, it needs an interface between these teams and the project manager. The creative/technical lead roles are critical in large teams; because they will help their teams prioritize and remain focused on project requirements. Likewise, they have real-world experience in their discipline and are central in helping the project manager set and maintain the application schedule.
On smaller teams, members of the team typically adopt these roles; these roles become a key resource for the project manager when handling the creative or technical direction of the project.