I am looking to start work on a brand-new project, something I’ve been thinking about for a while as my first independent sellable project.
It’s broadly speaking a web-based service application, and my first choice, server-language is quite easy… I know Java pretty well from working on Java web-apps in the past.
However my experience doing web-apps involved JSP, Servlets and JSTL… I know the ideas behind newer technologies like Hibernate/Spring but have never used them. So we wrote our own DAOs, handled AJAX by writing special mini-JSP pages that generated XML/JSON pages, etc.
I’m not hugely into the idea that Spring/Hibernate are the ‘only’ or ‘right’ way to do any Java web-project, but they are widely used. On the other hand, not only would trying to learn these increase initial development time, but I’d be using my learning attempts to build a production system.
I remember one of Joel’s early articles said (I’ll paraphrase since I can’t find it)
“regardless what’s cool, always use
the technologies that the lead
developer (or dev team?) knows best”
I wondered what people thought about that?
ps: should this be CW?
Beware the lure of cool new frameworks! I’m currently hacking on a tiny little web app that just has a login, a few mostly static pages, and a few forms to request some information by email. It would have taken me maybe two days to do as traditional Servlet/JSP in MVC style. Instead, since there was slack in the schedule, I decided to use this project to get up to speed in Spring, Spring MVC, and Spring WebFlow. While it’s quite possible that I’m just dense, it took me several weeks to get my head around the right way of doing things, I’m still not totally confident that I’m doing everything correctly, and the application is still not done. Fortunately, due to slack, I’m not in danger of the overall project schedule slipping, but I’m always asking myself if I’m going to have to scrap it and start over.
I have learned my lesson, though: next time, I won’t be the one pushing a new framework unless its one I’ve used for production projects before. That said, I’m glad I now understand Spring (or at least I think I do) and will not hesitate to use it again next time.
So how would I learn a new framework next time? If there’s a project lead (in this case I’m a project lead of a team of one, no help there) I’d use the framework that they put in place. If there isn’t, or if I want to learn a framework that the project lead isn’t using, I’d use it for a side project on my own time. Learning is good. Putting company work at risk by throwing untested technology at it is not so good.