Navigation

Wednesday, November 29, 2017

Dreamforce Recap

Dreamforce 2017 was a blast.

Firstly, in spirit of Thanksgiving, I'd like to say thanks.

Thank You!

THANK YOU to the team at Salesforce for giving me the opportunity to speak again this year. THANK YOU MikeGillian, and Josh for your guidance during the event (on top of your other duties). Speaking at Dreamforce this year was challenging and fun. THANK YOU to my co-presenters, Jen and Norman for being kickass and inspiring. THANK YOU to attendees for your participation during our sessions. THANK YOU to my blog visitors for joining me today.

Now that everyone has been thanked, let's get to the recap.

My Sessions

This year, I had two presentations. You can watch these online:


The presentations went well, and were a great way to kick off the conference.

The Community

The best part about Dreamforce is meeting up with my friends and heroes in the community. I tried to squeeze in as many face-to-face meet-ups as possible, but four days is just not enough time to see everyone and attend everything at Dreamforce. I won't post all the photos here, but I tweeted most of my Dreamforce pictures. I loved attending the Appirio Reunion, 10K Party, Dreamfest concert, and Michael/ DOMO Cigar Party. The lunches and dinners that I went to between other gatherings were incredible. I loved seeing my friends at the 7Summits booth and making new friends with colleagues at the TCS cafe. Moving across the country has been a little hard for me. I don't fit in with the people in the SF Bay Area (yet?) but seeing my friends, colleagues, former colleagues, managers, and former managers in the Salesforce community was refreshing, inspiring, and uplifting. I'm so thankful for my #ohana.

Apart from being a source of encouragement, the Salesforce community has played such a significant role in my career and in the careers of my mentors, that we focus on it at the end of our Admin to Architect presentation. If you haven't attended a Salesforce conference or user group meetup yet, don't delay. Attend and make connections with others in this field. You'll make friends, grow your professional network, AND learn.

My Favorite Session

I think I died during the Meet the Developers session, which is a session that CTO Steven Tamm runs with lead architects to answer our questions about the platform roadmap... This was my favorite session because SOQL Christmas was announced --


Bad news: the session was either not recorded, or has not been posted yet. I'm not sure what else was promised because I blacked out after hearing the news about polymorphism.

My Favorite Keynotes, Other Sessions

Admin Keynote
Developer Keynote
Trailhead Keynote
Marc's Opening Keynote
True to the Core with Parker Harris (delivered and roadmap)

Several sessions have been posted online, both on Dreamforce site (scroll wayyyyy down to see different keynotes like Sales Cloud Keynote, Service Cloud Keynote, Marketing Cloud Keynote, etc.) and Salesforce Live (again, scroll down to the very low bottom of the page and expand the schedule to click on session titles).

Some friendlier session navigating is available for sessions posted on the Salesforce Developers Youtube account.

Taylor Swift

Yes, I'm putting a Taylor Swift subsection in my Dreamforce recap.

Taylor Swift's new album, Reputation, was released at the end of the fourth day of Dreamforce, Friday morning at midnight. It is sooooo good. Currently, my favorite song is either Delicate or Call It What You Want. This album will forever be the soundtrack to my 2017 Dreamforce memories. I love her. Maybe sometimes, I love her too much...

On that note, I'm convinced Adam totally won the Lip Sync Battle because he sang a Taylor Swift song. She is queen. (Also, he slayed at Tay and I hope this becomes a thing for next year!)

Final Thoughts

I'm so happy to have been able to attend Dreamforce as a speaker this year. Though there were no major product announcements at this year's Dreamforce, that won't stop me from dreaming about Polymorphism and Taylor's Reputation tour, which is lumped into my thoughts about Dreamforce.

Until next year!




Saturday, November 4, 2017

Deep Dive Into Negative Change Sets

"Shannon, I don't know what you just released to prod, but our CEO is calling me directly. Please fix it."

...

Ever wish you could just click a single button and undo a deployment? Well, you're in luck.

One of the topics I covered at Dreamforce with Norman Krishna during our "Where's the Undo Button" session was Negative Change Sets. 

Negative Change Sets are a declarative way to completely undo a release with a single button click. Why would you want to do this?

Let's say you deploy great items into production, but they somehow manage to negatively impact your users. Your immediate options are:

  1. Try to fix whatever you broke on the fly
  2. Revert back to a prior version of the functionality you created and remove the new functionality/items you deployed

As you can imagine, option #1 is super risky with no guarantee you'll be able to fix items. You'll also be in trouble with compliance if you're changing things directly in production, so you'll have to repeat the issue in a sandbox, fix it in the sandbox, and deploy your fix into production, which can take extra time.

With option #2, there is significantly less risk, but it may still take a while to revert because change sets take time to build and validate - especially if you have Apex in your org. You also need to make sure that anything touched in your deployment is reverted, which can be a time consuming and tedious task under pressure.

Enter Negative Change Sets. 

Instead of reverting in the moment, let's *plan* for our deployment to fail, and build our change sets before our deployment ever occurs. 

When you build and deploy a negative change set, you are reverting production back to the state it was in before your release. Ideally, your users will know no difference.

The idea is to build one or two change sets of the items that will undo your release, then quick deploy them if necessary. This means you won't have to scurry to fix things, then wait for the validation to occur. Planning to simply undo the release completely provides you more time to figure out what may have went wrong, and properly test any additional modifications in a sandbox.

Here are detailed instructions to build and deploy a negative change set. 


  1. Figure out what you intend to deploy to production in your next release. 
    • For our example, we intend to release a contact process builder change and an account page layout change, a new patient record object with several fields, and a new validation rule on opportunities
  2. Refresh a brand new, unused developer sandbox from production, call it "Negative Box" or something to denote this is where you will be building negative change sets
  3. Allow the new Negative Box sandbox to deploy changes to Production
  4. Create a brand new change set in Negative Box. Call it "Negative Box Revert" and add a release number or any other crucial details to the description to ensure everyone will know what this change set is -- a one-click undo button for the release.
  5. Add all Apex, Visualforce, Lightning Components, etc. to the Negative Box Revert change set
    • This ensures that if we make code changes during our next release, the code will be reverted back to a stable state, where we will achieve code coverage
    • If you have made code changes, check our Caveats section below.
  6. Add all of the existing items wherein you have changes or updates to the Negative Box Revert change set, which may include:
    • existing process builders
    • existing flows
    • existing workflow rules
    • existing fields
    • existing validation rules
    • existing approval processes
    • existing profiles
  7. For brand new functionality or objects, push them to Negative Box so you can use a change set from Negative Box to hide them with a single click
    • For our example, the brand new functionality and objects are the patient record object and our opportunity validation rule
    • We will bundle the patient record object and the opportunity validation rule into a change set, then deploy into Negative Box
  8. In Negative Box, remove brand new items from page layouts, modify the field level security to hide them, and remove permissions from profiles to revert - just like you would if you needed to hide/revert in production
    • For our example, we are hiding the patient record object from all profiles except System Administrator, and we are deactivating the new opportunity validation rule
  9. Bundle all new items into the Negative Box Revert change set. Include profiles, since you have likely hidden objects at the profile level as well.
    1. In our example, we include the opportunity validation rule and the patient record object, as well as all of our profiles
  10. Push the Negative Box Revert change set into production and validate
  11. Deploy the Negative Box Revert change set only as needed to revert.
Caveats:
  • Process Builders and Flows do not always automatically activate when updating or reverting an existing version. Ensure you check all versions to maintain the preferred active version.
  • For code changes, you should use the current Negative Box code versions to completely revert to existing production state. Then, bundle into the Negative Box Revert change set.
  • For brand new code, move the code into Negative Box but comment it out. Double check test classes to ensure they do not fail. Deactivate brand new triggers in Negative Box. Then, bundle into the Negative Box Revert change set.
  • If you have hidden new items or functionality during your Negative Change Set, you should return to the items or functionality in a patch release, OR completely delete them at a later date -- there is no need to keep broken, hidden items or functionality in your production instance

In conclusion, a little planning goes a long way. Let Negative Change Sets save your next deployment - before anything blows up. 

P.S. There are even cooler tricks to talk about regarding reversion. This post is meant for admins who are familiar with declarative functionality, but have never heard of source control. More to come, for sure!


Monday, October 30, 2017

Meet Norman Krishna, DevOps Architect

Norman Krishna
Dreamforce is just around the corner! It's my pleasure to introduce you to one of my Dreamforce co-presenters, Norman Krishna.

Norman has built release management from the ground up at small, medium, large, and super-sized organizations. Now, as a DevOps Architect, he is able to bring his meticulous organization and  delivery processes to every aspect of a project.

Norman and I worked on a large enterprise Service Cloud implementation last year. On the project, I was staffed as Technical Lead and Norman was the Release Manager.

During our time on the project, Norman and I had a lot of fun reviewing and exploring concepts of release management and deployment best practices. We spent a lot of time planning and building deployments, and worked through each release to refine our success criteria necessary for solid subsequent releases. Working through deployments with defined processes and common success criteria ensured every release succeeded, but we were always ready to execute a deployment rollback, if needed.

Given our experience together and his expertise on the topic, Norman was an obvious pick for co-presenter of "Where's the Undo Button? Deployment Best Practices" this year. In the event that you promote something to production that causes your users or stakeholders grief, three strategies we are sharing during our session will help you to restore production to a steady state.

Grumpy Cat doesn't know we have an undo button.
We hope that you can join us for the session and we will be sharing more information about deployments and release management in the coming weeks.

Learn more about Norman in the following digital interview.


Meet Norman Krishna: Digital Interview


How long have you worked in an IT-type function? 

For the past 9 years

What did your career journey look like? 

Have been in IT all my life -- starting from hardware Engineering support, software development, sales, general management, entrepreneur and now in Salesforce DevOps - it has been a great journey. What I love about my job is that it is constantly evolving. And Appirio has given me a great opportunity to work with a series of new enterprise clients (approximately one every year) and each of them are different in IT culture, infrastructure and processes.


What is your current role like? What does it entail? 

Currently, I am a DevOps Architect - primarily involves working with Dev teams to ensure that complex Salesforce applications are moved from development sandbox through qa, uat and finally production involving multiple IT teams and disciplines.

Do you have any advice for IT newbies/admins in the Salesforce space (in general)? 

Salesforce is a fantastic platform offering a diversity of experiences. You should have an open mind and be able to switch into multiple career options - Business Analyst, Developer, DevOps, Data Specialist, Integration specialist, Program/Project Manager. And remember - certification is also important. 

What is your favorite feature of the platform? 

As a DevOps, I love the wonderful metadata API that allows a multiple of deployment methodologies including rolling your own with the Tooling API

Favorite beverage? 

Spinach smoothie with kale and chia seeds.

What was your Salesforce certification journey like? How did you achieve your cert? Would you encourage others to attempt certifications? 

Actually, the best was my last one Software Development Life Cycle -- spent a couple of weeks reading through the reference material and passed the first time. Certification means more pay rises and most material is available online.

Did you have any mentors along your career journey? Who? How did you find them? 

Many of them - but Appirio has a wonderful mentoring process and I am fortunate to get a great mentor. And I also mentor others when needed.

Any books we should read or podcasts we should listen to? 

No one other than the legendary Jeff Douglas.


Any television shows or movies we should watch? 

Glen Garry Glen Ross - shows human emotions at it's best and worst - and also a great cast.

What was the silliest request you've ever fulfilled? 

No requests are silly -  what you need is to educate the requester.

What is the most common request you're happy to fulfill? 

Architect a Release from scratch.

Any AppExchange apps/Git repositories/other technological items worth a nod? 

Too many to list - but the best is Copado - a DevOps tool that nearly automates 99.99 of releases --expensive right now - but may become the market leader in future.

Wednesday, October 25, 2017

Why should you care about External IDs?

So, I've been studying for an integration certification (and also because I just love studying) and something keeps coming up: External IDs.

What is an External ID?

External IDs are custom fields in Salesforce that hold unique values that correspond to unique record data.

What else should you know about External IDs?



So, why should you care?



External IDs make your life easier, when planned correctly. Instead of pulling everything into a VLOOKUP, and aligning records to the source systems via record details or Salesforce IDs, you can use External IDs to ensure you have an ID that can be referenced both inside and outside of Salesforce.

The key to this statement is "planned correctly".

In my recent past, an admin had decided that the Salesforce record IDs could be used as External IDs with integrations to other systems, and as unique keys in tools like data warehouses. While this is a direct, relatively simple decision to make - lots of us have made it! - it's not always scalable. Why, you ask? There are a few reasons, but ultimately we'd choose to work from a net new External ID to preserve uniqueness (no other field will contain this data - reducing database redundancy) and minimize end user and admin confusion.

Here are a few questions to consider when choosing an External ID.


Unique? 
  • When planning an External ID, it may shock you to learn that they aren't automatically required to be unique in Salesforce. If you intend to use this ID for integrations or data manipulations (or as an External ID, lol), my recommendation is to always mark the field unique. This will preserve your data integrity (and your admin's sanity!). 

Where do we find out about the majority of this-type-of-record? 
  • Determining the system of truth (master data management strategy) is really just an exercise of determining where you find out about a record, who is finding out about it, and how much you know when that happens. So, if you learn about customers when they sign up on your website, your system of truth for an External ID would likely be the marketing system that collects their information as soon as they complete the web form on your website. Your marketing team likely has access to this information, and you know whatever you've made required on the web form.
  • If you learn about customers while they're on the line with a support agent, your system of truth for an External ID would likely be your Service Cloud (or -puke- your Zendesk or Dynamics). Your service team likely has access to this information, and you know whatever fields you've made required in the tool. 
  • This means the system of truth isn't always going to be Sales Cloud. It's very likely not Sales Cloud. Ensure that wherever the External ID is created, that it's a completely unique identifier, not just a Marketing Cloud ID or Zendesk ID. It also means your organization as a whole may not have access to the External IDs until that information is integrated across the system landscape. With External IDs, I like to combine key record attributes to build something unique, but meaningful. On that note...

Who, if anyone, is reading this ID, and when are they reading it?
  • One of the cool things about External IDs is that they're indexed. Since they're indexed, you can run reports on them much faster. If you build meaningful External IDs, one or many teams can use them to extract valuable information without pulling crazy reports. Think about common use cases where a significant portion of the workforce continually looks at several fields on individual records as they're doing their job. 
  • When is the External ID needing to be accessed? To prevent duplicates, Salesforce recommends planning integrations and record access to surface relevant data as soon as it's uncovered, granting visibility to those who need it, while building a 360 degree view of the customer... This includes integrating and surfacing External IDs!
    • Maybe our users need to confirm record create date, lead source, lead last name, and city of origin. As an admin, I might grab a report for them to review - include things like created date, lead source, and city into different columns... But, what if all of this data was visible in a single field? An External ID field with formatted like MMDDYY-LeadSourceCode-LastName-City-{000}? 
    • Maybe they need to confirm a UPC, delivery center, and shipment received date? An External ID field with format like MMDDYY-UPC-DeliveryCenterCode-{000} may do the trick. 
    • This doesn't mean we'll create reports with just our External ID fields. HOWEVER...
  • If you have a few use cases where 40% or more of your total workforce is looking at several common fields on a record to make a decision, and those fields are populated during or near new record creation, consider using those fields to create a meaningful External ID. 

External ID = Salesforce ID? 15 character or 18 character?
  • Well, we all know the heartache of using 15 character record IDs, right? (The 15 character IDs are case sensitive and therefore are not unique enough to use in formulas within many tools such as Excel...) We know they're a pain because we're admins and developers. Have you ever had to help a user through the 15 character saga? What about a Sales Manager who has gone rogue in reporting? 
  • If you are using Salesforce IDs as the record key for other systems, you will need to explain that the IDs on reports are not the same as the IDs you plan to use (because you will be using the 18 character ID). 
  • Though you can train to the confusion, an alternative could be to avoid it. 😅

External ID = Salesforce ID? More than 1 Salesforce instance? 
  • Larger organizations, especially global organizations, may experience added stress if the Salesforce ID is the unique identifier because there's likely a need for multiple Salesforce instances. It can be done (with additional logic to prevent incorrect record ID becoming the unique External ID), but it will require training. 
  • Specifically upon sharing to other salesforce instances, using a record ID attribute is tricky. Salesforce to Salesforce will sync on record details, but the ID will not change. Storing multiple Salesforce IDs on a record isn't ideal for your users (or admins) - it's confusing at best.
  • Though you can pad data migration exercises with ample time to double check your ID situation and train to the confusion it may cause, an alternative could be to avoid it. 😅


Ok, I get External IDs but I'm still not convinced I need to use them.


Let's take a look at why you really need an External ID: time consuming data management.

Example: My ancient Frankenmonster system has patient records with ID sformatted like Z001X. In Salesforce, patients are stored as contacts, with contact IDs formatted like 0033000000GvZjL. 

Let's say I wanted to pull all records from Frankenmonster with last name "Smith" and add them to a campaign in Salesforce. If the record doesn't exist in Salesforce, I want to add the record to Salesforce and then add it to the campaign.

As an admin, I will likely have a multi-step process to update the data. 
  1. Pull the information from Salesforce via DataLoader
  2. Pull the information from Frankenmonster 
  3. Determine matching criteria with VLOOKUPS in Excel, to prevent creating duplicates
  4. Update the Frankenmonster file with correct Salesforce IDs
  5. Create separate file for any records that are in Frankenmonster but not in Salesforce yet
  6. Run Update from DataLoader on the existing Salesforce records
  7. Insert brand new records in Salesforce via DataLoader
Oh, our Sales Manager wants customer data from our legacy VampireSys tool to be brought into Salesforce and added to this campaign, too?

No problem. I'll just pull the same information again, and repeat the steps above with slightly different matching criteria since VampireSys doesn't have the same kind of data that Frankenmonster does. Not painful at all.



Sound familiar? If I had to guess, I've spent at least 500 hours of my life marrying data from legacy systems with data in Salesforce. The worst part is that it is NOT 100% accurate, and using record attributes to create uniqueness always results with some (maybe insignificant, maybe not) amount of fallout...

If we don't have a Master Data Management solution (that link sends y'all to a 34 page textbook excerpt on MDM principles - good stuff to bring up at your next IT offsite) and we find out about the customer further downstream than our system-of-truth marketing tool, it's not a problem. We'll just make sure our Salesforce field level security doesn't let anyone modify that field on any new records created in Salesforce. Our integration with the marketing tool can stamp our customer's records as soon as we realize they have unique data that doesn't already exist in the marketing tool.

If I use one unifying External ID per record, I can simply include the External ID in my process and conduct an upsert. So, my steps are drastically reduced.
  1. Pull the information (including External IDs) from Salesforce
  2. Pull the information from Frankenmonster
  3. Match Frankenmonster and Salesforce records using the External IDs 
  4. Run an Upsert in DataLoader using the External IDs
Upserts are a combo of insert and update. What an upsert does (in a nutshell; this is a little over simplified) is update records that exist, and insert records that don't exist. It does this using an ID. In our case, it will use the External ID when we prompt it to... Check out this Dreamforce presentation about time saving to be had with upserts using External IDs, shoutout to Doug Ayers!

Oh, our Sales Manager wants data from space to be brought into Salesforce too? So long as space has an External ID, no problem! I won't have to match against anything. Data analysis is a thing of the past!

In conclusion, defining defining a single, unique, meaningful, unifying External ID will set you up for time-saving, complexity-reducing success.






Thursday, October 12, 2017

Meet Jenevieve Arrigan: Kickass Technical Architect


This week on the blog, I'm excited to introduce you to one of my Dreamforce co-presenters, Jenevieve Arrigan. She is one of the mentors I met and friends I made during my Appirio chapter. Jenevieve is a Technical Architect and founder of Escapist Reality, a firm focused on video game development, consulting, gamification, writing, video content creation, and real-world adventuring.
Jenevieve Arrigan


I'm super jazzed to be speaking about the journey from admin to architect at Dreamforce with Jenevieve, but wanted to learn more about Jenevieve's interests apart from the cloud.... So, nod to SaaSyforce Lauren Jordan, who introduced me to the digital interview concept. Interviews are a great way to learn more about community rockstars. Keep reading to learn more about Jenevieve. Her interview is obviously peppered with helpful Salesforce tips.


1. What is it like to work for yourself? How is your current role different from working at a traditional consultancy? 

Escapist Reality
Working for myself is amazing. It’s empowering, it’s liberating, but perhaps most surprising is that it is so relaxing. When I was part of a larger organizations and a more traditional consultancy, I struggled with being someone who was several steps away from decision makers, and I felt powerless to affect positive change. I’m a really empathetic person and it depressed me to see things that I know were negatively affecting team members and clients, things that I felt had solutions, and yet I was blocked by politics, bureaucracy, and my own inability to climb the corporate ladder further. 

It only has been recently, as I’ve been consulting on my own projects at Escapist Reality, that I noticed how happier I am doing effectively the same work. The big difference is that I’m not wasting significant amounts of psychic energy on negative elements at work that I can’t influence but yet still affect me.

So while I’ve taken on a whole new array of stresses starting my own business, I have never been so relaxed in the execution of my profession.


2. How long have you worked in an IT-type function? 

I first started getting paid to write code when I was high school, writing Visual C++ for my father.  But I started supporting myself primarily through IT work while I was in college, initially doing freelance web development, eventually becoming the webmaster of a human services company. So it’s been about 16 years where I was supporting myself through IT-type functions.


3. What did your career journey look like? Feel like? 


My career journey started with intense hubris, followed by constant learning - sometimes the hard way, and ultimately brought me to a place of confidence and humility.

One of the most valuable gifts that my father gave me was the ability to code. I don’t know if he knew how empowering it would be, but the course of my life changed when, as a third-grader, on 386 and MS-DOS, my father started to teach me to code.

Turbo Basic was my first language and by fourth grade my friend and I had written our first video game. It was adorable. It was so poorly written, but it worked. And it made me believe that I could do anything with a computer.

Throughout my childhood I continued to teach myself code and learn from friends. By the time I went to college, I was confident that I could always get a job in tech; it became my safety-career. It was a hobby and a passion, but knowing that I had a backup plan that was a high-paying, high-demand job allowed me to take a lot of risks through college. Eventually, after eight years, I graduated with a BA in English with a focus on Literary Theory and Creative Writing. I didn’t know it at the time, but it was perfect preparation for consulting.

Throughout college, and in my first career afterwards where I was the only web developer at the company, almost all of my technical knowledge was self-taught. I read dozens of books on code, did the exercises, made sure I understood the concept, experimented, and continued to learn. During this time, I learned how to learn.

When I eventually joined the cloud-computing consultancy Appirio, I finally found myself feeling like the least capable person in the room. I was confident in my abilities, but I was in awe of the brilliance of the people around me. I had never learned so much, so quickly, in my entire life. It was a truly powerful experience to see what an incredible team looks like. And as my career grew, and I found myself in the positions where people looked to me for help, I tried my best to be available, to give guidance, train and teach, and be a friend.

I’ve found that my eclectic background in jobs and education turned out to come together perfectly in the field of enterprise consulting. Being a technical person who is able to communicate successfully to nontechnical people put me a relatively unique position.

When I eventually left a large consulting company to start my own, I did so with a confidence that even if my own company never made it to the point of being able to support my lifestyle, I had skills in high demand, and the ability to learn. I can work anywhere in the world as long as I have internet. It’s a super empowering position to be in.


4. Do you have any advice for IT newbies in the Salesforce space?


Invest the time and energy to learn. It is easy to say, “always keep learning”, but constant learning comes at a cost. Sadly, realistically, many companies do not make time within the work day for career growth and development, spending a couple of hours a week of non-billable time learning something new. So it often falls on us, in our spare time, to continue to keep pushing the boundaries of  our knowledge. Not only will this contribute to promotions and raises, it will keep the work interesting and fun.

In addition to the self-guided learning, be social and get involved. For introverts like me, it takes a lot of energy to work up the will to go to things like my local Salesforce User Group. But I’ve made some of my closest friends through User Groups, I’ve built up my professional network which contributed to Escapist Reality’s first client, and I’ve learned a lot. Also, I gotten some cool swag. B-)

In the early days of my career, I perhaps took that that advice a little too seriously. But learning was addictive. And this was before my learning topics had adorable mascots. Try to make sure that you are making time to progress your own personal initiatives outside of work as well as continuing your professional education and growth. Time is your most valuable resource, so while there is a practical need to continue to improve the skills that pay the bills, prioritize the skills that give you joy outside of work as well. This will not only help to prevent burnout, it will allow the future you to do some pretty amazing things. For instance, if you want to learn to play an instrument, you need to make consistent time to practice and play. And it’s easy to dismiss that as an impossibility; that as the lowest priority item in your life it’d constantly be pushed for something else. But just think: If you could instantly have 10 years worth of experience playing an instrument, would that make you happy? If so, start playing, make it a priority, and 10 years from now you won’t be thinking, “Wouldn’t it be cool if….”


5. What is your favorite feature of the platform?


The ability for Users to create reports and dashboards, have access to real-time data, and self-service their business needs.

I’ve seen far too often companies that, in order for business users to generate a report of their data, users need to put in a request to IT, wait several days, get a report back, see that they need to make changes to the report, and start the cycle again. A week later, they have the data they needed seven days ago.

I’m spoiled with Salesforce because I’ve been living with it for so long, but for many people this is just the accepted status-quo.


6. Favorite beverage?


Currently probably lemonade. In the last several years that’s become my go-to non-alcoholic drink. Favorite alcoholic drink is probably Dansk Mjød’s Viking Blod (Viking’s Blood) mead.


7. Favorite city to visit? City you'd love to live in (or already do)?


I recently rode my motorcycle around the country and spent some time in Portland, Oregon. That city was amazing and I’d enjoy going back there to visit.

But right now I actually am living in my favorite city - Portland, Maine. Before moving here a little over two years ago I spent almost my entire adult life moving to a new city and often a new state every year (if not more frequently). But Portland is perfect. Or at least perfect for me. I think this is where I’ll be for a long time.


8. What did the journey look like to opening your own consulting firm?


It was easy for me to start my own company. It was an exercise in overcoming self-doubt to start trying to consult on my own. Luckily I wasn’t alone. Even though I was the only employee of Escapist Reality, I had my friends and my network with me. While I doubted whether or not I could be successful, my friends were actively talking me up at their companies and at networking events, building a pipeline of highly interested and motivated clients. My friends are awesome. =)

I would not have been successful if I was isolated.

But when I had to write my first SOW, I literally had nothing to start with. I had to figure out what my SOWs should look like, what information they’d contain, how they’d be laid out, and how I’d share them with the client.

There is SO many little things that need to be done at the beginning of a company’s journey. But many of them are not completely new to me. I’ve setup and configured Google Apps for a domain for many customers. I’ve used Google Docs professionally for a decade. I’ve read and help create dozens, if not hundreds of SOWs.

So this is not uncharted territory for me.

Still, now I was putting myself out there in a way that made me feel very vulnerable and scared.

But, unlike my time at a larger consultant company, I have so much hope for the future of my company. I can see it growing, making clients successful, producing software enjoyed and appreciated by the end-users, and actively being part of making the world a better place (even if only a little).

I don’t need Escapist Reality to become a billion dollar company. I’m not looking for a buyout or an IPO. I’m just interested in making a company that operates with integrity, passion, and fun.

If Escapist Reality is able to contribute to making my life more enjoyable and fulfilling, allowing me to be happy and healthy - both mentally and physically, it is a dream made reality.



9. Did you have any mentors along your career journey? Who? How did you find them?


Several. Some more aware of it than others, but several of my closest friends are people who are also mentors to me. I’m going to avoid outright naming names to preserve their anonymity, but they are all incredible people. 

One of my first mentors actually introduced me to Appirio and Enterprise consulting. He was convinced that I would make a great consultant and heavily lobbied to have the company give me a chance. For those first couple of years, his guidance and support were critical to my success and my confidence.

And while I don’t necessarily view him as a mentor any more, we are still friends and I will always appreciate the way he helped me and my career.

And I bring him up because I think it’s important to know that mentors don’t need to be C-level Executives, or public figures, or people with a Wikipedia page. And they don’t need to be lifelong mentors, though they can be lifelong friends and members of your professional network.

A couple of my current mentors are people who also are, or have been, Technical Architects in the Salesforce space. These are people who I also worked with at Appirio. I engaged them as team members, friendly and sincerely, and built a relationship. It was not necessarily my intention for them to become mentors to me, but they became friends with whom I felt comfortable seeking professional advice, and who helped me to continue to become a better professional, and a better person.

One of the perks of being part of a larger company is that there are some built in mechanisms to find potential mentors.

And while I continue my regular hangouts with them, one thing that I do need to do is start looking for a mentor who will be able to help me in this next stage of starting a company and growing a firm.


10. Any books we should read or podcasts we should listen to?


The Hitchhikers Guide to the Galaxy by Douglas Adams. I think an important lesson we should all learn is: “Don’t Panic” :) 

One of my favorite and most professionally influential books that I’ve read is, “The Art of Agile Development: Pragmatic Guide to Agile Software Development” by James Shore. I read this book early in my career and it was the book that made me love Agile. I still recommend it today.


11. Any television shows or movies we should watch?


Kim Possible - Cause anything is Possible when you’re a Possible 
Psych - Because serious work is more successful when you’re silly =)


12. What was the silliest request you've ever fulfilled?


Submit your weekly timecard on Fridays even though the workweek includes Saturdays and we often work the weekends. 

That always struck me as an absurdity, and an institutional level of insanity. I found requests such as “just include what you think you’ll work Saturday” or “include Saturday on the next timecard” to be dishonest and a clear indicator that you are doing something clearly wrong. And yet, for years, I’d get an automated, passive-aggressive email asking where is my timecard and every Monday morning I’d submit it… accurately. ;)


13. What is the most common request you're happy to fulfill?


“Can you explain [something]?” I enjoy training and teaching, and I take a lot of joy in helping others to be empowered and confident. So when people come to me for help, especially if they want to understand something better, if I am able to answer their question I will.


14. Any AppExchange apps/Git repositories worth a nod?


You know, I don’t have any that specifically come to mind. Though, just so I’m not leaving this one totally blank, I’d say make sure you review the free Report and Dashboard packets on the AppExchange by Salesforce Labs. If you weren’t already aware that they exist, you might be surprised at what you can get at no cost:


15. Please feel free to fill us in on any other endorsements/topics we haven't already covered that you want to bring up.



Life is scary. And there are always reasons not to do something, and not to take a risk. But safety is sometimes a dangerous trap too. Regularly reevaluate if your life, and the way you are spending your time, is contributing to making you the person you want to be. And, if it isn’t, start figuring out how you can shift it so it is.

This doesn’t always need to be dramatic changes all at once. And it might even be just taking 10 minutes a week to do something meaningful to you that has been deprioritized from your life. In 10 years that adds up to over 80 hours of additional meaningful time in your life.



16. Certifications worth mentioning? Any roadmap items?


I am currently a Salesforce Certified Administrator and a Salesforce Certified Force.com Developer.


I do plan to add to my certifications, but at this point I’m not entirely sure what my next target one is. Odds are the next badges will be Salesforce Certified Platform App Builder, Salesforce Certified Platform Developer I & II.

Wednesday, September 20, 2017

Where's the Undo Button? Proper Release Management

I've done it. You've done it. No matter how powerful your testing methodology is, we're all bound to experience a moment of 'it broke production -- oh snap!' at some point in our Salesforce careers. The worst part of an 'oh snap' moment is putting up with the break while you revert the change in a sandbox and re-deploy (because none of us would ever directly modify our production environment)...
Deployment cat is intrigued.

Join Release Manager Norman Krishna and I at Dreamforce to learn three simple techniques to ensure fool-proof deployments. After attending the session, I'm confident you'll never have to put up with an 'oh snap' moment in production again. See you at Dreamforce!

Monday, September 18, 2017

Dreamforce 2016 Recap, what to expect

It's been a while since my last post. I can't believe I never even attempted to catch y'all up post-Dreamforce 2016.

Last year, I had the honor to attend Dreamforce as a speaker. It was the most fun I've ever had, professionally, and I'm so thankful for the opportunity. I strongly encourage anyone who has an idea they'd like to share with the Salesforce community submit for Dreamforce 2018 (submissions for 2017 are closed), even if public speaking makes you nervous.

For those who haven't spoken before, you may not know how much work goes into the sessions to ensure speaker success. Here's a rough outline of what the experience looks like, based on my experience:
  1. You submit your session ideas (you always submit several!!!)
  2. You receive the acceptance (and rejection emails)
  3. You receive a welcome email from the SFDC employee who is going to mentor/coach/orchestrate your session logistics with more details
  4. You update your speaker profile on Success Communities
  5. You "finalize" your slide deck
  6. You post your slide deck to a closed community (and receive feedback)
  7. You "finalize" your slide deck 
  8. You present your slide deck (over Gotomeeting) with your SFDC mentor/coach 3-8 times the month before Dreamforce (and receive feedback each time)
  9. You "finalize" your slide deck
  10. You send your final slides to your mentor/coach (and receive feedback)
  11. You finalize your slide deck
  12. You get the schedule for your session and the details of how many signed up/bookmarked it
  13. On speaking day, your mentor/coach is there for you, in the front row
  14. You get nervous and throw up 5 min before your big session
  15. You nail the session
  16. You await for the session recording to be posted
  17. The session recording is posted
  18. You watch the recording and feel like you did a better job than you could have hoped for
  19. Who is that person in the recording??? I can't even!
  20. Imposter syndrome sets in
Massive thanks to Larry Bushey and Mike Gerholdt for their help last year. Without their coaching and mentoring, and Larry's front-row-cheerleading, I would have (probably) thrown up on stage.



My two sessions from last year are linked below.

This year, I'm SUPER STOKED to be speaking again. I've asked a few of my favorite Salesforce peeps (who are just plain incredible) to join me for their first time speaking at Dreamforce, since the topics I chose are definitely in their wheelhouses.

More to come.