Software

Data Charts It's a funny thing about Salesforce developers. Many of us really dislike change, even when we know very well it's necessary and worthwhile. Why? Too often, changing an application is like re-routing plumbing after the house is built: making a change that looks small can take a whole lot of effort with a whole lot of risk for collateral damage.

software automation Can software replace my job? It's a concern with roots going back centuries to the arrival of the first automated power looms in 18th-century England, continuing into more modern times with the large claw-like robots that build automobiles. Today it seems there are hundreds of websites making their living pushing clickbait headlines describing the perils of the coming Robopocalypse of software automation replacing human workers, and I often see those fears bubbling to the surface when working with clients. Fortunately, in my experience, those fears are often overblown, and I'm not alone in thinking so. Wired's James Surowieck agrees that we have nothing to fear.   The automation jitters usually start to come out during discovery. I talk with clients to clarify the business logic, workflow rules, or other automated features, and I'll use the term "robot" to describe the software we're building. After all, "if I can't tell the robot what to do, how will it know how what to do?" It's somewhere around here when we're asking somebody to explain their whole job function that somebody on the client's team will mutter, half-jokingly, "So I guess I better start looking for another job, huh?" It's not hard to understand where that thought is coming from. After all, if we can completely strip away the human layer and turn their job into a series of rote, mechanical steps, what role is left for them? I quickly try to assuage their fears.

It's easy to assume that a someone needing user support is not using the application correctly. What if there really is a bug? User support We've all seen the acronyms used by support techs: ID-10-T errors, PICNIC, PEBKAC, and so on. On the one hand, they're pretty mean-spirited (but kinda funny). On the other hand, support techs can legitimately be exasperated when rude, frustrated users scream at them to solve problems that aren't their fault. Yes, some support techs really do have to walk users through the most basic of operations like making sure the computer and monitor are plugged in and powered on. On the OTHER other hand, it is the job of support techs to bridge that knowledge gap. As consultants, we are often called upon to support our own or someone else's software. We have to be the opposite of that acronymic stereotype. Users aren't idiots; they're experts in something we are not proficient in and vice versa. Once in a while, we are on the receiving end of customer support, and these experiences can be real eye-openers. I remember one instance where we discovered an undocumented limitation of a mature third-party application.

app developers

Customers != Solution Architects

A few years ago, we were asked to quote a small automation for an existing, repeat client. They wanted help streamlining a spreadsheet-based process that took about 1/2 day of a high-level employee's time each week.

Customer: Can you help us save some time by writing some Excel macros?

Susco: Of course we can develop some Excel macros for you. But first, why do you need them?

 

ONE:  Don't just "break the system" I remember my very first QA task when I started here three years ago.  I was testing a client’s internal employee management system.  I had never tested anything before, so I asked my project manager, “How should I QA the software?  What does that mean?”  He answered simply: “Do your best to break the system.”  Okay, I thought, should be easy enough.   So, when I sat down at my computer, I opened the user management screen and did my best to mess with it – invalid email addresses (example: cersei@lannister.net, ned@winterfell, harryunderthestairs.com), phone numbers with too many or too few digits.  And I made sure to document in Notepad every “error” I found this way. After about an hour of this, I proudly sent my list to the developer.  Look at all the bugs I found!  A few minutes later, the programmer walked over to my desk and explained gently that these were not the only types of bugs I should be looking for.  While it is worth knowing which fields catch invalid data types and which do not, this is only the beginning of the testing process.

What is an Emergent Workflow?

I'm not sure if there's any consensus on the definition of an emergent workflow.  It's a term that I use to describe a pattern I have witnessed in business software.  To me, an emergent workflow is a workflow that was not designed explicitly into a piece of software, but slowly evolved via users' usage of the system, and the development of conventions to support workflows as they develop.  If you have ever developed a piece of business software that manages any form of workflow, and that software has been in production for more than a year, you can be certain that there is an emergent workflow within that software – whether you realize it or not.

software developers

So What?

"There are only two hard problems in Computer Science: cache invalidation and naming things." - Phil Karlton. The above quote, while somewhat tongue in cheek, wears the ring of truth.  Naming things is hard.  Even when you put enormous effort into consistent and clear naming, you will invariably end up with some muddy and inconsistent caverns in your code.  And when you are unfortunate enough to inherit code from someone (or multiple someones) who put no effort into their naming...You're in for a world of pain.  If you have been programming for any length of time you know what I am talking about.