Thursday, 16 June 2016

ADF Faces vs JSF (Taskflows)

You might be familiar with the term ADF; it stands for Application Development Framework. It is a framework by Oracle that simplifies application development, while enjoying all the best practices and standards built into the framework. I would put it in this way: if you want to create the same productive application using another technology stack/framework, you may need to code a whole lot more for it.

In fact, ADF Faces is built on top of JSF standard framework (JSR-127), while offering a whole lot more functionality and improvements to it such as new UI components and simplifies web development. However, some people felt that the learning curve is too steep for ADF, especially the ADF BC (business components). That itself can be another post of its own. In this post, I shall focus on the differences between ADF Task Flows and JSF Task Flows.


JSF Page Flow
ADF Task Flow
The entire application must be represented in a single page navigation file (faces-config.xml). Although you can have multiple copies of faces-config.xml in a project, the application loads these files as one at runtime.
The application can be broken up into a series of modular flows that call one another.
All nodes within a JSF page flow must be JSF pages. No other types of objects can exist within the JSF page flow
You can add to the task flow diagram nodes such as views, method calls, and calls to other task flows
Navigation is only between pages
Navigation is between pages as well as other activities, including routers
Application fragments cannot be reused
ADF task flows are reusable within the same or an entirely different application. After you break up your application into task flows, you may decide to reuse task flows containing common functionality
No shared memory scope between multiple requests except for session scope
Shared memory scope (for example, page flow scope) enables data to be passed between activities within the task flow. Page flow scope defines a unique storage area for each instance of an ADF bounded task flow
Can be converted to an ADF taskflow
Cannot be converted back to JSF Page Flow

Friday, 10 June 2016

Recipe for a successful team (Part 2)

You might be familiar with this scenario, where perhaps someone close or within your circle of friends ended up with some form of depressive disorder due to unsafe and dysfunctional culture in the workplace. And, sometimes things start to get better with a change in job.

Yet it is more important to recognise the effects of stress in the workplace. Once stress builds up, you very much can't focus and do well in your job.

One of the main culprits of stress in the workplace is Psychological Safety. The lower psychological safety is in the workplace, it decreases the likelihood of workers asserting certain behaviors that increase overall productivity.

Fortunately, I have, in my workplace, an effective manager that exhibits some good managerial traits to develop psychological safety within the team. Someone that I am sure I can learn a lot from, and also a good friend for the last 5 years or so.

Here are my 3 key observations for improving psychological safety:
  1. Growing with people. This creates value for employees and stakeholders, and in turn increasing personal and business value. Simple gestures such as occasional breakfast/lunch to build relationships and subtly creates guidelines for interaction and conflict handling, involving employees in achieving the team's goals.
  2. Acknowledge your vulnerability. Come on, do you really trust someone who can't be vulnerable? As for me, I trust someone who openly shares their failures and learning points so that others benefit from it. I know that after my own struggles, I try to share this with someone I can trust, be it in the workplace or at home. This doesn’t make one weak; it makes you safe and a secure base, which creates a culture of psychological safety for your team.
  3. Use curiosity to your benefit. Ask lots of questions. This forces people to generate answers. By understanding the different levels of accountability in different people, you can understand why they behave in a certain fashion, for example.
One of the common scenarios that can happen is this. Imagine yourself in a team meeting and you dare not ask questions to clarify the next task you are about to embark on. This has definitely got to do with feeling insecure and afraid others may perceive you as unaware. As you continue with your tasks.... this has got to be one of the most unproductive times spent at work.

Low psychological safety is a problem in so many workplaces everywhere. And leaders need to start brainstorming on ideas to create a good culture in your team. If you have not given it much thought on improving psychological safety, you might want to start today.

Thursday, 9 June 2016

Recipe for a successful team

After graduation, I have been in the workforce for over 5 years. Since then, I have been developing my career on various levels; technical and non-technical related. I spent some years working in a public service agency, where I worked with a local team in managing software projects.

I have since moved on to an MNC, with its headquarters in the USA, working with a diverse team comprising of members from the USA, Beijing, and Singapore. At this company, I was on the ground, sort of, working on the nitty gritty - research and development work, instead of a high-level project management role.

Every now and then, I'd like to reflect on What it takes to be a successful team. Surely, by now you would have known that fellow tech company, Google, is one of the world's leading companies. In that aspect, they produces some of the most successful products and most importantly, successful teams.

Recently, I came across an article by Julia Rozovsky, an analyst from Google, People Operations. After reading it, I could not agree more on the contents of it. In her short post (link below), she described how great team communication and interaction is the key to a successful team. 

"Is this applicable for my team? How can I apply the learning points from Google effectively?" 

These are some questions coming into my mind while reading it. I recommend all, especially those who are in people management or development role, to read it. 


In my opinion, some key points (excerpt from the article):
  1. Psychological safety ranks as the most important element in a running a team. It explains how taking a risk seems simple, yet it's difficult at the same time, due to multiple reasons. A common example; you opt for continuing without clarifying anything, in order to avoid being perceived as someone who is unaware?
  2. Self-protection occurs naturally in the workplace, yet it is bad for effective teamwork.
  3. The safer team members feel with one another, the more likely they are to admit mistakes and to take on new roles. 
  4. Individuals on teams with higher psychological safety are less likely to leave the company, they’re more likely to harness the power of diverse ideas from their teammates, they bring in more revenue, and they’re rated as effective twice as often by executives.
So the important question now is:

How do we foster high Psychological Safety in the team?