views:

191

answers:

5

I have been given a nasty wake up a while ago when I discovered that my 10 years of experience was really equivalent of about 4 (got trapped in a big company doing the same thing over and over without realizing it) and is now paying a huge price.

Question 1: I did servlets/JSP programming back in the day (2001-2003). Since then there have been libraries like GWT, YUI, etc. Is JSP still the preferred way of building web apps using Java?

Question 2: Because I enjoyed what I was doing and needed to pay the bills, I didn't realize that the ground below me has shifted. How do avoid this in the future? My years of C system programming doesn't seem to matter a lot now to the young guys who talk about design patterns.

+1  A: 

Question 1: No. Now a days frameworks are used to build web applications. For example Struts, Spring, Ruby on Rails. JSP's are just the presentation layer. So, to be able to maintain the code you need to separate into layers. I suggest you to learn a framework. If you have worked with Servlets and JSP it will be easy to understand a framework.

Question 2: You can visit some sites like infoq, TIOBE to check which are the tendencies.

C is still used for web development, some companies have their server side web sites with cgi technology. C is a very powerful language, with it you can do things that you cant with any other language.

If you understand the basics of a programming language then you can learn almost any programming language. Technologies born and die but you have to be able to adapt to new things.

Enrique
'C is still used for web development' - I know, but try explaining that to the 24 year old who interviews you over the phone during the pre-screening interview.
ritu
People who use C for web development should be sentenced to a life of using C for web development.
reinierpost
@reinierpost why do you think that?
Enrique
First and foremost, because C is unsafe for use by earthlings - programming is hard enough without having to chase SEGVs around. Second, it's quite low level which makes you less productive (unless you use good libraries). Third, it isn't as well equipped with libraries and frameworks for web development as other (sometimes equally horrible) languages. And finally, because I have yet to meet a C programmer who agrees with me (although they may concede point three). So I say: ignorance is bliss - let me remain ignorant of your C web applications, and hack away.
reinierpost
An app in maintenance without a huge budget is not easy to rewrite from scratch.
ritu
+4  A: 

I'll throw in 2c woth on question #2....

Patterns are all the rage at the moment, but to be honest some of them have been round for decades and people are rediscovering them (or variants of them). Very few of the patterns are new. There are also many interpretations of the patterns, and some of the differences between the patterns can be quite subtle.

So what am i saying with this? You don't need to learn a crap load of patterns in detail to be useful. Learn about them at a high level, so that you recognise the times when you may need to implement them, and also think back on the software you've created and work out where you could have used them. You can study them in depth when you actually need to use them.

slugster
A: 

Just become an Architect ...

(After minus Edit; ) You got one ; ) , but there is a psychological moment here ... you see from the writing it is obvious that you become "tired" of following all those new concepts , paradigms etc. However you seem to have enough experience and passion for the software development field. As soon as you realize that you will benefit the organization you are working for much more by being an architect and start selling yourself accordingly you would be better off ... until than. On the other hand read all the rest of the answers and spent some 10 years more before getting to the same point ...

YordanGeorgiev
I would much rather appreciate a constructive comment.
ritu
@YordanI think the cruz of the problem is that I feel that my skills are becoming less portable. The longer I spend at a company, the more domain experience I get and the more involved I get in meetings, decision making, evaluation, product future, etc. More time on the same product means less time on learning new stuff.
ritu
A: 

As far as question 1 goes, then certainly within the corporate environment (internal IT within big companies) my experience has been that JSPs are still going strong, and are still a common tool. The servlet API is mature and stable, and JSTL gives you a solid, well tested toolbox of tags to use. Building custom tags is now trivial using JSP 2 tag-files (albeit with certain restrictions).

It's rare to see a "pure" servlet project though. Much more common is using a framework that sits on top of servlets such as Spring. Which can bring it's own problems. I'm currently in a world of pain trying to get my head around the vastness of the Spring 3 API to put together a new project. I'm finding that the Spring documentation is not particularly good for a new developer trying to get up to speed on it.

As for point #2 - don't underestimate the value of knowing C and system programming. It means you know how the machine works "under the hood", and you should be able to better understand the various advantages and trade-offs in VM technologies like .NET and Java.

+3  A: 

Question 1: I did servlets/JSP programming back in the day (2001-2003). Since then there have been libraries like GWT, YUI, etc. Is JSP still the preferred way of building web apps using Java?

You need to realize that any framework/library which was released around and after that time are almost all built on top of JSP/Servlet. Basic knowledge and understanding of JSP/Servlet is still mandatory to understand what the framework/library does "under the hoods". Those frameworks usually takes the work from your hands with gathering, converting and/or validating of the request parameters and updating the model values with them and associating the view with the model so that you basically end up with a view (JSP page) and a model/domain object (javabean).

JSP/Servlet is still suitable when there's means of a small/lightweight application with one or two forms. But if it gets larger or you'd like to add models/views on demand without any need to (re)write the (specific) controllers, then a MVC framework is the way to go.

YUI is by the way more client side oriented. Next to GWT you have also choice of Apache Struts2, Spring MVC and Sun JSF. You'll also notice that JSF2 has pushed Facelets forward as the new view technology to replace the good old JSP. I would say JavaEE6/JSF2/Facelets is nowadays the way to go if you want to dive in MVC.

Question 2: Because I enjoyed what I was doing and needed to pay the bills, I didn't realize that the ground below me has shifted. How do avoid this in the future? My years of C system programming doesn't seem to matter a lot now to the young guys who talk about design patterns.

I understand what you're talking about, I realized that after years of doing almost the same thing at IBM day in and out. In my case the key to success was to put some (free) time in reading and learning about and playing with the new stuff, mainly with information gathered by participating at programming forums like forums.sun.com and (since recently) stackoverflow. Also jobhopping did help a lot in gathering new experiences and knowledge. I after the boring job at a big company dived into JSF and jobhopped to a smaller company in this direction. I would say, put some time to hobby/play with the new API's and frameworks, starting with exploring what the fresh new Java EE 6 has to provide. Try to poke around for another jobs which involves the new technologies, do some interviews, show that you're eager to learn them. Or talk with your boss/manager about the new technologies.

BalusC
Thanks, I'll have to look more into frameworks. The problem isn't that I wasn't reading, it's just that keeping up with everything outside your work are is overwhelming.
ritu
I understand that. I also do it less or more in my free time. Participating with forums like Stackoverflow (I used forums.sun.com before) will also help a lot in learning about new API's/frameworks/libraries.
BalusC