I was given the opportunity recently to work on a from-scratch project. We are using JSF for the front end, Hibernate for the data persistance teir, and Spring to wire them together. The app is running in WebSphere Portal, with a DB2 database, both on Linux. RAD 6 is our IDE.
It has been a blast to build a full application from scratch. We are learning a lot about the new technologies, but I think I got the most out the “intangibles” of the project: working with people, managing the project, etc.
Couple of things I have learned on this project:
- Don’t spring new technologies, i.e. Hibernate/Spring (please forgive the pun) on people when you yourself are not exactly a seasoned developer on them. While this project is supposed to be a chance to learn new things, too many things at once is hard. It took us a lot longer to get things working together than we had hoped. We did make our dates, but it was a long road with some potholes.
- I need to do a better job of breaking up units of work (managing the project). We were all so excited to start the project that we jumped in with some prototyping and “forgot” about that aspect. I really like the idea of XP’s User Stories and wanted to add that to the experiment, but I was afraid to add yet another new thing to the pile, and this was a small project, so I didn’t push.
- Working in an open area is a good and bad thing. We kept stealing conference rooms for a whole day, and holed ourselves up in it for whatever time we could spend. This was nice from the perspective of communication and problem solving, but is difficult for heads down focusing on a single piece of code. I like my own space when I am developing new code from scratch. I can “groove” much better. Also we had to move occasionally, which was irritating.
- Hibernate is not easy. Its easier, but not easy. Hibernate development is very much an iterative process: you generate the first batch of hbm.xml files and then tweek them as necessary to get what you want. Part of the problem here could be me, as I am not very seasoned at building SQL data models, but I know what I want, and it took quite a while to get Hibernate to give it to me.
Also, we had the classic problem of Lazy Initialization that took weeks to figure out. Hint: when you want to keep your Data model around for a while (when wouldn’t you), that you make sure you think about how Spring and Hibernate work regarding session management. We are using the
OpenSessionInViewFilter from Spring, at a level above our JSF code, to hide the management of HIbernate Sessions. Yuck. - JSF… Where to begin… I think I’ll talk about THAT gem in another post someday…
Post a Comment