Thursday, April 24, 2014

How to Interview for New Skills

Someone recently asked me to recommend interview questions for a company looking to hire a Salesforce Administrator/Developer.  This question is particularly interesting for small nonprofits and companies that are looking to bring in knowledge and skills that don't already exist in the company.  How do you ask questions and judge the answers if you can't already answer the questions yourself and aren't sure what to ask?
What do your questions look like?

Consider what you stand to gain or lose by asking questions you do not understand.  For example, I was asked once if I had any experience with the "Apex Exchange".  While this sounded unfamiliar at first, I figured out that they were asking about the "AppExchange" and simply not pronouncing it correctly.  The fact that the interviewer would ask this question said a lot about what someone might expect while working there.

Here are some questions that anyone should feel comfortable asking:
  • What most helped the job candidate pass certification exams?  (Hopefully this reveals extensive and varied experience with Salesforce in the real world.)
  •  What challenges have been the most interesting in Salesforce and why?  (This may give insight into what they find challenging technically or collaboratively.)
  • And how did they find their way through that challenge?  (Hopefully they can describe a process of discovery and growth.)
  • What do they like the best and the least about the Salesforce release cycle? ( Hopefully this reveals that they re-engineer as needed to work with new features.)
It is important to hire someone who can demonstrate an ability to learn, grow and problem-solve independently as well as communicate well and understand the needs of others.  My blog post about a video, 'The Expert', shows some examples of what businesses want to avoid.

For interviewers without specific skills, the need for someone who has those skills is coupled with a need for someone who can communicate clearly and make you feel confident with their process.  If no one in-house has the technical experience, then you really have to decide if applicants have the ability to find information and solve problems independently while bringing all the stakeholders along.

Friday, April 18, 2014

Salesforce Flow Using Record IDs at the Start or at the Finish

Salesforce Flow can be combined with Visualforce pages to provide greater flexibility and automation to the user interface so that Salesforce users have fewer opportunities for mistakes. 
Racer X doesn't always like to start with the group.

 

Start

By invoking a Flow through a Visualforce page, you have the option to create a button on the particular object you intend to manipulate.  In this example, a button on the Lead object is configured to access a Visualforce page that invokes a Flow to convert the Lead.

Because the button exists on a specific record detail page, the standard controller makes the record ID accessible for the specific data being displayed when the button is clicked.  This means that the record can be converted without additional Apex code.  The Visualforce page would look something like this:

<apex:page standardcontroller="Lead" >

    <flow:interview name="LeadConversion">
            <apex:param name="thisLeadID" value="{!Lead.Id}"/>
    </flow:interview>

</apex:page>

 Finish

Finishing the Flow by bringing the user to a specific record detail page is more difficult. The easiest solution by far is to provide the information and actions the user needs as part of the Flow rather than as something they see after the Flow is finished. 

But even the complicated solution, adding Apex code to a custom Apex controller or extension to specify a finishlocation, is not too difficult.  Simple code enables Salesforce Flow to finish on record detail page. Even so, there are some considerations for defining a finishlocation:
  • Visualforce is required to specify a finishlocation and only URLs in your Salesforce instance can be specified within the finishlocation attribute on the Flow according to documentation
  • For variable finishlocations, an Apex controller is also required
  • Rather than referencing variables as part of the finishlocation, use a variable in place of a finshlocation on the Visualforce page
Here is a simple method to add to your Apex controller code to use a specific record ID in the finish location:

        public PageReference getpRefFinishLocation() {      

            String temp = 'home/home.jsp';
            if(myflow!=null) temp = string.valueOf(myflow.RecID);
            PageReference pRef = new PageReference('/' + temp);
            return pRef;

        }

Use code like the example above to access a variable, RecID in this case, from your flow and incorporate that into the URL for the page users see when they finish executing the Flow.

Friday, April 11, 2014

Provide Mobile Users with a Rich Experience Using Flexipages and Salesforce1

How do you make the most useful data available to users on a mobile device?  You may want to limit text and reduce the need for swiping and scrolling.  Think about the types of activities you are most likely to perform using your phone – texting, calling, photographing, listening to and watching or just looking.  We love the multimedia capabilities and the rich data we experience at a glance with mobile devices.  Salesforce1 provides an important new feature to help you create a more engaging and mobile-efficient interface for your Salesforce data.
Red flag understocked merchandise.

 

Flexipages


Make use of Flexible Pages, or Flexipages, to create a more engaging and mobile-efficient interface for your users by providing useful graphics and text in record lists directly off a tab.  Mobile users should be able to get as much data as possible in a glance and images can help make that possible.  For example, you can use image formulas to display graphical representations of a record’s status.  For an Opportunity, you might add an image formula to represent where in the pipeline each record happens to be.  This way, salespeople who are on the road can glance at a list of records to determine which need the most immediate attention rather than swiping and reading through a list of text.

Unfortunately, early Salesforce1 releases don’t support image formulas in the tab view.  Tab fields are determined through the Search Layout options, these are the fields users see when they select an object tab on desktop Salesforce, and image formulas have historically been useful here.  Yet the first time a user selects an object tab in Salesforce1, it won’t display images.  While this may change with later releases, there is another option available to early adopters as well.


For the most rich data experience, you can bypass the object tab using Flexipages and make data with images available with a single tap on the Flexipage tab.  Flexipage tabs access the first few fields of either a specific list view or recent items, both of which can use image formula fields.  Note that for recent items on a Flexipage, the fields come from your defined compact layout for that object rather than the familiar fields your users see in their desktop experience.


Flexipages also give you the ability to combine multiple data objects in a single list to even further reduce the tapping and swiping required for accessing the most critical data with a mobile device.  If you use the recent items list in the desktop Salesforce sidebar, you are already accustomed to seeing multiple objects in a single list, all highlighted with an informative graphic.  Replicate this type of user experience for mobile users with Flexipages.


For an example of how to create Flexipages, check out the documentation here: http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_flexipage.htm


Thursday, April 3, 2014

Don't Let Expertise Stand In The Way Of Creativity

A funny video has been making the social media rounds called "The Expert" by Lauris Beinerts.  While I find the video to be hilarious, I don't sympathize entirely with the character known as the expert, but also with the folks trying to hire him.  They have specific needs and he fails them in a multiple ways because he lets his expertise stand in the way of creativity.

A creative approach can make the impossible become likely.
Mistake #1:  He says "No" to one of their specifications.  Rather than telling them it can't be done, he should take the opportunity to ask more questions, deep dive into their requirements and find out exactly what they would like to achieve.  Maybe he is missing some other key requirements by not asking for a bigger picture of what they need.

Mistake #2:  He fails to educate the customer.  When the customer asks for something he cannot deliver, he fails to educate them about the limitations, although he does make some effort at this.  He should take the time to align their expectations with the limitations of whatever system they may be using.

Mistake #3: He doesn't offer to do more research.  If he took the time to look into their requests and came back to them with a follow up proposal, he might find some creative and interesting approaches to their problems.  Just for fun, lets look at some of their requirements:
  • Red lines from green ink? Perhaps he should try color changing markers or a system of filters and lights.  There are also thermochromatic pigments and color-shifting paints that could offer fun solutions.
  • Red lines from transparent ink?  Perhaps he should put the lines over a red background or try special magic markers.  Will the customer accept red lines cut from construction paper and colored with transparent ink?  
  • Seven perpendicular lines?  Perhaps he should investigate working in 7-dimensional space.
  • Make one of the lines a kitten?  A 1-dimensional kitten might meet their requirement, but the expert did not ask enough questions to find out.  Maybe they would rather have a combination of lines and curves?
The need is two-fold:  experts need to hone their communication skills as well as their creativity.  Experts need to be better communicators and have the patience not only to discover what the end-goal of a project really is but also to help everyone understand the project's limitations.  In addition, creativity will make any expert even better.  Take the time to explore challenges that would otherwise seem like impossibilities rather than just saying "No".  As with improvisational acting, experts in any field should strive to build on the ideas of others rather than negating them.