Saturday, July 8, 2017

Relationships determine business success


Building and maintaining strong relationships with clients and partners is a passion of mine. As such, it would valuable to share some best practices that help get to the next level in organizational health and business success.



The goal is to augment engineering excellence with relationship skills and management. Partners must like you and know that you care. If your partners believe you are the smartest person in the room but they don't like you personally, they may in fact work with someone else.



Stepping back, it’s important to realize that something has happened with your client that has caused them to reach out and pay you to help them. Often clients and partners are in a (real or perceived) crisis situation, brought upon, perhaps, by falling sales, executive board mandates, or perceived competitive disadvantages. They are on the Change Continuum (see figure below) somewhere and our objective is to move each organization further to the right along the Change Continuum.






However, Change is Hard.

  

The companies that hire consultants are most often very successful in their industries (or owning the start of it) and you should not ignore this fact. They have developed internal processes and hired key stakeholders based upon some understanding of their market and history - and their processes have worked until they don’t. One can lead systemic change by first understanding how the company has arrived at its current state and where each key stakeholder fits (or doesn’t) into the current system.



Thus our overarching objective is to cause change within successful companies in such a way that they realize we understand their problems (internal and external) and care about their success.



Here are a few items to get us started:



  1. Listen. I know this talked about everywhere, but the reality is a little messy sometimes. You need to hear and understand your partners’ pain. You may have the long term fix to their problem, but if they're asking you to fix a small issue, prove early in the relationship that you understand the little things – then you will be entrusted with the bigger things. You should offer solutions to their perceived problem while also showing that you have expertise to see things they cannot perceive both long term and short term.
      1. ACTION: Mentally assume the best. You’re working with successful companies. Their internal culture and processes evolved this way for some reason. Why might they operate how they do today?
      2. ACTION: Ask questions - this shows you care deeply about their problem (and by extension - you care about them). Why are they making this change now? What happens if they don’t do this? What do they expect will happen if they do this?
      3. ACTION: Respond with, at a minimum, a solution that addresses their pain. If I tell the doctor that my muscles cramped after basketball, and he returns with a cybernetic leg that costs $5 million, I probably won't go back to this guy (as amazing as it would be to dunk from mid-court).



2.              Face-time is paramount. Top competition in the consulting space prioritizes personal contact and for good reason - it works! If I am trying to teach someone to ride a bicycle (or adopt agile methodologies) I'm going to have an easier time learning from someone standing next to me, compared to a Youtube video. And if I am going to learn from a video interaction, I am going to seek out the cheapest video source... which may not be you.

      1. ACTION: Make a plan for being on-site at the start of the engagement. Are you in close vicinity when you staff a project? Will you be able to travel easily to maintain critical relationships?
      2. ACTION: Work on-site whenever possible. Yes, this is inefficient for managing multiple projects, but your partners need to know they are your highest priority. Within your company, you may need to level-up individual contributors to take on some of this work. We can discuss this process in a later post.



3.              Make plans and revisit them. We make plans not as a box to check, but rather as a place to start and facilitate the conversation. For example, if we make a schedule at the start of a project, we should review that schedule at least once each sprint or month to remind clients of commitments, risks, and expectations. As we move further up the organization with our partners, you will be interfacing with multiple owners/decision makers who are managing multiple initiatives. They may not remember previous commitments and asking them to take on this responsibility is an extra work item.

      1. ACTION: Describe what you will do at each step in the engagement. Progress and improvement is rarely in a straight line. We know this as experts in our field, but our partners may not have the benefit of your collective decades in our areas of expertise.
      2. ACTION: Set expectations. As soon as your partners see an improvement in their team or business they will seize on this and may tell say "Thanks! We can take it from here!" - even though they have only seen 10% of the gains you provide. It is easier to set expectations up front rather than a few months into an engagement, when anxiety is high and clients may owe a justification for the expense and possibly their continued employment.  

In short, do not neglect the human aspect of software development and its impact on business success. Ultimately, software is built and managed by humans and we’re social creatures. You will not be successful as a change agent in your organization without taking the social and relational aspects of change into account.

Saturday, June 10, 2017

Software Total Cost of Ownership

When we talk about how much software costs to purchase or how much it will cost to build a new product from scratch, we often ignore the total cost of ownership. When I bring this up with my clients, the conversation often covers items such as:
  • Number of people on the team
  • Time to build the product to an agreed upon "Definition of Done" or production-ready state
  • Hourly rate for each team member (software developers, quality engineers, designers, product managers, etc)
These are definitely important cost considerations, but if we limit our total cost of ownership to the cost to create the initial product, we're omitting a key component for software cost - the cost to keep the software and system running. What do we mean by "working condition" with regards to software?

Imagine that you need a new car. You have determined the Make, Model, and Year that you need to replace your old 1998 Toyota Corolla. You happily set your budget and pay cash to acquire the car - including Tax, Title, and License, and drive off in your new car. You have successfully purchased a car that allows you to run your business, commute to work, drop off the kids, or whatever you need your car to do today.

Unfortunately, the purchase price is only the start of your car expenses.
  • You come home and realize that you need to update your car insurance policy - and your new car costs more to replace than your old one.
  • Your car needs gas to run. With your new vehicle you need to fill it with premium fuel vs regular unleaded. And by the way, your new truck has lower miles per gallon than your old car.
  • You need to perform ongoing maintenance such as oil changes, new spark plugs, filters, tires, and fixing the seemingly endless number of squeaks, weird starting noises, and battery failures.
I was talking to my mechanic recently (oil change) about the cost to own and maintain a car and he said there was a substantial increase in late model Mercedes-Benz and BMW owners who came looking for used tires during the last recession. Apparently many owners did not budget for new tires when they calculated the lease payments for their cars, and when money was tight during the recession, owners couldn't afford to buy new tires.

As you shop around for a company to make your custom software or license an existing product, make sure you calculate how much it will cost to keep your software running:
  • How many people do you need for sustained engineering? 
  • Do you have the appropriate skills in-house or will you need to hire?
  • Does your recruiting team know how to hire good software people? 
  • When you do hire a team, do you have the right people to manage them?
After calculating all the costs associated with new software, including the maintenance or "operate" costs, you can make a better informed decision on whether this is a good plan for your business.