Two Epic Failures – Sears Black-Friday and Motorola Cyber-Monday

December 2nd, 2013

In the past 48 hours I’ve witnessed two absolutely epic failures on the part of two different ecommerce sites. Both seemed like technology failures – except that they were not. They were failures in management.

The first was when a friend of mine ordered two new appliances from, a refrigerator and a dishwasher. The initial order on the web site went fine, with next day delivery promised and scheduled. The first sign of trouble was when my friend got a call from the installers asking them to confirm that she is in Illinois for the dishwasher delivery. She is, in fact, in California, and it’s hard to imagine how this error occurred. As a result, she cancelled the dishwasher order.

She was at home when the delivery people for the refrigerator arrived. Unfortunately, as they drove up to the house they managed to hit a pole and take down some phone lines. Their reaction – to drive away, refusing to deliver the refrigerator and promising to reschedule for the next day. The next day, they didn’t arrive.

Upon calling Sears customer service, even the customer service agent was shocked by the notes on the account record, but still couldn’t promise timely delivery.

The end result – two cancelled orders. The business went to Home Depot. Worse, my friend, for whom Sears has always been the very first stop for appliance purchases, has sworn not only to never shop at Sears again, but is literally making friends promise to never shop at Sears again.


The second epic failure is great cyber-Monday Moto X fiasco. By all accounts, the Moto X phone is a great phone, just overpriced. So when Motorola announced a Cyber-Monday sale pricing it comparably to the Nexus 5, they got quite a bit of traffic. They must have lacked faith in their own phone because the site was clearly not able to handle the traffic – it effectively went down immediately at the time the promotion was expected to begin.

It stayed down for hours (and is still down as I write this), only briefly becoming available for developer edition phones that quickly sold out. During this time, Motorola’s only communication were two tweets and Facebook posts tell people what they already knew – that the site was down, with no additional information as to when it will be back up.

So what was appearing on the twitter feed? Numerous posts by frustrated potential customers, many who had spent hours waiting online to purchase a phone. Posts of those who decided give up and get a different phone. Several sponsored posts by LG for their LG2 phone. And to add insult to injury, posts by Motorola about tickets to a Wired party, that nobody seemed to care about, and many found offensive.


You may think these were both failures in technology, but they were not. They are failures in management.

Sears had numerous opportunities to make things right for my friend. They could have apologized and expedited delivery. They could have thrown in free delivery. They could have assigned someone to solve the problem and do whatever they could to ensure customer satisfaction. They did not, and lost a customer for life. Clearly their customer service people were not empowered or motivated to provide good customer service, and that comes from the top.

Motorola had a golden opportunity to build excitement for the Moto X. They could have solved the web site problem in minutes by simply promising to honor the pricing on all orders until midnight. That would have immediately reduced the load on their site, as the load would naturally distribute itself through the day. They could have communicated what they are doing and how they were planning to handle the situation. Instead, they focused on fixing their technology instead of helping and communicating with their customers.

Websites get overloaded. Technology has glitches – we all know that. The measure of a company is how they deal with these failures and deal with their customers. This is the true failure of both Sears and Motorola in these stories, and they are entirely failures in management and culture, not failures in technology.

Dreamforce Hackathon turns Greek Tragedy

November 24th, 2013

I’ve been reading the various articles and tweets about the aftermath of the Dreamforce hackathon, and so far it seems to be playing out as a Greek Tragedy

Consider the folks at Upshot. There are two facts that are undeniable – first, that they demonstrated something before the Hackathon, and second, that they should have only been judged based on what new technology they developed during the hackathon. You can argue rules and technicalities, but in my mind they had a moral responsibility to make it very clear to the judges exactly what parts were developed for the hackathon and make sure the judges considered only that in their evaluation. I have found no evidence that they had done so (I certainly did not see that in their demo).

So now, and forever, their company history will be tarnished with the perception that it was founded on deceit, their integrity always in question by customers, investors, vendors and potential employees. Who will trust them? They may find the cost of their million dollar prize to be very high in the long run.

Speaking of trust, nothing is more important to Salesforce. Let’s face it, we all trust them with our data – all sitting unencrypted on multi-tenanted databases. We trust their employees when we grant them login access to diagnose problems. So I trust Marc Benioff when he says there will be an investigation – not because I know him personally (we’ve never met), but he knows that maintaining trust is all important, and that if there was a hint of corruption around this hackathon, it must be exposed and dealt with. I also believe Adam Seligman’s description of the judging – in that he believes that is how things went. But, I also know that sometimes when you’re a vice president, people tell you what they think you want to hear, so he himself may not yet have the whole story.

The real tragedy, and the ones I feel for, is for the developer relations team. I know many of them, and I know how excited and passionate they were about the hackathon, and the prospect of it bringing in more developers to the Salesforce platform. Imagine if you left Dreamforce feeling excited about having pulled off the richest hackathon ever, only to find within hours that everything you did is now suspect, and you have to face not only a PR disaster, but the scrutiny of your top executives – and that this all comes up when you are completely exhausted from Dreamforce and want nothing more than to sleep for a week. What a nightmare.

I don’t know what Salesforce will do, or even what they should do – other than the fact that I hope they don’t choose to just sit quiet and wait for things to just blow over.

But I do encourage anyone reading this to be patient. Those are good people who are doing their best in what have become very trying circumstances. If there was any real corruption, I’m sure it will turn out to be very isolated – I cannot imagine those people involved in a widespread conspiracy as some have suggested. It’s going to take them some time to figure things out and figure out the right thing to do, just as it would any of us in a similar situation. Let’s give it to them.


(Note – For the record, I was part of a team that participated in the hackathon and was not a finalist )

Introduction to Leadership and Management for Developers

September 20th, 2013

When I studied computer science, it was about gaining “hard” skills. Learning the technology – how to solve tough technical problems. There was almost nothing relating to what we now call “soft skills” – getting along with others, working with a team, dealing with managers, or being a manager.

Based on what I’ve seen of new graduates, things haven’t improved much. Yet in the real world, those “soft skills” are what really make the difference between someone who is truly driving the agenda, and those who are just pounding out code on demand.

I’ve learned and forgotten and learned hard skills throughout my career. But I can tell you this – it’s the soft skills – the leadership skills – that have made all the difference.

The problem is, that most leadership training isn’t design for developers (you know, people who spend 90% of their time dealing with relentlessly logical machines as compared to somewhat less rational human beings). You might think that puts us at a disadvantage when it comes to learning leadership, but it doesn’t. It’s just that the way you might teach leadership to an English major, psychologist, or MBA doesn’t necessarily work that well for developers.

So here it is, a leadership training course designed specifically for software developers. I’ve never seen anything quite like it, and I’m very excited to be able to present in one place many of the ideas and techniques that I’ve been teaching for many years.

Check out “Introduction to Leadership and Management for Developers” on

So you want to be an entrepreneur?

May 6th, 2013

I think every developer, at some point in their career, has that whisper of a dream – what if I was the person to start a company… to be my own boss? What if there was a way to get out of this cubicle and make some serious money?

And it is a dream in more ways than one. You see, common mythology suggests that new ventures are either wildly successful, or total failures – the dreams are either the best dreams you can imagine, or nightmares. But in reality, most dreams are just – dreams. Ordinary and usually pleasant stories we barely remember when we wake up.

And so it is with entrepreneurship – some are wildly successful, some total failures, but a great many are ordinary and pleasant outcomes – individuals who make very nice livings in small or medium size companies, with greater freedom and income than they would ever have at a real job.

I’ve spent almost my entire career at small companies and start-ups, so I suppose I’ve lived that dream in a sense, and have learned a great deal along the away. And you know how it is with me – when I learn something, I like to share it – usually in books, but increasingly now in courses on Pluralsight.

So I’m pleased to present my new course “So you want to be an entrepreneur?”

This course is the sequel to my Career and Survival Strategies for Software Developers course – a guide to those who are curious about the possibilities of taking that particular career path of entrepreneurship, or who are already on that path and are looking to fill in some gaps in knowledge and perhaps avoid a mistake or two along the way.

New course on for .NET Developers

February 26th, 2013

I’m pleased to announce my latest Pluralsight course “ for .NET Developers”. This course is a prequel to my course “ and Apex Fundamentals for Developers” intended specifically for .NET developers who are curious about

For more information, check out Pluralsight’s  blog post announcing the course.


New Course: Career and Survival Strategies for Software Developers

January 10th, 2013

I just released a new course on Pluralsight titled “Career and Survival Strategies for Software Developers”.

What I’ve tried to do is put in one place, all of the “stuff” about being a software developer that we want to know or need to know, that are rarely discussed, or that we’re sometimes afraid to ask about.

You know what I mean – those times in your career that you had no idea what to do – which job offer to accept? What to learn next? Is it time to change jobs? Maybe you ask a friend, or post an anonymous question on a forum. Or more likely, just take a guess and hope for the best.

Or the times when you wonder if you’re the only person who is feeling stressed about keeping up with technology, or the fact that the executive team has been locked in a conference room for three days with bankers coming in and out….

Mostly, it’s all the stuff I really wish someone had told me back when I started out. Hopefully it will save you some grief.

Here’s the official announcement and a better description:


New course: and Apex Fundamentals for Developers

November 8th, 2012

I’ve just had my very first online course published at Pluralsight. Here’s a brief description:

Apex is the native language of the platform, and there is a huge demand for skilled developers in this space. The Java/C# like Apex language looks familiar enough that experienced developers often expect a short learning curve, but the platform is actually radically different, and requires use of a unique set of set of design patterns. In this course, you’ll learn the core concepts that are essential for every Apex programmer to learn, and a roadmap to further resources to help you quickly become an expert in this rapidly growing space.

You can read more about it on the blog. is the next Visual Basic

September 24th, 2012

I just came back from the Dreamforce conference with an epiphany – is the next Visual Basic. Some less experienced software developers might think that’s an insult, but those of us who have been around know that it’s not merely a compliment – it’s an observation that, if true, represents a potential tectonic shift to our industry.

To understand why, I need to take you back over 20 years.

When Visual Basic 1.0 came out (I participated in the original beta program), the reactions to the product fell into three categories:

  • Most professional C++ programmers dismissed it. VB was a “toy language” or a “glue language” for components – not for serious software development.
  • Increasing number of software engineers embraced the language because, to put it simply, when it came to desktop applications you could be an order of magnitude more productive in VB than in C++. It may not have had the stature and features of a “real” professional language, but it sure was profitable to work in it.
  • VB was easy enough for anyone to use, so everyone did. Doctors, lawyers, students – millions of VB developers sprang up out of nowhere and wrote a lot of code. Much of it was very bad code, but that’s what happens when a bunch of amateurs get in the game. Entire book, magazine and training industries grew up to help them get better, and many of them did and built entire careers around the platform.

By the time VB6 came around, it was the most popular software development language and platform in the world. Simply because it was easy, and it was productive.

Why was it productive? Because VB put an abstraction layer over the Windows API that was infinitely easier to use than coding to the native API or other available frameworks such as MFC or ATL. You couldn’t do everything in VB6, but you could do most of what you needed, and could call the API directly if you really needed to. Having a rich set of available components to purchase didn’t hurt either.

Microsoft did a lot of things right building the VB community. They had great developer and ISV relations. They supported several conferences. There were books, documentation, whitepapers and so on. They really set the standard on how to build a platform.

Then they created the .NET framework.

There was a lot of negative reaction from the original VB6 community towards VB .NET, some calling it “VB .NOT” or VB.Fred (coined by Bill Vaughn). Some programmers made the transition. Some switched to C#. But two things were clear. First, VB .NET was indeed a powerful, serious, professional language and platform for software developers. Personally, I love it, and still use it all the time. But it was equally clear that VB .NET is not easy. In fact, the entire .NET framework is robust, powerful, sophisticated and complex. It’s a great platform for software developers, but is it a platform that makes it easy for non-programmers to write line of business applications? Not even close.

Both VB .NET and C# are native languages to the .NET framework – the Windows API of today’s software. Missing was the magic of the original VB – that layer of abstraction that made it easy for anyone to write software.

I’ve been searching for that magic for a long time. I kept waiting for it to appear out of nowhere the way VB 1.0 did. I sure didn’t expect it to sneak up on me from behind.

Read the rest of this entry »

Advanced Apex Programming for and

August 5th, 2012

Advanced Apex Programming for and

As many of you know, I do enjoy writing books. Which is a good thing given that I’ve written quite a few of them. I’m proud of all of my books, but there are a few that fall into a special category – and that includes my latest effort.

If you’ve looked at the book market, you’ve probably noticed that a lot of books are very similar. Most subjects offer dozens of competing books that have pretty much the same content. Personally, I’ve always felt that if a good book exists on a particular subject, I shouldn’t waste my time writing another one. As a result, most (if not all) of my books have been either unique, or the first one in a given space. For example: my original Visual Basic Programmer’s Guide to the Windows API was the only book for a long time that dared to teach Visual Basic programmers to use the Windows API. My recent book on teaching leadership skills to teens is nothing like anything else on the market.

Which brings us to Advanced Apex Programming.

As I mentioned in my previous blog post, I’ve been spending more and more time over the past few years working in Apex – the native language of I’ve learned a great deal in the process and… well, you know how it is. Sooner or later, if I learn something, I end up writing a book to teach it. In this case, I was astonished to find that nobody has written an advanced Apex book yet. There’s lots of great reference material, a good selection of articles, and plenty of beginner’s texts out there. But there was no book to help the intermediate developers take the next step, and give the advanced developers something to geek out to. Even the domain, was available!

I couldn’t resist.

You can read about the book at I’m as excited about it as I was that original VB Programmer’s guide. As with that book, I think it’s going to help a lot of programmers write a lot of great code and become more successful. And as an author, hearing from readers that a book I’ve written has helped them build their careers is what really makes it worth the effort.

Leaving stealth mode

June 25th, 2012

For the short version of this story, check out

Has it really been over a year since I last posted? Wow. The main reason things have gone quiet is because, somewhat to my surprise, I’m doing another startup, and we’ve been in that mysterious state of being known in the industry as “stealth mode”. And now, it’s finally possible (even advisable) to write about what I’ve been up to.

In some ways, it’s a rather “boring” startup. We must forgo the drama of wondering if we can develop a prototype into a real product, if that product will find demand, if we can recruit an executive team and if we can find a business model that works or a way to monetize the business.

We have a great executive team. We have a product (and believe me, I know the difference between a product and a prototype). We have a simple business model – providing a solution to a business problem that companies are willing to pay for. And we have paying customers.

Of course there’s still plenty that needs to be done, but I think we have a pretty good foundation to grow on.

So what do we do? Our team calls it “Moneyball for Marketing” – it runs on and provides a way for companies to accurately figure out the value of marketing campaigns, understand their sales and marketing funnels, and market to existing customers as easily as to new leads. I’ve been assured by my co-founders (and customer responses) that these are all good things and very exciting.

As a software developer, I’m much more excited by the product itself. It represents the culmination of another unexpected twist in my career. As many reading this know, I’ve spent most of my career as a developer, author and speaker on Microsoft technologies. Well, about 5 years ago, I was called in by a friend to help write some triggers for a organization. As time went on, I found myself doing more work on the platform, including some larger customizations and applications, to the point where I was actually doing most of my development work in Apex (the underlying language of the platform). I still do .NET code of course, but now it includes integration as well. I find writing Apex to be a uniquely interesting and challenging experience, and (to be perfectly honest) a great deal of fun.

Full Circle CRM Response Management (that’s the name of the product), is one sweet piece of code. I’ll be writing more about that shortly – there’s more to this story. But for now, suffice to say that I’m quite proud of what we’ve built. It’s reliable, scalable and even innovative (and yes, I do consider reliable and scalable to be as important, or more important, than mere innovation).

I invite you to check out the company profile at, and visit our website at

And stay tuned. I promise my next post won’t take a year.