Web Frameworks - which one should I learn?
I've seen a lot of talk about Web Frameworks these last couple of weeks - particularly JavaServer Faces, WebWork and Spring. There's also been great articles posted comparing Spring and WebWork as well as an Introduction to Spring from TSS. Spring, WebWork and JSF all look like excellent frameworks to me, but I also continue to believe that Struts is a great framework. And I would go so far as to say that it's the best web application framework. Yep, I said it - Struts is the best web application framework to learn if you are a web developer wondering what to learn. Why? Because it will get you a job.
I've continued to receive a fair amount of calls and e-mails over the last couple of weeks - and they're all calling because of my Struts experience. Good luck in finding a company that wants you to build their web application using WebWork or Spring. Maybe someday I'll be lucky enough to hire employees for Raible Designs and build web applications in my own office with my own employees. Then we'll get to choose whatever technology we want to build customers' apps. Until then, I'll stick with Struts and continue to be an employed developer.
I strongly believe the best way to learn anything is to get paid to do it. I've learned Struts over the past couple of years, not because I wanted to, but because someone else wanted me to - and they paid me to do it. Of course, there are some companies that will probably pay you to learn WebWork or Spring, but most would rather not.
Another thing to consider is that WW and Spring will probably someday develop "migrating from Struts" documentation. Sounds like a good idea to me - until then, and until someone pays me to learn the others, Struts is #1 for me.
Now it's your turn to tell me why my logic is flawed... if you can. ;-)
Posted by Kris Thompson on October 17, 2003 at 08:46 PM MDT #
Posted by Chris Winters on October 17, 2003 at 11:22 PM MDT #
Posted by Erik Hatcher on October 18, 2003 at 04:04 AM MDT #
Posted by Don Brown on October 18, 2003 at 05:11 AM MDT #
Posted by Geert Bevin on October 18, 2003 at 07:01 AM MDT #
Posted by UWYN's blog on October 18, 2003 at 07:13 AM MDT #
Posted by Unknown on October 18, 2003 at 07:23 AM MDT #
Posted by Pratik Patel on October 18, 2003 at 09:40 AM MDT #
Pratik, imho that is the case for any software project that would go out of the hands of a small company (and many large ones I've seen). If there are no docs available in the application about the whole structure or how everything integrates, the next one that comes along is almost always in trouble. Your argument that using a very popular technology solves this problem, doesn't solve this issue at all. I had to take over the maintenance of GreenPeace's Belgian website which was written in PHP. Now I know PHP very well and I can tell you that this application is just a huge pile of crap with nothing worth maintaining and several days of work to just figure out how to get to even the simpliest feature. It's the fact that it is crap that lead the previous company to lose the project to me. Exactly the same things can happen with any framework or technology.
I can understand this argument *inside* the same company which is again a non-issue since normally you standardize internally on technologies and provide (in an ideal world) good design docs to all developers. Now honestly, isn't it part of running your business that you don't lose your projects to *another* company. That you are able to continue to satisfy your customer, don't get into a maintenance nightmare and continue to provide great support for great prices? I tend to think that you can do this much better if you use tools that suit you, that correspond to how your mind works, not by just using what everyone uses and swear regularly at how you don't feel comfortable with it. Of course, if you feel comfortable with struts, you should use it, just as you should use RIFE or Tapestry or ... if you feel comfortable with that.
Posted by Geert Bevin on October 18, 2003 at 10:04 AM MDT #
Maybe companies will start wising-up to the other options, or allow me to persuade them to use these other frameworks - but so far I haven't seen that. Also, I haven't seen much good documentation for why I should use other frameworks over Struts. Sure, there's IoC and AOP - but you try explaining that to a manager-type and see if they agree.
Now if I were able to get on a project with a tech lead who was a bit more savvy - that would be a whole other issue. The sad truth is that the last time I was on a project with someone I could learn from was in 2001. This is why I blog so much - to learn from all you guys!
Posted by Matt Raible on October 18, 2003 at 10:46 AM MDT #
Posted by Easy on October 18, 2003 at 11:52 AM MDT #
Posted by Cameron Gray on October 18, 2003 at 12:04 PM MDT #
Posted by Geert Bevin on October 18, 2003 at 12:21 PM MDT #
Posted by Yannick Menager on October 18, 2003 at 11:31 PM MDT #
Posted by Cekvenich Vi on October 19, 2003 at 12:05 AM MDT #
Posted by Matt Raible on October 19, 2003 at 02:41 AM MDT #
Posted by Pratik Patel on October 19, 2003 at 01:13 PM MDT #
Hi Pratik,
I guess I was a bit too extreme by say "doesn't solve this at all" ;-). You're right that the knowledge of exactly the same technology will benefit of course your endeavour of understanding the application structure. (side-thought: a framework is just one technology, there are so many involved ... do you only pick the most popular one everywhere then? Hmmm ... enforcing Oracle on all my customers will surely make the prices rise, not so sure if they'd be happy though)
Now in the case of a badly written application, you'll be in such deep double that learning a technology wouldn't matter much. However, if the technology has been carefully chosen and motivates the developers to write better code and maybe even by-design enforces a distinct seperation of concerns and integration of modifyable application and data flow, then the benefits of having a better written application outweighs by far the mess you get when an unmotivated developer sloppily writes an application to quickly obtain some working results because the framework doesn't feel comfortable.
Anyway, I think we're in fact mostly on the same line of thought. I'm just being difficult ;-)
Posted by Geert Bevin on October 20, 2003 at 06:27 AM MDT #
Posted by domagoj on October 20, 2003 at 04:46 PM MDT #
Posted by Robin Wyles on October 29, 2003 at 05:50 PM MST #
Posted by Robert Dyne on October 30, 2003 at 06:02 AM MST #