Back with new focus

Back with a new focus

051919_1747_Backwithane1.jpg

First let me say wow can’t believe that it has been almost 3 years since I have blogged.

The last few years my career have been focused on transitioning from being a pure hands on technologist to management and leadership roles. This transition has had its ups and downs with making many mistakes along the way. Those mistakes, however, have been what has opened doors and lead to great success. One of the most important lessons I learned along this journey is don’t be afraid to admit and share your mistakes with others. In sharing and asking for advice you will quickly find out that you’re not the first one to make these mistakes and there is a world of advice out there to help you along the way.

So why after three years to I pick up the proverbial pen again? First is a conversation I had with Erik Darling (@ErikDarlingData), http://erikdarlingdata.com , recently where I said I have all these blog posts sitting in draft that I just haven’t finished. His response was “Who cares just post them it’s just a blog”. I laughed and then thought wow he’s right it is just a blog and perfection is not required.

Second, I’ve started mentoring a few different people and one of the topics we have been discussing is self-marketing. This led me to realize that I should lead by example to show the power of enlightenment and engagement with your peers.

So stay tuned for my new series on Leadership: Lessons learned.

051919_1747_Backwithane2.jpg

Leadership Part 1: Team building

Leadership Part 2: Talent acquisition and Employee Retention

Leadership Part 2: Talent acquisition and Employee Retention

The two most costly human capital expenses an organization will have is the onboarding and offboarding of staff. Just take a moment to think about that and if your scratching your head or think I’m crazy let’s take a moment to explore both of these costs.

Loss of staff costs: (Loss of intrinsic knowledge) + (Loss of productivity) + (Irreplaceable skills) + (Loss of leadership)

Talent acquisition: (Staff time to interview) + (Search firm fees) + (Employee referral fees) + (Onboarding time)

Examples:

Backfill Database administrator in NYC.

In this example we will say we Phone screened 20 candidates, brought 5 in for in person and 2 for final meet with CTO.

Blended rate for staff = $150/hr

Staff time to interview = (20 phone screens * 1 hour * $150) + (5 onsite * 2 hours * 150) + (2 final * 2 hours *150) = $5100

Search firm fees = 180,000 * .25 = $45,000

Onboarding time = 30 days to be production = (180,0000 * (30/365)) = $14,794

Talend acquisition cost = $5100 + $45,000 + $14794 = $64894

This isn’t even factoring in the whole calculation of loss of staff and projects that couldn’t be completed. As you can see the cost goes up very fast.

Why do I bring this up? Well that brings up the next point which is, investment in your current staff.

Investment in current staff

We so easily get lost in budgets and bottoms lines and asking the in the moment question of “Do we really have to spend that now?” I’d ask the question back of “Do you really want to avoid a $100 lunch bill for the team and instead pay to replace them?” If your working for an organization that can’t see the value of investing in staff, then you should be fighting to change that mentality on a daily basis. This is the difference of being a leader versus being a follower. There should never be a moment that you aren’t fighting for your team, as this shows not only sets an example for the rest of leadership is also shows your team that you have their back and believe in them.

Now investment of staff can come in many ways and here are just a few ideas:

  • Team building events
  • Monthly lunches
  • Quarterly happy hour
  • Training
  • Conferences
  • Flexible work schedules

Out of this list I just want to take a little bit to focus in on a couple of the areas above. The first is around team building which overs the first three items in the list. Team building is an investment in not only the team but the individuals. Studies have shows that when you have employees that have a “Friend” at work they are more likely to stay and have higher productivity. See Gallup Productivity Poll or CNBC Why work friendships are critical. These are relationships you should foster, support and not get in the way of. They will develop naturally with your overall support of the team no need to create crazy get to know you events to force them.

Next, let’s talk training. This is a simple one. Budget for training and encourage your team members to attend training, conferences or your local user groups. If there is a user group that meets during the day encourage them to take the time to attend. This will have a significant long term benefits for example, in the technical space it will result in better innovation and less technical debt. I’ll save technical debt for another post, as that is a topic all in it’s own. I can’t stress enough to reinvest in your employees and provide the training for them so they can always feel as they are growing and not becoming stagnant.

Lastly, flexible work schedule, this is a hot button topic I know at a number of different organizations and wraps up to a much broader topic of Work /Life Balance. The first piece of advice I will give here is if that you don’t already have a policy in place to handle things such as remote work, sick time and vacation rules create one now. Having clearly defined rules around what is expected when someone is working remotely makes sure both employer and employee are on the same page. For example, here are a few areas I make sure are covered in a remote policy:

  • Working hours
  • Response times
  • Work Phone forwarding
  • Messaging (Skype, Teams etc…)

Remote work is only one a part work life balance as you also want to consider flexible work hours and vacation policy. Flexible work hours is rather straight forward, learn what your employees needs are and how you can combine them with business needs to make sure that you have both business coverage and work/life balance. Let’s say you have Employee A who has to drop kids off at school before coming to work and allowing them to come in at 9:30 rather than 9:00 could mean they wouldn’t have to find childcare and incur extra cost. This results in reduced costs for the employee and usually a higher satisfaction level with their employer. Vacation policy is one that is not always so obvious but not only encouraging employees to use there Paid Time Off but to also fully unplug is key to overall satisfaction. There should never be pressure to check emails or take phone calls during PTO and in some cases I have actually taken this as far as to create a policy that states if you check or reply to an email while on vacation your account will be locked out.

In conclusion don’t be the horrible boss, value your employees and realize that without them and their dedication you can’t effectively lead.

Leadership Part 1: Team building

Leadership Part 1: Team building

One of the most challenging aspects of being a good leader is building a team that can support the initiatives you will set forth. Without a team that will stand behind you and one that you will fight for can be the difference of success versus failure. I’m sure most of this sounds like a no-brainer and your reading this going “Duh, he’s stating the obvious.” While this may seem so obvious it’s still important to reiterate.

Myself, I have read numerous books, see below, on how to build a strong teams and they have all helped mold my approach. One of the most influential experiences for myself was having the opportunity to spend some time around the Military and learning how to build a team when you don’t necessary get to choose your team members. Learning how to find the strengths and weaknesses and put everyone in the best position to succeed is an art form that will take practice and you will undoubtedly like myself make mistakes along the way.

Team Building Books

Get to know your team members

This is something that I learned the hard way on how important it is to get to know each team member. Now depending on your team size it may be more difficult to get to know everyone as time and logistics will be a hurdle for you, but I can promise that the more you get to know your team the stronger team you will have. So how do you go about getting to know your team? For myself what has worked is the following structure.

  • Direct Reports
    • Weekly one on one sessions
    • Required to also have weekly one on one sessions with their direct reports
  • One Level down
    • Monthly touch points
  • Two levels down and below
    • Quarterly full team meetings with small group break outs

The one on ones are really a key to getting to know your team. During this time make sure not to just focus on work related projects but also get to know your team members personally. Keep them light, laughing is ok and allowed at work despite what HR may say, and make sure that they also report back to you on their direct staff and what’s going on. This helps you gauge not only how things are going with the team as a whole and keeps your team accountable for making sure that your process is being followed.

Quarterly full team meetings can be an opportunity to get out of the office and plan a team building event. These don’t have to be those silly get to know you events we all went through when starting school. Find activities that challenge everyone to work as a team in a fun way. One of the best events I ever did was relay go cart racing. This required strategy, planning and learning the strengths of all different team members.

Don’t put all the rock stars on the same team

Now that you know the different personalities on your teams and who the rock stars or potential rock stars are it brings up the question of, how do I group my teams? My rule, and yes this is my rule you don’t’ have to listen to me, is to never put all my rock stars on the same team. Why you may ask? Well it’s a lesson learned from doing exactly that in the past. What it left me with was one team that got all the accolades, did a majority of the work and worked on all the cool projects. As for my other teams they became resentful and felt like they were in a dead-end position.

This made me take a step back and change my way of team structure and focus more on having strong leads on each team and leads that were not only experts in their field but also knew how to mentor and share their knowledge with the rest of their team to build them up. Team leads on any of my teams are required to have three key attributes:

  • Expert level understanding of their domain
  • Ability to mentor and train other team members
  • Ability to say “I don’t know”

The last one to me is key as I much rather get the right answer to something that have them feel they need to answer on the spot, make something up or assume they might know the answer. “I don’t know” to me means you don’t know the answer now, but you will get the answer and get it right in a short time frame.

For the actual organization and team structure make sure to put individuals together that don’t have conflicts or personality clashes. It’s a careful blend of with the goal to get the optimal output out of each team. Don’t be afraid of change either, the expectation your going to get the perfect teams on your first attempt is unreasonable. Conflicts will arise and some can be worked through and some can’t.

With that said don’t make it too easy either and put a team together because they are already friends or have worked extensively in the past together. You want to make sure that everyone is slightly challenged and not in too much of a comfort zone.

There is nothing wrong with keeping people on their toes. I compare this to a new pair of shoes, sure they are uncomfortable at first and need to be broken in but they don’t prevent you from walking, just reminds you that walking isn’t as easy as you remember in that old broken in pair.

Set a defined career path

This may be the most important thing you can do as a leader. People who don’t know what their career path looks like tend to become detached and don’t put in the investment needed to be the best team member possible. It’s also one of the primary reasons someone will start to look for another job, as they start to feel like they don’t matter and start looking for a place that will appreciate them. Now not everyone on your team may want to climb that proverbial corporate ladder so career paths are not always a way to move up but sometimes just a way to make sure they keep their skills current and are recognized for their achievements.

What is a career path? First, let me start with that it’s not a dictatorship or ultimatum. This should be a collaborative effort making sure to align not only the companies/team’s goals but also the individual’s goals. Employee A may have aspirations to be a CEO one day and employee B may be perfectly content with just doing their current job and knowing everyday what time they are going home. So, with that said here’s my definition:

  • Collaborative exercise that is reviewed at least yearly (I prefer quarterly)
  • Geared towards company and person goals
  • Measurable goals
  • Defined outcomes for meeting goals

I want to take an extra few moments to focus on the third point of Measurable goals. This is one of the easiest mistakes to make, making a goal that can be left up to interpretation will lead to very uncomfortable and possibly contentious conversations. Don’t let yourself or any of your leaders go down this path as no good can come from it.

Example of bad goals:

  • Become an expert in area X
  • Lead a conversation in area X
  • Increase revenue

Example of good goals:

  • Pass exam X before 4/1/2019
  • Achieve certification X before 12/31/2019
  • Server as technical lead for 1 project that was completed with no schedule delays before 12/31/2019
  • Raise top line revenue by 25% by 7/1/2019

As you can see the second list is well defined and makes sure there is no interpretation and leads to clear cut conversations.

SQL 2016 SSIS new feature AutoAdjustBufferSize

If you have not already seen in the What’s New in Integration Services list there is a new property for Data Flows that is called AutoAdjustBufferSize.  Why is this important and what does it actually do?

First, let’s remember that in SQL 2014 we had a max DefaultBuffersize of 100MB and to try and optimize this we would use calculations to figure out or row size and how to set the DefaultBufferMaxRows.   I’ve covered these techniques in the past in this video or you can read about it via Ginger Grant’s Blog.

Now in SQL 2016 we don’t have to worry as much about trying to perform these calculations as setting the AutoAdjustBufferSize to true will take care of this for us.   So what is happening when I set this to true.  SSIS will now ignore the DefaultBufferSize property and set the buffer size based off of the following calculation of DefaultBufferMaxRows * rowsize.  When performing this calculation the rowsize is actually calculated at runtime, while the DefaultBufferMaxRows is a property value you specify either when designing the package or through an expression and can be tied to a parameter.

I do have a big caveat to this and with doing some extensive testing you need to make sure that if you have a wide file and try to match SQL Server max row group size of 1,048,576 you can get an error of “Buffer failed while allocating”  due to not enough free memory on your system to auto adjust the buffer size (See Below).  So as with anything I recommend you test, test and then test again as I have seen some significant performance increase by changing this setting but also the dangers of not having enough memory.

Buffer error:

image

Use PowerShell to automate your Azure DB creation

Why create your databases manually if you don’t have to?  If there is one thing that I hate to do it is extra work when it’s not needed.  With the magic of PowerShell and Azure PowerShell modules you can easily automate the creation of your Azure Database.  You can download the scripts I put together from here and below is a little walk through on the scripts.

There are three files contained in the zip folder that will be needed.

  • AzureConfig.xml (Contains the username and encrypted password to login to Azure)
  • PasswordEncrypt.ps1 (utility to set the encrypted password for the AzureConfig.xml)
  • CreateAzureDBv12.ps1 (Script to create your Azure Database)

So why did I create my automation this way?  Well like I said before I hate doing extra work and that includes having to manually login, but I am also security conscious so I wanted to create a way to have a configuration file that would have my username and password and also store that password as an encrypted value.

To use this all you have to do is enter your username into the username tag in the AzureConfig.xml and then launch the PasswordEncrypt.ps1 and enter the password to encrypt when prompted and it will update the AzureConfig.xml file.  There is a default key being used in the PasswordEncrypt.ps1 that you can feel free to change but if you do you must change it in the PasswordEncrypt.ps1 on line 2 and CreateAzureDBv12.ps1 on line 36.

PasswordEncrypt.ps1image

CreateAzureDBv12.ps1image

And yes as I am writing this I realized I should of put the key into the config file as well but I will save that for the next update.

Now you are ready to use the CreateAzureDBv12 script which has the following parameters.

  • SQLDatabaseName (The name for your database)
  • Location (The Azure location you wish to create your database in)
  • SQLServerName (The name of your SQL Server.  This can be an existing or new server.)
  • StartIPAddress (the start IP Address to create the Azure Firewall rule for your server to allow connections)
  • EndIPAddress (The End IP Address to create the Azure Firewall rule for your server to allow connections)

There is also a default rule that is created to allow Azure IP addresses.  You can comment this out if you don’t want to create this rule.  Myself I do this because almost all the databases I create are being used by an Azure Web Application or Power BI.

Hope you enjoy these and love to hear feedback.

Power BI Embedded is here

The announcement of Power BI Embedded came last week during Microsoft’s Build Conference and now enables software vendors or anyone building an application to embed the power of Power BI into their application.  I have been hearing about this feature for almost a year now since starting at HIMMS 2016 conference where I had the privilege of running the Power BI demo’s at the Microsoft booth.  While hoping that this feature wouldn’t of taken a year to come to fruition, it is something to be celebrated now.

As provider of technology with I.Predictus we choose Power BI as our data visualization platform about 8 months ago and one frustrating point was not being able to give our clients a seamless interaction between our platform and our data visualizations.  They would click to view the visualizations and be brought to a separate login and a completely different looking platform.   While the visualizations themselves were insightful and received constant praise, we always heard the comment that they wish they didn’t have to login twice, and as a technology owner myself it left a bad taste in my mouth.   I even did a POC on using the Power BI API’s to render reports, however it didn’t give me the full experience that I was looking for.

If you have not had a chance to review the Power BI embedded architecture it is rather simple and is fully hosted with Azure ARM and clients do not need a Power BI login anymore.  The pricing changes from a flat monthly fee to a per 1000 render pricing model, which depending on your usage may or may not end up costing a little bit more, but worth the cost of basically white labeling Power BI.  One additional note is that the this is currently in preview and as of now the data sources are slightly limited, Direct Query only works for SQL Azure, SQL Azure DW and HD Insight Spark and cached datasets can not be refreshed.  That shouldn’t stop you though from testing out this new feature and looking to integrate into your products.

Next week I will post a step by step blog on how to integrate an existing we application with Power BI embedded.

SQL Developer Edition is now free!!!

Announced on 3/31/2016 SQL Server Developer Edition is now free and available as a download to all who have signed up for Visual Studio Dev Essentials.  Even if you just call yourself a database guy/gal I highly recommend signing up here.  In the past the only way to get Developer Edition was to have a paid MSDN subscription and the licensing headache in a large development environment was a nightmare.   I’ve personally taken over 20 hours of Microsoft licensing training and I still couldn’t fully explain it to you.

This announcement significantly clears up the licensing model for developers,  remember you can’t use Developer edition for production environments or production data, but for all your development and test environments just sign up for the Visual Studio Dev Essentials and now you’re covered.  Now licensing isn’t the only advantage here because Developer Edition has all the features of Enterprise Edition, so if there are features that you want to explore that aren’t currently in use you now have access to them.   For myself I know I have been in the situation many times where someone was asking, “Why should we upgrade to Enterprise”, now you can build out a POC using those features in a dev environment and pitch the advantages to management.

With all these tools now being free and available it should also expand SQL Community, create more SQL professionals in the long run and lead to more qualified candidates for open positions.  This is something that all existing SQL professionals should be championing and sharing however you can.

Power BI and Google Analytics

One of the more underused features of Power BI is the Google Analytics data source.  Working closely with marketers and agencies I continue to see them struggle with getting and reporting on their data from Google Analytics and it should not be that difficult.   With Power BI or even with Power Query in Excel you can easily get, model and visualize this data with only a few clicks.

Let’s walk through how easy this is, first step is to get the data from Google Analytics which is done by selecting get data and choosing Google Analytics and logging in with your account.

image

Once logged in you will see a list of sites that are being managed under your account and from here you drill down into your site and select the data you need.  For this example lets say I want look at the number of hits on my site and be able to separate new users from existing users.  For this I will need to get hits from session, User Type from User and Date under time.

imageimageimage

 

Now that we have our data elements click load and the data will be loaded into Power BI.  To add a little depth to my report I did two things.  First I imported a date table, and if you don’t already have one here is a great blog to create one in power BI.  Next I created a custom column in my date table to specify records in three categories, “Last 30 days”, “Greater than 30 days” and “Future.

DAX : Last 30 Days = if(Now()>=[Date], if(DATEDIFF([Date],NOW(),DAY) <=30,”Last 30″, “Greater than 30″),”Future”)

Last I created a measure to show goal of hits by using hits from the previous year with 20% increase.

DAX: Hits Goal = CALCULATE(SUMX(‘I Predictus (2)’,[Hits]),SAMEPERIODLASTYEAR(‘G_Calendar'[Date]),all(G_Calendar)) * 1.2

Now I can create a couple simple visuals one showing overall hits in the last 30 days to goal and the other daily hits by user type against overall goal.

image

This is just a small example of the data available via the Google Analytics data source.  If you are using Google Analytics then I suggest you start using this data source and start developing your reports and dashboards.  Oh and how could I forget to mention that once you have these developed you can schedule the refreshes to be automatically done.

Power BI Export Data

If you missed it last week, Microsoft released a Service Update for Power BI , and a long awaited feature is now here.  You can now export the data that is behind a visual and this will close a huge gap for Power BI when compared to many of it’s competitors.  For myself this is beyond huge as all I have been hearing from clients for the past 5 months is, “When are exports going to be available?”. The answer is finally here and it is very simplistic to use.

For any visual all you have to do is select the menu in the top right and choose export data.

image

It is that easy and you will get a download the data in excel for that visual.  One note is that it does not drill down into the data.  The export will have at the same level the visualization is at.  For example in the above visual the following are the results.

image

However if you choose a visual with more detailed data such as a table the below would be the visual and result pair.

image   image

Or in a column chart

image image

Happy exporting everyone!