Thursday, October 8, 2015

The Method Matters

Volkswagen AG has been in the news lately, and not for a good reason.

I remember reading that their then-chairman, Ferdinand Piech, and their then-CEO, Martin Winterkorn, wanted Volkswagen to be the number one car maker by 2018.  As recently as June 2015, they were ready to declare victory.  By July, the news media was heralding their triumph.

And then came the news.  By most accounts, it sounded like a deliberate attempt over many years to circumvent CARB emissions testing.  Whether it is directly related to the goal to be the number one car maker or not, any fraudulent activity of this magnitude especially by a company so well known gives me pause.  Where did this culture of win-at-all-costs come from?

There is nothing wrong with wanting to win.  But the way to victory matters to some people.  It matters to me.

Back in elementary and high school, our math questions were graded on a scale of 1 to 5.  The answer must include the method or the calculation, and the result itself.  A perfect score meant both the method and the result are correct.  Get the answer wrong, but the method is close, you get some points.  If you just wrote the final number or equation without the method, you just get one point.

Even then, the method mattered.

Lance Armstrong was heavily celebrated as a cancer-beating Tour de France-winning cyclist until he finally admitted using performance-enhancing drugs when he was competing.  Yes, he did win 7 tours.  But all that didn't matter because in his quest to win, he employed questionable methods.

In Marshall Goldsmith's book, "What Got You Here Won't Get You There", he opens with a story of a top performer who is described as "not a team player."  People dislike working with him.  The CEO of that company told him that if this person wouldn't change, he would be out of the company in a year, even though he was a top performer.  How did he get there by not being a team player?

Many more examples can be cited on perceived "wins" but with a backstory filled with deception, coercion, cheating, and outright lies.  In companies, these may be isolated, in which case, people get fired, or it may be cultural, and the entire brand is tainted.  For me, personally, it is okay to "lose", as long as I don't lose my integrity.  And it is great to "win", a great thing to succeed, but the method how it was achieved matters equally.

Friday, August 21, 2015

Exploring Bandwidth Issues

I've had AT&T as my ISP since 2005.  First, it was DSL, and recently, their U-verse brand of service.  Based on the Wikipedia entry, it is either a fiber optic connection or DSL, depending on the area.  My U-verse plan advertises up to 18Mbps download speeds.

With the explosion of bandwidth-hogging apps like YouTube, Skype, even Facebook, and multiple devices sharing the same connection, I have become more conscious of the actual download speeds I am experiencing.  Even my 2 year old child starts complaining when the high-def video she is watching on TV via WiFi starts to freeze while the TV attempts to buffer more data.

AT&T recommends ookla.com to run speed tests from your computer.  They also prescribe using a wired connection (Ethernet) when running the test, as well as ensuring that no other devices are using the connection.  So with that, here are my results.  With a promised 18Mbps download speed, I am actually getting 22Mbps on a wired connection.  That's not bad.

However, as with most homes these days, devices aren't tethered to an Ethernet cable.  I use WiFi almost exclusively - 2 laptops, 3 tablets, a TV, a printer (although I doubt that needs to connect to the Internet).  So running the same test, except via WiFi, on the same computer, with all other devices blocked, I get this, 6.2Mbps.  That's less than a third of the original 22Mbps, or a third of the promised "up to 18Mbps."

I can understand some loss due to the need to go over the air vs. Ethernet, but that drop is too drastic.  A quick Google search tells me my problem is not unique.  There are several suggestions, like ensuring all the devices connecting are on 802.11g at least.  I double-checked the laptop I was using, and it is indeed capable of 802.11g, and with that device using the connection exclusively, 6.2Mbps is too low.  Finally, I was testing with a computer that was about a foot away from the wireless router, so signal degradation should not be a factor.
Another suggestion was to play around with the WiFi channels.  Apparently, if my neighbor was on the same channel, we will cause interference on each others' networks.  So switching my channel to another one, I ran another test, and I get 10.7Mbps - a good improvement, but not great.  

I then became curious as to whether the added WPA2 security decreased performance, so I turned off security and ran another test while on the same channel as earlier, and recorded 9.39Mbps download speed.  So maybe the security settings don't decrease performance.  Besides, turning off security is a bad idea, unless you really intend to share your WiFi with your neighbors.

So maybe it's time of day.  It is 5:03AM PDT, and my download speed is back to down to 6.43Mbps.  The earlier tests were done around 9PM Pacific.  Running the same test a few minutes later yields even worse results, at 2.3Mbps.  So maybe it's not my connection, the whole Internet is busy!  (Well technically it could be only the network around me that are busy.)

It's times like this that I wonder whether switching to Comcast will improve things.  But a quick Google search turns up similar complaints from Comcast users.  So maybe the whole world is hungry for bandwidth, which is why companies like Infinera and Juniper are setting the stage for really fast networks.

But back to my problem, I still need to find an explanation for the loss of bandwidth.  18Mbps speeds are achieved on 100Mbps Ethernet.  Why only 10Mbps on 54Mbps 802.11g wireless, even if it is the only device connected to the wifi router?  It might be time to go back to my Networking 101 class.


Wednesday, April 8, 2015

Salesforce: Counting How Many Times Something Happens

In a previous post, we explored setting a time stamp for when a field is changed to a certain value, for example, we want to capture when an Opportunity Forecast Category is set to Commit.  Today, we look at how to count an occurrence in Salesforce.  These will form building blocks for reports and dashboards.

To review, the workflow rule is really simple.  It needs to fire when the record is new, or when it is edited and the criteria is met.  


The behavior will then be every time the Forecast Category is set to Commit, and it wasn't previously "Commit", the workflow will fire.  If we only want to fire the first time, then add a criteria that your Time Stamp field is blank.

The Field Update is equally simple.  It simply sets a Date/Time field to NOW().

But of course, an enterprise sales cycle is long, and an opportunity may move back out of "Commit", and then again to Commit.  Each sales organization may have a threshold of what is acceptable.  Things happen, what a sales person thought was a done deal may hit some snags, and he will need to move it back to Best Case.

But how do we capture the number of times the Opportunity Forecast Category is set to Commit?

What we need is a counter!

First, we need a number field on the opportunity.  Let's call it Commit Counter.  It needs to have a default value of zero.  If you have existing opportunities, the new field will have blanks.  You can use Data Loader to update, but that is optional as you will see later.






Then we will need a workflow rule to fire when a the Forecast Category is set to Commit.  In fact, the workflow above will also work.  If you need to add more conditions, for example, exclude System Administrators, you could start with the following criteria:

AND (
   ISCHANGED( ForecastCategoryName ),
   PRIORVALUE( ForecastCategoryName ) <> "Commit",
   ISPICKVAL (ForecastCategoryName, "Commit")
)


The important step is to have the right field update on your Commit Counter field.  In the above criteria, notice the use of the PRIORVALUE function.  It takes whatever value was in that field before the update.

But if your Salesforce org has existing opportunities, the new field will be blank unless you populate it with zero, or by going through the exercise of extracting the Opportunity Field History object, counting the instances for each opportunity, and updating your old records that way.

Since we will accept that we will only get the count of opportunities set to Commit moving forward, we will need a field update that looks like this:

IF ( ISBLANK (Commit_Counter__c),1, PRIORVALUE( Commit_Counter__c ) + 1)

This sets the field to 1 if it is currently blank, otherwise, it increments the field by one.






Activate the workflow then test it.  Add conditions as necessary based on your business requirements.

And there you have it: a field that counts how many times an opportunity goes into Commit.  This can be used as part of your pipeline or win/loss analysis, or simply part of a larger pipeline quality dashboard.




Monday, March 2, 2015

Building a Car? Build This!

Several weeks ago, Apple was in the news because they were rumored to be building a car.  The  rumor turned out to be false.  Everybody wants to be where people spend a lot of time.  Google wants to build completely self-driving cars.  Even the major manufacturers are working on something of their own.  Nobody asked me, but here are my thoughts anyway.  Enjoy!

First, let's start with the car to build now, with existing technology or something that can be developed in a short amount of time:
  1. License Volkswagen's MQB platform.  In the same way that Tesla used Lotus' design for their first model, using an existing platform will save on development costs and accelerate time to market.  Also, the MQB is versatile enough be designed around.  Think about it: the Audi A3 and the VW Golf sits on the same platform but look very different. I'm pretty sure there is a Skoda that sits on the MQB as well.
  2. Safety First.  Apart from the mandated seat belts and airbags, these additional safety features should come standard.  All of these are meant to aid the driver but not relieve him of his duties.  The car will be loaded with a ton of sensors:
    • Adaptive Cruise Control - stays within 3 seconds of the car ahead of you, or the speed that you set, whichever is slower, and applies brakes when necessary; this will allow you to, literally, just sit in traffic.
    • Collision Avoidance - applies brakes and increases tension to the seat belts when an obstacle is detected, and possibly, steering to the next lane;
    • Oncoming Vehicle Warning - and similar to above, increases tension to the seat belts, maybe potentially accelerate or move out of the way.  The problem with today's blind spot detectors is that they beep or flash even if you are not changing lanes, or the other vehicle is going in a straight line.  With a few tweaks, it should be able to selectively warn you depending on whether you are in fact veering into their direction, or they are moving into your lane.
    • Lane Departure Warning - detects if the vehicle is going wayward and out of his own lane without driver input; possibly also reading the driver's condition in conjunction with road sensors.  It may also self-correct.
    • Active Headlamps - legislation needs to change on this one, but headlamps should automatically brighten, darken, turn off, turn right or left depending on conditions. 
    • Heads Up Display - reduce the need to look down, display speed, and navigation on the windscreen, as well as warnings from the above features.
    • Rear View Cameras and Sensors - today's cars only activate when the car is in reverse. These should activate on command.  It is still a good habit to check the rear view from time to time, and with bigger cars, or even smaller sports cars, the mirror just doesn't cut it.
  3. Add these convenience features:
    • The climate control system should learn the habits of the driver, and adjust the temperature and seat heaters as necessary.  It will record the settings, the driver's temperature, the outside temperature and the cabin temperature to infer future settings.  There will be no need to fiddle with the controls as you drive the car.
    • Connected Car - either through Wi-Fi, cellular, or Satellite, receive traffic, music, news, podcasts, calls, and text.  It saves the location and driving information in a secure location, as well as send diagnostic information to the manufacturer.
    • Voice Commands - allow more voice commands to avoid having to take hands off the steering wheel.
I do realize that a lot of these features are already in high end cars like the S-class from Mercedes, and some of Audi's more expensive offerings.  But if a tech company can make it cheaper yet reliable, I am all for it, as long as software updates are not too often and don't take 4 hours, rendering the car inoperable while in the process.

Now, in the next ten years, technology may allow us to have the following features:
  1. Either go 300 miles on a single charge, or find a cheaper fuel source.  It has to preserve the "road trip" experience, meaning you can stop for 10 minutes to fill up, and be back on the road again and drive another 300 or more miles.
  2. It may take the fun out of driving for enthusiasts, but more driving automation, with more of sensors and more intelligence, a car should be able to get you to your destination by merely entering (or stating) your destination to your navigation device.  The car will try to avoid traffic if you instruct it to, very much like your GPS today, but the car will actually reroute itself.  And equally as important, it will activate the turn signal early enough!
  3. Beyond self-parking, self-valet should become available, either the car autonomously finds a parking spot after dropping you off, or uses signals and sensors from the smart parking garage.
  4. In an ever increasingly connected world, besides smart garages, there will be smart roads that know the conditions, the speed limit, and the car will communicate with the road, as well as other cars.
  5. There will be no toll booths, as your car sends its identity to the agency that collects tolls whenever you pass by their smart bridge, or smart tollway.  And the agency charges your bank.
  6. And of course, with all this data available, it can personalize everything from your playlist to the ads that play in between.  It will play new music based on your past listening history.  It will choose routes based on your and other people of similar attributes' driving preferences.
I do realize two things.  All this automation may lead to the "Rise of the Machines" as foretold in The Terminator.  Secondly, it turns off the driving enthusiasts who have felt the loss of "connectedness" to the car with all the current electronic driver aids.  But for the rest of the driving masses who just need to get from point a to point b in the safest, fastest, most convenient way possible, they will trust the machine to do the work for them.

Wednesday, January 14, 2015

Customer Focus

A lot has been written about Jeff Bezos' laser focus on customer service.  (Here's one.)  The same can be said about Steve Jobs' unrelenting focus on user experience.  Kip Tindell of The Container Store has stressed in many interviews how he and puts employees first, which drive customer satisfaction.  There are other companies that focus on the customer as one of their top priorities, and it shows in customer satisfaction surveys - Southwest, Starbucks, and USAA among others.  All these companies take different paths, but the end result is the same.

I believe that, while not a guarantee, focusing on the customer is a huge factor in a company's success.

Amazon, Apple, and The Container Store all sell goods and services.  Focusing on the customer buying their products should come as second nature.  But as Operations practitioners or IT professionals, focusing on the customer may not come naturally.  We focus on process, and finding efficiencies, solutions and technology. 

As professionals who do not  sell on a day-to-day basis, we must strive to identify who our customers are and focus on them.  We must evaluate each policy, process, solution and technology with a focus on our customers: will it help, or will it hinder our customer?  We must not put policies in for the sake of policies, or technology because they are cool, or a solution that benefits somebody else, but burdens our customer.

This reminds me of an article I read many years ago about the idea that we are all salespeople at some point or another in our lives.  At a job interview, we sell ourselves.  In our jobs, we may have to sell an idea to a group.  In all those situations, focus on the customer, present what's in it for them.  What value will you or your idea bring to them?

Like a company selling its wares, while focusing on the customer will not guarantee your success, it surely will increase your chances.



Wednesday, January 7, 2015

Re-Evaluating The Reason for Periodic System Freeze

In a typical IT Application Management Policy, there are periodic system freezes, sometimes for mission-critical applications only, but usually for all applications.  This means that in the week or weeks preceding a fiscal month-end or quarter-end, and a week after, no changes are to be made in production systems.  An exception process will require higher management approval from both business and IT application owners.

The main reason was that any downtime, in order to make system changes, or as an unintended result of system changes, will delay or stop critical business processes, such as order processing or closing of accounting books.

In the days of applications hosted in-house, and even today with monolithic ERP systems, it makes sense to freeze entire applications.  Such applications may require entire servers, or at least application services to be restarted, even to deploy a fairly simple change.  In order to reduce risk of applications not starting back up, or behaving improperly after the change, or simply introducing bugs, change freezes should be imposed on the entire application.

With cloud-based applications like Salesforce.com, this policy should be tweaked depending on what is hosted in Salesforce.  For example, if Salesforce handles Opportunity Management and Quotation Management, a freeze must be imposed on objects that support those functions.  However, if it also hosts a custom application, for example, a partner locator, the freeze should not apply to configuration changes related to the partner locator.

Installing packages from the AppExchange should also be allowed if they do not affect the processes that are deemed critical by the organization.  As in the example above, if it does not affect Opportunity Management and Quotation Management, which are deemed critical in closing the quarter, an app, say for example, the EverNote App, can and should be installed, if the business need dictates that the new feature be available in the next quarter.  Applications published on the AppExchange have gone through a Security Review conducted by Salesforce to reduce the risk on all their customers' Salesforce orgs and data.

Here is an example of what isn't allowed: Do not introduce a new required field on a quote two weeks before the end of the quarter, because that will slow down users who have gotten used to completing quotes in a certain way.  Another example that should not be allowed is installing the DealMaker by The TAS Group.  This affects Opportunity Management.  While it is possible to install the app and not show it to any users yet, it still affects the Opportunity object.

It can be argued that any custom Apex code should not be deployed, as the deployment will cause all test classes to execute.  Some poorly written test classes may affect critical processes.  This author recommends that Apex deployment should be avoided during a system freeze.

A colleague pointed out an analogy: like remodeling a house, work can be done in the bedroom downstairs, and the rest of the house is still habitable.  There is no need to shut off the power or the water supply.

In conclusion, the reason for a system freeze in a cloud-based multi-tenant application, such as Salesforce.com, should no longer be about potential system downtime.  Rather, it should be a more business-focused one: system and process changes should not disrupt closing deals in the current period, or chasing revenue, or ensuring product shipments, or anything else that will adversely affect users and customers.