Productivity was further enhanced by developing in a team room, no cubes, no walls, lots of white board and a few very large screens for group discussions. Since most of the team had neither JSF or JPA experience, the team room facilitated rapid exchanges of information. All primary development was done within each developer's Eclipse environment. Hudson deployed automated builds twice daily to a development server.
JSF provides a standard interface to interact with any component no matter what the underlying library might be. It takes away the grunt work of hooking components up to your back end—no more manual processing of AJAX calls. The first version of AIS wrote quite a bit of marshalling code in order to interact with the server. With JSF 2.0, you access the bean object directly in your XHTML page. What a concept! All of this leads to a more consistent development team experience, one that is more easily embraced by all team members and future maintainers.
For every one developer that is working at a Facebook there are 10 developers working in a corporate IT shop. Corporate management wants consistency, not the bleeding edge. They want it to work and they want their development teams to be effective. They want deployed applications to be maintainable. Our experience clearly showed that JSF was significantly easier for new members to become productive in. We showed that given complex UX designs, JSF could readily support both form and function. Either JSF 2.0 or Ext-JS could have been used to implement the design. However, the team would not have been as efficient and satisfied using Ext-JS as they were with JSF 2.0.