|
I
recently received an email through my website about what is the future of
certain technologies and how one should move forward especially if he/she has
lost touch with some of the new technologies. I thought the email and my
response to it might be useful to the community so I am posting them here as they
are (without any changes)...
<email>
I
was pretty impressed by your thoughts. I think your ideas and presentaion of
problems was real good. I found your blog by accident on searching for my
destination which direction move about the technologies in J2EE with
EJB/Websphere/RAD/WSAD/DB2 and wondering about spring/hibernate/EJB3 how I can
adopt them within our infrastructure. Pretty much confused. This maily because
I guess I lost touch with new techs, whatz happening there. Recently came
across SOA forum meeting and found it was mazing. At the same time felt very
in-secured about my self. I am sorry for writng things with no clear picture
but this how I am going through today. Hope I would find some light and
direction from you and your site in future.
</email>
<my
response>
Thank
you for your note. While I will continue to post on my website (unfortunately,
it doesn't happen as frequently as I would like) let me respond to your email
as well.
First,
it's not your fault that you feel insecure or are confused about the direction
of your career and the direction of technology market as a whole. Technology
keeps changing fast. New frameworks, specifications and tools keep coming out
all the time. If for some reason, you don't use them, you feel like being in a
whole different world in a pretty short period of time.
This
has happened to me. I was on an analysis/architecture project for some time.
While that experience was very valuable, when I finished, there were Hibernate,
JSF I had absolutely no idea about. Additionally, technology companies
intentionally keep churning out new products and programming models frequently
to continue to make consulting money.
Here
are some pointers that might help you move forward
1.
Try to have a fairly good understanding of tools from at least one vendor. For
example, I specialize in IBM offerings: WebSphere, RAD, DB2, Portal, Content
management etc. I don't know JBoss and WebLogic as well but that has never been
a problem. Knowing just Java/J2EE is not enough. You must know tools. Recently,
we lost a developer because he couldn't even successfully import projects in
WSAD/RAD. He was good in writing code but we had to spend a lot of time holding
his hands, which was quite ineffective for the whole team
2.
Never forget to think of a problem in terms of architecture and design. I
always ask my developers to think in terms of business problem -->
architecture --> design --> code. This becomes more and more important as
you transition from programmer to developer to designer to architect and so on
3.
As far as technologies and framework go, focus more on J2EE than on Spring and
Hibernate. There are plenty of applications deployed on J2EE and they are
likely to go to Java EE 5 and EJB 3 than to Spring/Hibernate. Why? Because they
will be forced to migrate when they migrate to newer versions of the
application servers they are using. For example, pretty soon, WebSphere 5.x
will not be supported so companies will be forced to upgrade from J2EE 1.3. And
it's easy to go from J2EE 1.3 to 1.4 or 5 but not to Spring/Hibernate. Even for
new applications, I see Spring/Hibernate being used more in conjunction with
J2EE than standalone. It takes a really good architect to create a pure
Spring/Hibernate/POJO based enterprise application - very few of them exist and
they are not available. Knowing Struts is a must though. It's an old framework;
pretty much used everywhere - old and new projects alike. I don't see JSF
replacing struts any time soon because of lack of available JSF skills
4.
SOA and web services - definitely the way to go in the future. As you may have
seen on my website survey, that is what people think as well! Why are SOA and
web services important? They solve the next level of complexity in IT. Remember
when HTML was hot and HTML programmers were paid a lot of money? Now, you can
create an html page in Microsoft word (creates ugly code though)! Remember when
if you knew C language, you were considered smart (and geek)? IT industry wants
to solve more complex problems and in the process, it invents the next level.
Lower level languages and technologies, while important, don't remain lucrative
forever. Java will probably face the same problem (not in the near future
though) in the sense that writing Java programs will get easier and easier
requiring lower level skills. But, creating SOA/web services based systems will
require advanced skills and knowledge of the latest tools and specifications.
If you have these skills, you will bring more value to the table.
To
summarize,
1.
Focus on at least one tool
2.
Always know that business problem drives the IT solution 2. Stay with the
specifications (J2EE) 3. Don't ignore SOA and web services
Hope
this helps...
</my
response>
|