Friday, May 14, 2010

View Point : Challenges of the Professional of the future

Gone are the days when professionals across industries are treated like persons holding just a degree certificate and do what is been told to do. In the recent times, our environment has been greatly influenced by information technology, availability of tools and advanced technologies. Our dependency on technology has been increased. Our life style has been affected. Our life is empty without emails, internet browsing and our pet cell phones. In these times where market dynamics change very rapidly, we all face challenges and especially in creative and knowledge driven industries such as IT, one needs to live by ‘Professionalism’. Given the fact that future will see more demand for skills, there will be challenges faced by all the professionals.

Challenges of the Professional of the future:

Following are the challenges of the future professionals.

a) Maintaining Good Health:
First and foremost – “Health is Wealth”. Keeping the body and soul “FIT and FINE” will be the most important challenge. If we have good health, we can perform better, we can enjoy things around us. Professionals in future need to be health but not money conscious.

b) Retaining, Upgrading Knowledge and Skills:
In the knowledge driven industries such as IT, KPO, Manufacturing etc domain expertise plays a key role. One must have required business process knowledge along with minimum IT skills. Professionals have to continuously learn new skills & upgrade their domain knowledge in order to meet market demands. Upgrading timely knowledge will be a key challenge as one has to gather information from multiple sources. Having right skills & knowledge will help organization build subject matter expertise and help customers solve their business problem.

c) Exhibit Work Ethics at Work:
Good work ethics such as right attitude, positive outlook, punctuality, sincerity, good behavior towards colleagues, respecting all, cooperation & communication with team members etc are very important to become a successful professional. These ethics will continue to be there in future also. Challenge will be to exhibit these qualities in a global & competitive work environment.

d) Display Leadership Skills:
Leadership skills will be the key in shaping up & driving the team towards common vision. Leadership skills coupled with ‘lead by example’ attitude will help the organizations to fulfill their objectives. Future professionals will see challenge of nurturing subordinates, motivate them, guide them & mentor them to climb up next ladder. Future leaders would need to build ‘Thought leaders’ within the organization.

e) Uphold Integrity:
Future professionals will see challenge of upholding the integrity of the organization. They need to abide by the policies & procedures laid by the corporate. Future professionals need to ensure that company’s confidential information is not compromised with outsiders. Just to give an example – if we are working on customer project whose data is very confidential & poses competitive threat, then, as professionals, we need to uphold the data integrity and make sure the confidential information is not leaked or compromised with outsiders.

f) Create & Promote Healthy Work Culture:
Creating positive & healthy work culture not only attracts new talents but also allows people to give their best. Creating & promoting healthy work culture will be key challenge going forward in order to groom new talents & retain them. Building open-minded, friendly and participative work culture will not only builds brand but also helps to bring out best outcome. It helps to be more productive at work. Organizations can promote healthy work culture through cultural programs.

g) Adapting to Multi Culture Environment:
Knowledge driven industries have opened up market for professionals to work in a global, competitive and heterogeneous work culture. Adapting to multi work culture will be the key. Understanding the culture, people and language along with mixing up with people will be very challenging. We need to understand one thing – no culture or language is good or bad. We need to respect every language, culture and attempt to understand the importance.

h) Effective Communication:
Communication is the key and will be key challenging area in future too for professionals. Various channels such as e-mail, blogs, magazines and other mediums will play vital role in effective communication.

i) Display True ‘Professionalism’:
Display true ‘Professionalism’ involves not mixing up personal matters with professional matters, being fair to everyone & not biased towards certain things. It also involves professional communication with each other such as email etiquette etc.Future professionals will have to work towards building up professional work culture.


Conclusion:
Rapidly changing environment, availability of resourceful information, quicker decision making, light speed communication and technological innovations have really changed the way we think, live and conduct business transactions. In future, there will be potential challenges for people in creative and knowledge driven industries. Market conditions and demand for skilled labors will make work environment intellectually challenging. With growing business needs, future will see lot of opportunities for professionals.

Future professionals need to be smarter and equally good at managing people and their emotions. Being a professional by look and attitude is very important as it builds healthy environment around the organization. As people work in a cross cultural global environment, being professional is the need of the hour. Adapting quickly to changing environment and continuously learning new skills will also be a key challenge. Future market demand will surely throw up professional challenges in handling people and situations. It is up to professionals to bravely face the challenge and accomplish the given task with true ‘Professionalism’.

Thursday, April 2, 2009

Looking through + ve window

Every morning or evening when I pass from floors to floors or cubicles to cubicles at office, my ears hear the same conversation. It’s about recession, economy or stock market. Everyone is curious to know when will economy pick up its momentum? When will recession end? When will my stock prices move upwards etc? Sometimes I wonder – do we have answers for all these questions? I guess, no.

I believe that some things in this world are beyond our control. We talk about economy. Who knows when will economy improve? We can only speculate or predict. In reality, it takes its own course. It’s quite natural that we think about all negative & positive aspects affecting our daily life style.

In these uncertain & turbulent times, one should think positive about our future & life. Sometimes I feel there is no point discussing or worrying about things like recession. When we look at our past, people have survived bust & worst times. They bravely faced all situations. They believed in themselves. They knew worst time would be over & welcomed good time. Why don’t think the same way?

I believe we should bravely face the situation & adjust to all conditions as it comes. Don’t crib or blame the situation. Instead of discussing matters beyond our control, invest time in something productive. Discussion or thinking is required to certain limit. If it exceeds, leads to frustration.


My Suggestions:

a) Stay Focused
b) Upgrade your skills
c) Develop some new hobbies like reading books etc.
d) Believe in yourself & be courageous
e) Enjoy what you have in life
f) Continue your daily routine
g) Stay connected with your friends

Don’t worry too much. As every dawn brings new ray of hope, let’s look everything through ‘positive’ window.

Sunday, March 15, 2009

My View Point on ' Thought Leadership '

I was amazingly fascinated by word – “Thought Leadership”. As per definition, Thought Leader is a person who is recognized among their peers for innovative ideas, demonstrates confidence to promote & share those ideas, drives & mentors team towards idea implementation. Initially, I was wondering how different is this jargon from traditional management concept – “Leadership” but took some time to understand & unearth benefits of it on my own.

Although I was convinced about theoretical concepts & meaning of Thought Leadership through web sites & magazines, I never realized the importance of it. After a successful long project execution (project spanned across 14 months with 50 team size) I realized the fact that how ideas implemented contributed to project success in a big way.

From my experience, everyone is a thought leader in their own ways. Anyone who advocates an innovative idea, leads by example, encourages & drives the team towards problem solving or better solution, appreciates ideas by others, solves day-to-day problems is a thought leader.

Traditional Management that focuses on Leadership gives more importance to communication, inspirational influencing silks, inter-personal skills etc to become an effective leader. On the contrary, thought leadership focuses on innovative ideas that make day-to-day impact.

From my experience, to become a thought leader, you don’t need great communication or interpersonal skills but a conviction to demonstrate an idea, confidence & a strong will to implement it and benefit the project or team or organization in whatever way possible.

During my recent project execution phase, I worked with many junior team members who could not speak well or express their thoughts but demonstrated ideas through logic ( java programs) & prototypes ( html pages). Idea we implemented had an impact on overall project in terms of way we addressed or solved common business problems.

According to me, thought leaders focus on smaller scale changes – be it within team or project. For example - an idea implemented in a ‘build process’ can improve overall build cycle time & make life easier. An idea implemented in a ‘project life cycle’ can insulate risks. Finally what counts is an ‘Idea’.

To become a thought leader one needs to immerse in their professional domains, understand problem domains & see if an idea can contribute to project success or reduces time & effort or increases productivity or saves cost or a value add.

People at middle & senior management levels should encourage ‘thought leaders’ & provide them an opportunity to generate & implement ideas. For a large project, project managers need to generate many thought leaders within the team so that at all levels leaders drive the team to common vision – “Successful project execution with quality”. Remember, “Speed of the BOSS is speed of the TEAM”. If you can successfully generate future thought leaders, you have followers who will become tomorrow’s potential thought leaders.

Tuesday, January 27, 2009

Shifting from ‘Form’ to ‘Action’ based Validation Approach – Pros & Cons

Most of the web frameworks such as Struts1x & Struts2x provide out-of-the-box implementation for ‘form‘ validations. There are two ways to implement validations.

a) Manual Validation: This involves overriding validate() method on form bean or an action class, coding for all validation rules & adding error messages programmatically.

b) File Based Validation: In this approach, validation rules are externalized to XML files & are configured for a form bean or domain object or value object (any POJOs). Even error message keys can be picked from resource bundle & configured in xml. Since it’s a configuration based, provides more control & better manageability over manual validation.

Let’s deep dive into file based validation approach and analyze its merits & de-merits.

In Struts1x, validation revolves around ActionForm beans where form bean is configured in a validation xml (validation.xml) & all validation rules are configured for form attributes.

Pros:

a) Central validation xml. No hard coding in java code; everything can be configured.
b) Form bean validation rules can be re-used across different modules. For example: if form bean with standard set of validation rules is used in create flow, it can be reused in modify flow as well (to re-use the same form across flows, use ‘page’ concept)
c) Single Java class with multiple methods can act as custom validator class.
d) Maintenance of form & validation xml is easier.

Cons:

a) Maintaining ‘state’ of form bean is bit tricky since same form used across different modules can cause session data corruption. Utmost care should be taken to clean up or update the session form values. If same form is not used, then separate forms have to be kept in session or any other scope in order to achieve desired functionality.
b) Form beans are tied to particular validation framework ie, each form bean should extend ActionForm or ValidatorForm (if commons validation framework used) class in order to fire validation rules. Form beans in isolation cannot be re-used.

Let’s look at validation approach adopted in Striuts2x.Struts2x uses XWORK Validation framework. Here validation is action based and not form based i.e., each action class has validation xml (Action-validation.xml).

Pros:

a) Modular page design i.e., one action class per page & one action-validation per page.
b) No from beans. Any POJO (domain object or value object) can act as form to capture form input values.
c) Action class or separate POJO that captures input values is not tied to any web container or validation framework. Therefore, they can be reused without any second thought.
d) Reusability of custom validators.
e) Supports validation chaining.

Cons:

a) Many validation configuration files. One per action class.
b) Cannot have single custom validator class with multiple methods.
c) By default, all action classes are ‘prototype’ scoped but if separate domain object is used to capture form input values & is reference from an action class, then maintaining of ‘state’ becomes tricky.

I have worked on both Struts1x & Struts2x & here is my final take.

- Struts1x commons-validation framework is very well matured & has lot of in-built validators & information available through community site, discussion forums & discussion threads. On the contrary, Struts2x validation framework has not matured enough & has very few built-in validators. Very little information is available through different input sources. But, one can meet desired validation requirements through trial & error, own learning’s.

- Struts1x is tied to web container & validation framework. On the other side, Struts2 validation framework is not tied any container. Action classes, domain objects can be re-used in isolation.

My Suggestion:


Both Struts1x, Struts2x has pros & cons and is up to enterprise architects to decide which one suits the BEST. But, I would recommend you to use Struts2x since it offers lot of features over Struts1x such as plugging-in different view technologies other than JSP, heavy AJAX tag support, POJO based action class, in-built spring, sitemesh, tiles support, interceptor concept, reduced configuration etc.

Like any other web frameworks, Struts2x doesn’t provide more options/features/control in terms of form validation compared to Struts1x in my opinion but this can be resolved through proper design of validators or by writing custom validators. If one is getting elephant minus tail, I would say, still it’s a good deal. So, embrace Struts2x without second thought & move away from ‘form’ based to ‘action’ based validation approach.

Friday, January 23, 2009

Why I ‘Admire’ & ‘Respect’ Google?

After penning down topics on ‘hard core’ technology, I am attempting to write something off-track.

Being a hard core Java/J2EE consultant & a strong supporter of open-source technologies, I try to keep myself updated with technology innovations that happen in & around the world. At the same time, consume these services as an end user and appreciate the technology, service offerings that benefits millions of people.

As people say, ‘Inventors’ make up something completely new from scratch but ‘Innovators introduce things as if they're new. When I think of ‘Innovation’, first thing that strikes my mind is ‘Google’. For sure, I am not the first to admire ‘Google’. Many people have written about it & experienced their products.

I am one of the million consumers who use Google products in day today life. I can’t imagine life without ‘Google Search’, consumed by millions of users on this earth.

I really admire Google products & their innovative ideas. I admire people at Google, who dare to think through & implement these ideas. Every concept or an idea from Google is ‘Classic’ & realization of an idea through high quality products is still worth flattering. I have seen very few companies who share & let millions of users consume services free of cost and Google is an exception.

I have personally experienced many Goggle products - Gmail, Google Maps, Picasa, Blogger, Google Talk to name a few and trust me, they are super cool & outstanding. One common observation among all these products is – quality & performance. These products are classic in nature & speedy in response.

Like many other, I admire and respect Google because of their outstanding, exceptional thinking & technological innovations.I Love Google.

Wednesday, January 21, 2009

Choosing Apt Web Layout Technology

Over the years, I have designed and implemented two popular web layout technologies – Struts Tiles and SiteMesh. In the beginning, I was very new to layout technology and had very little knowledge. Once my project architect asked me to use Struts Tiles for JSPs. I was wondering why to use such technology if everything can be done in a single JSP or separate the components of single JSP into bits & pieces and finally include it in main JSP page. After completing & supporting application for some time, it struck my mind “real benefits” using layout technology.

Every web application has common look and feel & has common content to be displayed such as header, footer, side menu, copyright footer etc and these pages appear in almost all functional pages. Layout technology makes managing & maintaining these common resources easier with minimum effort & less impact.

From my experience, I see lot of real benefits using layout technology.

Merits:

a) Separate content from layout
Layout allows you to decouple content from the structure. Layout deals with how content should be presented & content deals with ‘what gets displayed’. So, essentially we are NOT mixing functional pages with commonly included pages. This makes life easier during application maintenance because you know where to concentrate & isolate the problem.

b) Allows to structure or divide the page logically ( ex: header should come on top, footer on bottom etc)
Layout provides more control in designing how content should be displayed.
No doubt, logical division of components can be done using JSPs, but there is no central control or involves more time if modifications are to be done.
Imagine, if you want to change the structure say move the copy right footer above general footer, then you end up making changes to all your JSPs which takes away your time.

c) Reuse the layouts across site
Once layouts are designed & coded, they can be reused across sites for functional JSPs.

d) Single or central place for modification
Instead of including JSPs, if we use layout and include pages dynamically , duplication in functional pages can be avoided. So, the catch is – if you include individual JSPs in your functional JSPs, it takes effort to modify & re-compile as you are touching many JSPs. Instead, if you have a single layout & include your JSPs , there is only one place where you can modify & changes are propagated across all functional JSPs within no time. Also, if you want to add any conditional statements around your included JSPs, it can be very well done in single layout rather than touching all JSPs.

BIG question? Which layout technology suits my application?

Well, from my experience Tiles is good but after working with SiteMesh, i see lot of plus points using SiteMesh over Tiles.

Tiles is an implementation of ‘composite’ pattern where is SiteMesh is a ‘decorator’ pattern implementation.

One issue with Tiles is - for each JSP forward, you need to configure ‘Path’ in struts.xml under action mapping & end up repeating ‘path’ for all JSP forwards even though your layout is same. For whatever reason, if you change the path name, you will have to change in all places. So, your JSP is tightly tied to path and all JSPs are tightly coupled to tiles layout. If you want to change the layout technology, you have significant changes in the configuration.

On the contrary, if you use SiteMesh, there is no JSP tie up with layout at least in struts.xml. You can create a single decorator & apply this decorator for a set of JSPs. If you want to use different decorator, just remove the JSP entry from decorator.xml and add it to other one. So, there is ‘loose coupling’ & switching to newer layout technology is much much easier.

Overall, maintenance of application is easier in SiteMesh than in tiles since SiteMesh has fewer configurations & not tied to any view technology. But, Tiles has some features such as decorating error pages like 404,500 etc which is not there in SiteMesh.

I have used SiteMesh. It’s Simple Yet Powerful !!!.

Monday, January 19, 2009

Struts2 Pain Points & Remedies

Recently, I worked on Struts2 based web application and discovered some pain points. Below are the pain points & remedies:

a) Performance:

Problem:
Struts2 comes with lot of goodies but at the same time slows down performance especially page response times. If you closely look at Struts2 architecture, there are many layers and that's why Struts2 is able to give lot of flexibility & control at all levels since there is ‘loose coupling’ across all layers including page rendering. Struts2 internally uses freemarker templates (.ftl) with OGNL EL for page rendering. Each web component such as textfield, label, form, checkbox etc have separate ftls grouped under ‘themes’ (Struts2 has themes – simple, xhtml (default), css html and Ajax)

While OGNL is more 'powerful' and 'robust' but consumes more processing time due to its inherent nature - Object traversal for indexed properties. While OGNL is very good where there are complex object structures such as table, Tree etc (where traversal is complicated), but for applications with simple properties, it turns out to be expensive.

Remedy:
i) If you have more text fields & labels on the form, better write a separate tag library similar to Struts1X and modify tag class in struts-tags.tld.
ii) Try to use freemarker template cache which caches page processing for a time interval specified in the freemarker.properties.
For other optimization techniques visit Struts2 site -
http://struts.apache.org/2.x/docs/performance-tuning.html

b) Presentation Component Placing:

Problem:
In Struts2, if default theme – XHTML is used, you cannot put two text fields or any other components side by side or adjacent to each other. Reason is – Struts2 uses freemarker templates internally to render the components and these components have extra html table row - tr , which makes components appear on next line instead on same.
Remedy:
To solve this, you need to customize all freemarker templates ( text.ftl,form.ftl,label.ftl etc). You need have your own ‘theme’ and put all the customized templates under theme. Specify the customized theme in your struts.xml against ‘struts.ui.theme’ property.

c) Decorate Field & Action Error Messages:

Problem:
Struts2 has built-in field & action errors for displaying form validation & action validation errors.Howeever, doesn’t give more control over decorating (put your own border around message, put an error image etc) or customizing error messages through any of its tag libraries.
Remedy:
If you need to customize your error messages, you need to modify fielderror.ftl & actionerror.ftl templates. Add your own presentation or display logic. Of course, you need to know bit of freemarker syntax.