On Working Remotely

I read a re-published article titled Working From Home Vs. Working At The Office: Who Gets More Done? by
Nate Hindman. The article was published on the Small Business blog of an insurer, The Hartford.

Of interest to me – a proponent of working remotely – was the comparison section, accompanying data, and the conclusion (which I share here):

Lister notes that when determining the efficacy of remote vs. in-office employees the culture of a team is as important as the work itself.

“If a team doesn’t know each other that well, it is far better to work face to face,” she says. In-person interaction “gives people the time to build social connections that make it easier to collaborate remotely and create that level of trust to be effective when they’re not in the same room.”

The salient points?

  1. Culture matters
  2. Rapport counts

Culture Matters

You can have the best people. They can be intelligent, talented individuals who know how to play nice with others. But if your culture is oppressive, their endeavors will fail.

Since I know and work with talented technologists I see this time and time again. Tip to employers:

If you want to keep top talent, you cannot pay them enough to put up with your crap. You have to stop the crap.

If you, as an employer, want to practice handing out participation trophies, you need to engage in a neighborhood sports league. People who are self-motivated enough to seek the knowledge they need – and wise enough to then apply that knowledge in creative, innovative ways – are demotivated by the recognition of “everyone as equal.”

But there’s a flip side: These same individuals are also not motivated by applause at the team meeting, Employee of the Month parking spots, or Starbucks gift cards.

I can hear you thinking, “So how do I motivate my top performers, Andy?”

I’m glad you asked,


That’s it. Training. Send them to training. They’ve self-identified as people who like to learn. Do you have a top shelf developer interested in cloud technology? Send her to Reinvent or Build. Save your Starbucks gift card money and allow someone else to park closer to the building. Send your top performers to more training.

I have been told thrice in the past six weeks about great people who left their last job or are about to leave their current job because their employer killed the training budget. Is training expensive? Yes. But not as expansive as finding a new employee – let alone a new top performer.

Employers, please do the math.

Rapport Counts

At Enterprise Data & Analytics, we often consult remotely, but we insist on starting projects face-to-face. Why? See the quote from the article above. Email is extremely subject to interpretation. People who don’t know me may misinterpret what I write in an email – unless they’ve had an opportunity to get to know me. there’s no substitute for building rapport. There’s no other way to build trust. Both trust and rapport are best built face-to-face.

A little-known fact: poor rapport with the customer team is the number one project killer. I and my team cannot be successful if we are unsuccessful at working with your team. Fortunately, I and my team are fun to work with! We are not prima donna’s, we learned because other people shared with us and one of the things we learned from the people who shared with us is: We should share with others. We love learning! I think that’s why we love sharing and helping others learn.

Customers are often shocked that I consult. I have a great team working with me but yep, I still show up and deliver. I think folks get the impression that someone who’s authored / co-authored a dozen books just isn’t accessible. Nothing could be further from the truth!

I help people every day!

In addition to public training with Brent Ozar Unlimited and SQLSkills, I deliver customized private training to companies on-demand.

I and my team deliver data integration solutions for customers, and we bring value when we do. (The post linked in the last sentence is worth the read. The short version is: Expensive developers are not as expensive as they appear.)

How may we serve you? Let us know!


  1. Be a dependable adult. This isn’t about age. It’s about maturity. Penny Trupe is a millennial and she’s a rocking consultant at Enterprise Data & Analytics.
  2. Share knowledge if you have it, seek out a mentor if you need to learn. (Pro tip: we all have something to share and something to learn.)
  3. Work hard and work smart. For more information, see Grant Cardone’s books The 10X Rule and Be Obsessed or Be Average. A tip o’ the hat to my Data Driven Podcast co-host and brother from another mother, Frank La Vigne (blog | @Tableteer), for turning me on to Grant.


Why I Love PB

Why do I love personal best? It’s the best kind of competing, competition with past-Andy.

I want present-Andy to do more and be better every day. A mentor once described this as, “Strive to suck less each day.” I can identify with that sentiment! I prefer the positive motivation I get from measuring things like weight, steps, diet, exercise, and other health parameters (blood sugar, for me) with SMART goals applied.

I measure things like days-in-a-row I didn’t cheat on my diet. While this is particularly depressing when the number drops to 0, building that number back up to the previous personal best is powerful motivation to not cheat. This kind of goal provides both negative and positive reinforcement.

I can measure the results of remaining on my diet in other ways, too:

  • My blood sugar returns to normal.
  • I lose weight.
  • I feel better.
  • And – surprise benefit from the keto diet – I’m less tired.

There are things beyond my control and SMART goals help me recognize this fact of life. For example, I cannot change the fact that I am aging at a rate of 1 s/s (1 second per second). But I can change what I do with each second. I don’t always get it right. But that’s a key part of a philosophy of personal best: It’s no longer about a Boolean outcome, right (achieving a single metric) or wrong (missing that metric in any of a thousand different ways), it’s simply about improving over the past personal best. Does a single metric goal exist? Heck yeah! But that goal is now seen as a milestone on a trek of never-ending personal bests.

Each personal best is a win. Each personal best is cause for celebration. You can achieve a personal best today, I know you can!

Do it.


Free Webinar – Introduction to Change Detection with SSIS 15 Mar 2018

Join me 15 Mar 2018 at noon ET for Introduction to Change Detection with SSIS, another free webinar sponsored by Enterprise Data & Analytics.

Change detection is the central component for Incremental Load data integration patterns. In this presentation I discuss and demonstrate three change detection patterns:
– No Change Detection
– Brute-Force Change Detection
– Hashed Change Detection

I hope to see you there!

Register today.


Why I Built SSIS Framework Community Edition, by Andy Leonard

few weeks ago I published a blog post titled Why I Built DILM Suite, by Andy Leonard – an excerpt from the book Data Integration Life Cycle Management with SSIS. Last week I published Why I Built SSIS Catalog Compare, by Andy Leonard, another excerpt from the book. This post is another excerpt of the same book. Enjoy!

A best practice in SSIS development is to build small, unit-of-work SSIS packages. There are several reasons for this:

  • SSIS is software development and a best practice with software development is separation of concerns. Separation of concerns is primarily achieved by decoupling. One way to decouple SSIS is to build small, single-function SSIS packages.
  • If an SSIS package contains seven Data Flow Tasks and the design of a source table changes and breaks one Data Flow Task, all tasks in the SSIS Package should be tested. Fewer Data Flow Tasks means less and quicker testing.
  • If all SSIS packages contain the minimum number of Data Flow Tasks (optimally one) and a package execution fails in the middle of the night, on-call support has a pretty good idea where to begin troubleshooting.

“There’s No Free Lunch”

While these are good and valid reasons to build SSIS solutions with several smaller SSIS packages, following this advice creates new issues. One issue: You now have a bunch of SSIS packages that require executing in some order. What’s a data integration developer to do?

8.1   SSIS Framework Community Edition

Consider the SSIS Framework Community Edition, a free and open-source solution available at DILM Suite. SSIS Framework Community Edition allows the execution of one or more SSIS packages – in a specified execution order – by executing a single stored procedure and passing it a single argument. For example, I can execute a test Framework Application with the following Transact-SQL statement:

Continuing my theme of “there’s no free lunch,” SSIS execution frameworks greatly simplify execution commands like the one listed above but they create another issue: the need to manage a lot of metadata. SSIS Framework Community Edition relies on metadata to build a Framework Application – mentioned earlier. A Framework Application is a collection of SSIS packages configured to execute in a specified order. If you build idempotent (re-executable) Transact-SQL that includes print statements (to inform you of what the T-SQL is doing) and use any kind of formatting, you’re looking at 30-40 lines of Transact-SQL per SSIS package.

That’s a lot of T-SQL.

8.1.1  Help for SSIS Catalog Projects Already Deployed

Perhaps you are reading this and thinking, “That’s awesome, but I have a bajillion SSIS packages already deployed to my SSIS Catalog. What about them?” I wrote a blog post titled Adding an SSIS Application to SSIS Framework Community Edition. I included a script at the end of that post that uses three parameters – Framework Application Name, Catalog Folder Name, and Catalog Project Name – and from those three pieces of metadata loads the metadata for a new Framework Application into SSIS Framework Community Edition’s metadata tables, as shown in Figure 8-1:

Figure 8-1. Building a Framework Application from an SSIS Catalog Project

The script reads SSIS Catalog Project metadata shown in Figure 8-2 and loads the Framework Application metadata into SSIS Framework Community Edition metadata tables in a few seconds:

Figure 8-2. The SSIS Catalog Project

The Framework Application named “Load AdventureWorks2014 Stage” which contains 71 SSIS packages can now be executed with the following Transact-SQL statement:

8.2   Viewing SSIS Catalog Reports

We can view the executions of these 71 SSIS packages using the Catalog Reporting solution built into SSMS. To view all SSIS package executions, right-click the SSMS Object Explorer Integration Services Catalogs node’s SSISDB node, hover over Reports, hover over Standard Reports, and click All Executions as shown in Figure 8-3:

Figure 8-3. Opening the Built-In SSIS Catalog Reports

The All Executions report displays and surfaces SSIS package execution logs as shown in Figure 8-4:

Figure 8-4. The SSIS Catalog All Executions Report

To summarize, we supplied three pieces of metadata to a Transact-SQL script that built a Framework Application containing 71 SSIS packages, and then we executed those 71 SSIS packages by starting a single stored procedure and passing it one parameter value.

8.3   Viewing SSIS Framework Community Edition Metadata

I mentioned earlier there’s quite a bit of metadata required for the SSIS Framework Community Edition. The script we used earlier is a nice piece of automation for entering SSIS Framework Community Edition metadata, but what happens when we want to view the Framework Applications already stored?

Framework Browser

Enter Framework Browser, another free utility from DILM Suite that you can download from DILM Suite – shown in Figure 8-5:

Figure 8-5. The Framework Application Load AdventureWorks2014 Stage

A Framework Application is a collection of SSIS packages – called Application Packages in the Framework – that execute in a specified order. Framework Browser lists Application Packages in the order they execute.

If we expand the Application Properties virtual folder, we see Framework Application metadata. Expand the Application Package node and the Application Package Properties node to surface Application Package metadata as shown in Figure 8-6:

Figure 8-6. Surfacing Application and Application Package Framework Metadata

Framework Browser is another free utility from DILM Suite.