Hey software developers 6 simple ways to help the developer that will clean up after your parade

I never write bad code. My code is always readable, perfectly modular, standard following, understandable, completely commented and idiomatic with 100% code coverage unit tests.

Ok. You can stop laughing now. Really, stop laughing.

As software folks, we will always bias that our code  easier to understand than that written by someone else.

Of course it is. You wrote it.

We get used to our own style, habits and ways of thinking about software implementation. It’s natural.

However, when it’s crunch time and the the deadline is now or our motivation is less than stellar, we have all written code, that, upon later reflection, is not much better than rotten barnyard material. Sometimes we write code that way during times of less stress and pressure too.

When you write code like that for a business, realize that someone will come after you. And the person who comes after you will have to fix bugs, add features, migrate to new environments and any other number of interactions with your code.

What will that person find?

If you want to pay it forward as a developer (and I am requesting you do), here are six simple ways to be kind to those who will work on your code after you are long gone.

0. Document block your files, classes, and methods

State your assumptions, purposes, reasons, pre-conditions, dependencies. Tell those coming after you what will help them understand not just what you did but why you did it.

Sometimes it can seem redundant (especially if your code is as good as mine) but a good doc block can clarify a class’ purpose or the reason a method is implemented the way it is. Plus a good doc block can be the high level overview that makes reading and understanding the actual code go much faster.

Doc blocks are a super help to the software archeologists that come after you and try to add features or refactor your code for some other reason.

1. Comment your code inline

Really? Are you kidding me?

I am astounded that with all the “software education” and common best practices we have access to, professional (?) developers still neglect to add relevant comments to their code.

I recently went through a file that was several thousand lines (yeah, I know) and there were no comments. We were trying to re-factor a bit of old code to perform correctly in PHP7. In a particularly obfuscated section of code I found myself asking “why did you do that?”, over and over again.

A simple line or 2 of comment in a method or variable definition can  prevent the person coming after looking at the commit log and cursing your name and yelling “What were you thinking?” And, if by chance, you happen to come after yourself a year or two later, a comment will help you remember why you set:

$Contibulator_Fudge_Factor_Ratio = 4.26;

2. Mind the coding style

You will annoy those who follow you by randomly changing coding styles. Tabs or Spaces? Braces on the line or under the line? Camel case or underscore separated names? Whatever you choose, do it the same way.

Consistency means those after you only have to figure out something once. This is especially true if you are adding code to a system that you didn’t write either.

3. Maintain architectural intent

When you code, have consistency in your implementation. There are few things more disorienting than trying to figure out why a previous developer had 3 ways of doing things.

When you need to talk to the database, do it the same way each time.

If you are coding an MVC app, be consistent on your division of work. If you use a template in one view, use them in all your views. If you start with ‘thin’ controllers, keep it going.

If the data representation is JSON, use it consistently. Don’t throw in some XML here or there just to mix it up.

If you have a ‘js’ folder with your site javascript files, don’t all of a sudden start creating template files with 400 lines of embedded javascript (without a comment).

Finally, if, for some reason, you have to do something that is a deviation of the architectural direction – add a comment!!!! Tell us why.

Consistency in your implementation will also help speed any future re-factoring efforts that you or some other developer may be tasked with.

4. Communicate with variable names

Variable names like $x, ‘res’, ‘m1’, ‘ary’ and similar communicate nothing to a reader about intent or purpose. Outside of idiomatic usage, say, as a loop counter in a C language for loop (for i=0; i< 10; i++), these types of variable names scattered throughout a code base only serve to obscure and confuse.

If you have a display mode setting string variable don’t call it $dm. Call it $display_mode_setting. If you have a post count variable don’t call it ‘pc’. Call it ‘post_count’. If you have an array of customers that are expiring their trial usage call it $customers_with_trial_expiring_list[].

You get the idea.

Simply use the context of the variable usage to name it accordingly. Think about telling the developer after you something by virtue of the name of the variable. In this manner, any later developer who sees these can more immediately grasp its purpose.

5. Guide with commit comments

So you’re assigned a bug to correct a situation where a NULL file pointer is accessed causing an exception. You realize there were several commits to this file and check the previous commits against that code. You notice that there used to be a NULL check but it was removed in a commit 4 months ago by a developer who is no longer working at your company, and they didn’t put a comment in the commit. Now you are left wondering if that guy a compete moron or was there some other unknown reason the change was made. Maybe it was unintentional but maybe not. Without the comment you have no idea why. You simply soldier on wondering.

This situation can be improved with a simple commit comment.

Something like “Remove the NULL check here, the IO library group will handle it”.  This communicates a whole new level of information regarding the change. It gives you a clue on where else to investigate to make sure your solution is correct and complete and it only takes 15 seconds. Yeah it’s a bit contrived but it illustrates my point.

Good commit logs help those after you unravel the history of the code changes more effectively. Log those commits.

Conclusion

I know, these are coding 101 items. The sum total of time it takes to code this way is only slightly longer that without it. Even so, it is disappointing to see how often these simple actions are ignored.

And, as someone with the responsibility to maintain a fair amount of previously developed code, the lack of these 6 things makes me want to pull my hair out. I know you feel that way too.

I like the way Brandon Savage says it in his book “Mastering Object Oriented PHP“. He was admonished by a previous manager to:

“write code as though the developer coming after me would be a psychotic murderous maniac who had my address”

Humorous, yes. But it contains a great truth about helping those who come after you.

Let’s face it, without a Vulcan mind meld, it is impossible to be on the same wavelength as the original author of code you might be  working on. But with a small amount of effort you can lessen the frustration those who follow after you and even become a code hero in their eyes. And who knows, the frustration level you lessen may be your own.

 

 

 

 

 

 

5 ways a small business can protect itself from losing the software developer

For a small business with high dependence on customized or proprietary software and online tools, a good software developer can be a lifeline to better efficiency, growing revenue and increased profit.

But what happens when that software developer leaves the company?

For some companies this can be a disaster.

What were simple requests before, now become profoundly difficult obstacles. Making basic website updates, adjusting the troublesome customer’s account, or running the custom reports for the CEO now become almost impossible.

It doesn’t have to be like that.

With some basic planning, standards and consistent communication  you, the business owner or executive, can mitigate much of this pain. Here are 5 ways to start.

1. Use source code repositories

Make sure any developer that does work for you is keeping the software files for all projects in a source code repository that you own and control. It’s like a library for the files that make up your delivered software.

The software that is created for your business should be treated like an asset so as to maximize it’s long term value return to the company. A good code repository helps protect that asset.

There are many programs that act as software source code repositories. Systems such as Atlasssian’s BitBucket or Github are popular, loaded with features, inexpensive and conveniently online. You can also download and use local versions of systems such as SVN or Git for the more technically capable.

These systems facilitate modern, flexible source code control with many integration options for other parts of the software development and delivery eco-system.

If your software developer insists on keeping code on their local hard drive, its time to find another software developer. You can’t afford to have your software walking out the door when the resource decides to leave.

2. Use ticketing or issue tracking

A ticketing system or issue tracking system is a tool to document and clearly divide units of requested work when used correctly. To a small business this may seem like a lot of overhead. However, a ticket tracking system is a way to more clearly communicate what needs to be done, who is doing it and track progress over time, and potentially across multiple developers.

Online systems such as Jira, Fogbugz or Trac can be used at a reasonable cost. Also Mashable has a longer list of issue trackers you can use.

A ticketing system is also a way to maintain accountability and communication regarding specific tasks and requests. Many of the systems allow you to pull reports and see how things are going, how a project is progressing and measure quality metrics for your code.

3. Keep systems and software diagrams

Every small business should have a basic diagram (could be paper or electronic) that shows where things are. Items such as key servers, locations, databases, internal tools should be shown along with what relationships there are.

As changes are made and systems are added or migrated, update the diagrams as part of your standard procedures. Review it from time to time to validate its accuracy. Adjust it as needed.

A simple diagram that shows where and how your systems link together can save hours of time in misunderstandings or unclear documentation. It can also make on-boarding of a new software developer or system administrator much easier and faster.

4. Track passwords and access

A developer will need access to systems to update code, release software and make fixes and changes.

The small business should own all the passwords and control of them. Allowing the software developer to be the only one who knows the admin passwords is a recipe for disaster.

In order to track a large number of passwords I recommend using tools such as Lastpass or 1password. These tools allow tracking of passwords and provide online and mobile access for convenience. Alternatively you could store passwords in an encrypted file or disk volume (as long as it is backed up elsewhere) with the operating system you use.

The bottom line is that, as the owner, you need to be able to access these systems when the developer is no longer available for what ever reason. Tracking the passwords yourself helps guarantee that access.

5. Maintain regular communication

This is perhaps the simplest but most neglected area.

Business owners and executives get busy. It’s easy to forego the regular, sustained communication that facilitate shared understanding of a software project. Neglecting this communication will cost you when it comes time to transition to a new developer.

Setup and keep a regular meeting schedule to discuss issues, progress, and review updates. This should be done at least a couple of times per week, or daily if possible. Once you get in the groove, these meetings are usually short.

Many teams who use the Agile methodology have stand-up meetings every day to discuss progress, issues and immediate plans. This quick, consistent communication helps educate you, as the owner of the software, and educate the developer to your expectations and needs and the systems evolve.

Force yourself to meet and talk. Ask questions and get answers without technical jargon and acronym soup. Any developer worth their salt can explain what they are doing, and show examples in terms any businesses person can understand. If they can’t, its time to upgrade.

Summary

The departure of your software developer can bring about loads of pain without proper preparation and planning.  But with preparation you can facilitate smoother transitions between developers and lessen your companies downside risk.

7 signs your small business is on the path to being disrupted

Disruption is a buzzword these days. It’s pretty much everywhere in the popular business media today. As a theory, it’s great to debate but as a business owner, being disrupted can mean serious consequences to your survival.

In spite of the seriousness, as a business leader we get busy and success can make us complacent regarding competitors. So what can  we look at in our own business to see if you are vulnerable to disruption?

Here are 7 signs that you are on the path to being disrupted.

 1. You maintain the attitude that “We know what customers want”

Markets shift, competitors change, customers can be drawn away. If your business at one point did have the magic recipe your customers wanted you can rest assured that what they want will change. This attitude can cause you to miss key indicators that could result in missing disruptive forces.

2.  You aren’t engaged with your customer

Surveys? Focus Groups? Customer Interviews? Customer feedback forums? Oh you stopped doing those?

If you are ignoring these and the other avenues of available customer learning, your business is quickly becoming blind to customer changes and evolving needs.

Because of the changes that are constant and increasing in pace in any market, your business must actively seek customer involvement and insight. One of my takeaways from Big Bang Disruption was the sheer speed that a market can change. Your customer can change direction quickly and if you aren’t engaged with customers, you will miss the bus.

3.  You don’t carefully watch your market

Are you neglecting sources of intelligence regarding your market, competitors and products? If you don’t participate in industry forums, conferences and other events you will have difficulty knowing what’s happening. You will miss clues and potential changes that could impact your business. And, you could miss potential opportunities for partnering and other collaborative growth strategies.

4.  You laugh at new market entrants

The barriers to entry in many markets are lower that at any other time in history. It is easy and quick for new market entrants to introduce new Minimum Viable Products(MVP) directly to your customers. These MVPs may be lacking features or the polish of many iterations, thus inviting ridicule from you or your staff. However, it is the learning that comes from engaging markets with new MVP’s that enable new entrants to learn and overtake market leaders with fast iterations.

5.  You are under pricing pressure from competitors

Your business may have entered the market as the low price alternative. As you grew and claimed market leadership you had pricing flexibility. Fast forward a few years and now, new lower priced entrants have invaded your market. Now your value proposition is not as clear to customers who are being courted by lower cost alternatives.

6.  Customers keep saying the same things about your products but nothing changes

Are you getting consistent feedback from customers that your products or services need some changes? Have you decided that those changes are not possible or viable? Or have you chosen to add other features or offerings? Are you ignoring the feedback altogether?

7.  You ignore customer experience

Is your product not as convenient to use as competitors? Is your interface not quite as polished? Does your site take 5 clicks to do the same thing your competitors do in 2? Choice, ease of use, personalization are all required in todays interfaces and products. If you neglect this important aspect you are inviting your customers to court other vendors.

 

If you as a business leader, take a moment and assess your business.

Do you see these signs?

Do you see several of them in your business?

If so, let that be the wakeup call to make changes proactively before your competitors force it on you by disruption.

 

Is your small business walking D.E.A.D?

In the post-apocalyptic setting of The Walking Dead , zombies are everywhere preying on surviving humans for food. The Wikipedia article describes them as “…mindless shells driven solely by instinct”.

Did you realize that small businesses can become just like those zombies. The following four symptoms could mean that your business is  literally the walking D.E.A.D.

D – Directionless

Is your strategy missing or abandoned? Is your business is just doing the same thing year after year in spite of market signals and internal metrics telling you that’s not working?  Are you neglecting to act on customer feedback? Are you learning about your customers or market as the result of learning from experiments?

If any of these questions sound like the reality of your business then  you are directionless.

The market is moving around you, its going in a direction.  Your customers are being afforded more options, they are moving in a direction. Unless you have direction you can’t move, learn, adapt or advance as a business.  And if you don’t  advance you will be left behind, customers will migrate to your competitors.

E – Exhausted

The normal battles of small business fatigue the fittest among us. However, when the normal skirmishes are punctuated by more catastrophic events such as big sales declines, layoffs, product launch failures and the like, it can leave your team exhausted.

When you repeatedly expend large physical, mental and emotional efforts with no payoff, reward, progress or recovery it decimates your strength, will and energy. Exhaustion amplifies negative momentum, making it that much harder to begin new things or attack old problems.

A – Apathetic

Exhaustion leads to apathy. You are so tired you just don’t care. Apathetic employees are more likely to make mistakes, miss opportunities and ignore customers. Apathetic leaders will ignore issues, frustrate employees and abdicate their responsibilities.

Apathy invites bad customer experiences, neglected processes and procedures, lower morale and lower revenue and profit.

When customers sense apathy in an organization they will stampede for the exits and be easily seduced by your more caring competitors.

D – Distracted

Customer complaints are up 32%, yet you are picking out new chairs for the conference room. Sales for last month were down 18% following a 4 month trends, yet you are insisting on changing the fonts in your brochures. Your biggest account just cancelled, yet you want to attend a seminar on how color affects the mood in the office.   Are you more focused on choosing the new pens to hand out at conferences than you are focused on the fact that your marketing signups are down 31% year over year?

These are not contrived examples, they are real. I have seen them.

Distraction will always result in solving the wrong problem, missing the point, and ultimately missing key market or customer signals. Distraction can be deadly for a business.

You’re not dead yet

In The Walking Dead, the objective is to survive by killing the zombies.

However, if your business is D.E.A.D. you don’t need to kill it.

There are ways you can revive a D.E.A.D. small business. Look for those in the next post.

Simple ways to deal with V.U.C.A. IT in small business

If you have realized that  your small business IT is a V.U.C.A. environment, then you may wonder why do I care? Lots of things change around us all the time. So why does it matter with IT?

There are many reasons that V.U.C.A. in a IT needs to be mitigated when possible. V.U.C.A. in your IT environment can lead to things such as:

  • Increased system outages
  • Lost data
  • Security risks and breaches
  • Lost revenue
  • Increased costs
  • Diminishes efficiencies
  • Customer service troubles

to name just a few.

These are bad. No one wants any of them. So a natural question is:

What can I do to reduce the V.U.C.A.?

Here are some simple ways to help deal with the V.U.C.A. in your environment:

Volatility

  • Monitoring – use monitoring tools in your IT environment. You can monitor for intrusions and security risks, viruses, malware and operational thresholds. Open source software such as Icinga allows you to create custom monitoring scenarios and report on many different system variables. A well architected monitoring system is like having extra IT staff working 24 hrs / day 7 days a week.
  • Redundancy – The most important parts of your IT system should have redundancy. Simple things such as mirrored hard drives on a key server, multiple disparate backups and .
  • Contingency – The building where we office now has had many power issues in the last few years. Having a contingency to run our services elsewhere is a huge help for us. Think about if you lost a key server, or your phone system went down. How could you continue serving customers until the problem is resolved?  If possible you want the ability to run key applications offsite if a severe problem exists.
  • Margin – Leave yourself operating room. Don’t run servers at 95% load all the time. Give them plenty of memory, stay out of swap. Don’t allow key server hard drives to always be near full. Have some spare equipment. If you are taxing your internet bandwidth constantly get some spare bandwidth. Having some excess capacity in these areas can reduce risk.

Uncertainty

  • Focus on what you can control – Take care of maintenance items. Update patches, install security updates, monitor hardware, check access logs. Verify backups. If you make simple maintenance tasks like this part of your regular routine you will be better prepared for the inevitable surprises.
  • Prepare – Have some key spare parts. Make sure your hardware warranties are up-to-date and your equipment is still serviceable. Have the contact details for each supplier and vender available and documented for your team in case of emergencies. Create an escalation procedure for increasing the scope of notifications when problems arise.
  • Learn – when things out of the ordinary happen take time for an ‘after action review’ with your team. What can you learn to prepare for or avoid the problem the next time it might happen. Update your procedures and operating practices to include any new thing you learn.

Complexity

  • Pictures and diagrams – Draw out how your systems are connected and configured. Where is key equipment located? Who are the assigned people responsible for each area? Are the vendor contacts included? How would someone get access to systems if assigned personnel were not available? Simple pictures and diagrams updated regularly and distributed to the team and can help you deal with crisis much faster and more clearly.
  • Online Notes/Wiki on company intra-net – provide a convenient, accessible location that everyone knows about to document and notate your key data. You should be able to ask anyone in your company and they would know where that is.
  • Labels – Label cables, computers, routers, cabinets and other devices. Labels help with inventory and provide quick verification you are working on the right equipment.
  • Screen casts – For multistep instructions you can record screen casts and save them to your online notes  / Wiki area. For configurations or setups where a number of online steps are involved a quick screen cast can communicate very effectively what it takes pages and pages to write.

Ambiguity

  • Modeling – When possible use simple models to illustrate functionality. Sometimes this can be done with maps, drawings or, where numbers are involved, with spreadsheets. Simple, clear models help clarify concepts and communicate more clearly abstract ideas,
  • Iteration – When building new systems or adding functionality break down big features into smaller iterations. Smaller iterations, allow you to engage key stakeholders throughout the process, keeping everyone closer to the same page. Iteration is one of the foundational ideas of Agile development. It applies very nicely to a wide range of system domains. Use iteration to fight ambiguity.

None of these ideas are revolutionary or difficult. They are all well within the capability and resources of small business. And they all will help you better deal with a V.U.C.A. environment.

Is your small business IT a V.U.C.A. environment?

V.U.C.A. is an acronym the military (and others) use to describe an environment that is: Volatile, Uncertain, Complex and Ambiguous. While the military uses this term to describe what can happen in war and battle, it also describes what can happen in business IT.

What does V.U.C.A. look like in IT?

Volatile

Webster’s defines volatile as “likely to change in sudden or extreme ways”.

In IT, things occur unexpectedly. Hard drives fail. Fiber cables are cut. 3rd Party vendor API’s change. Prices increase. Hackers hack. The power goes out. Routers are mis-configured. Owners change their mind. Web servers go down. Developers break the build. Owners change their mind some more. Your biggest customer cancels a contract. All of these can occur randomly and without warning. And each can have a great impact on the life of the IT manager or director.

Uncertain

Uncertain means “not exactly know or decided, or not definite or fixed”.

Users think they know the requirements but then they are not sure. They waffle. They change their mind. They decide they don’t need th 5 screens you built for the last sprint. They are not sure what the screen forms need to present to the end user. The client can’t make a decision on the database implementation. The business owner flip-flops on system design issues causing the team to whipsaw. Key vendor software updates are delayed and you don’t know when they will be delivered which impacts your sprint planning. The higher the uncertainty the less likely we can move forward confidently. High uncertainty makes it difficult to act decisively.

Complex

Complex is a “group of things connected in complicated ways”. Surely the editors at Webster’s were thinking of IT when they wrote that definition.

The small business environment is growing more complex all the time. Every department has online tools, software, services, API’s, databases, reports, virtual and real servers, user compute devices and on and on. The inter-connectedness and dependencies require dedicated effort and skill to comprehend, troubleshoot, maintain and improve.

Ambiguous

Ambiguous means that something has “more than one meaning”. To quote Steve Jobs: “Customers don’t know what they want until you show them”. Frankly neither do most project managers, product owners or anyone else designing  a system or process. What you are told to do by the client, customer, owner or other person in charge is usually just a vague notion, leaving the technical team to fill in tons of details. Clarity is an illusion in most every project.

 

Now What?

Does this describe your IT world? I am sure that more than one of the scenarios above struck a chord with you. Maybe a lot of them.

In my experience this describes the state of most small business IT.

So what can the dedicated IT professional do in order to still make progress and serve their customers? How can you bring some order and certainty to your IT world in a VUCA environment?

It turns out there is a lot you can do and we will cover those in the next post.

5 Pillars of Excellence for Leaders

Excellence separates us from average. Excellence separates winners and losers, those who get the prize and those who go home empty handed. Excellence attracts. Excellence is aspirational. Excellence motivates. Excellence influences. Excellence rewards. But how do we live excellence in our service, work, family and other interactions?

Notice: The following contains some statements taken from the Christian faith. If that causes you problems, well, you have been warned. 

I had the privilege to speak  with a small group of Christian leaders recently. I  shared this 5 element framework with them that will help implement excellence at the point of decision and action.

The framework is formed by the letters in the word “EXCEL”, and no this is not referring to the popular spreadsheet from Microsoft.

Effort

The first letter in ‘EXCEL’ is ‘E’ and stands for Effort.

Excellence at anything requires effort. Excellence without effort is like a golfer without golf clubs or a fisherman without a pole or a football player without a ball. You can’t even begin to play the game without the fundamental starting equipment. Effort is the fundamental starting equipment of the excellence game.

In our society we are surrounded by the allures of convenience. Don’t be seduced into thinking excellence can come from little or no effort because it can’t. Olympic champions don’t come from the couch potato ranks. There are no short cuts. No pills, no three minute workouts, no get excellence quick schemes. Effort for excellence can’t be borrowed or subscribed to as a service. You must put in the effort needed to excel at a given task. Many times that really not much more than the effort required to do something halfway. But the end result of that little extra effort can be amazing.

In every task you do, put in the effort to do it correctly and completely. Let excellent results in everything you do be your calling card.

eXamine

The second letter in ‘EXCEL’ is ‘X’. It stands for eXamine.

Excellence invites measurement and comparison. Excellence separates and divides. The very definition of the root word excel implies comparison. Examine your life. What’s going right? What’s going wrong? Where is God leading? Where are the needs in your life/family? What are you ignoring that needs attention? What needs more effort? What needs to change? What do you need to stop doing? These are all the questions of examination.

The pursuit of excellence demands we examine ourselves and implement changes where results are less than desired. Examination is the only way to get the necessary feedback to improve.

Embrace the changes you need to make that help you pursue excellence in your lives and work. It’s part of our growth and maturity. If we aren’t examining ourselves and growing how can we expect those who follow us to grow?

Christ

The third letter in ‘EXCEL’ is ‘C’ and that stands for Christ.

As a Christian, I believe that Jesus provided our ultimate example for excellence. He gave us our template for love, life, interactions, service, sacrifice, care and work.

Jesus’ initial command to his disciples was “Follow me”. That explicit command is one to look to Him as example and do as He did, to love, serve and help others. By living a life based on those attributes we can more effectively serve, give, love, impact and make the world a better place. But it must be genuine. People can spot a phony pretty quickly. Your showing of these attributes cannot be to manipulate, they must be to serve.

As leaders, we should be able to do the same thing with those who follow us. We should be able to say “follow me”. Watch and emulate what I do. We can only do this honestly if we are pursing excellence in all we do.

Engage

The fourth letter in ‘EXCEL’ is ‘E’ and that stands for Engage.

Can you imagine Denny Hamlin texting friends during pivotal laps of the Daytona 500? Can you imagine Von Miller, Super Bowl 50 MVP, waving to the crowd while rushing the passer on a key 3rd down and goal play? Can you imagine Jordan Spieth snapping a selfie while putting the final 18th at Augusta? Of course not. That is ridiculous. The loss of attention would have resulted in defeat.

We are all horrible multi-taskers. When we try to do something without really engaging we are just ‘going through the motions’ or ‘mailing it in’. That communicates loudly that you don’t really care. People know when you ‘aren’t there’, especially your family and close friends. Anything you do with half attention or half engagement usually results in mistakes, miscommunication, misunderstandings, poor results and do-overs. Or worse.

Excellence demands engagement.  Attention is the currency of engagement. This is your full mental presence and focus. Enthusiastic engagement, your full attention, will influence and motivate people when you interact with them. Energetic engagement is contagious to those searching for what you have. Engagement is a gift to those you interact with. Be engaged with your family, church, work and personal pursuits. Be all there.

Love

The last letter in ‘EXCEL’ is ‘L’. This stands for Love.

Love should be the true motivation of our actions and the foundation of our excellence as we serve those around us. The Apostle Paul in the New Testament reminds us that love is “the most excellent way”. Remember that true love is a choice, an act of the will to act to benefit another even at the expense of self. Our world today is desperate to see authentic love from leaders, businesses and those in government and education. This is also true for customers, employees, families, friends and others you come into contact with.

 

Those are the 5 pillars of excellence: EXCEL – Effort, eXamine, Christ, Engage, Love.

To excel as leaders takes all of them. Daily, project by project, task by task, encounter by encounter, relationship by relationship.

Applying the 5 pillars of ‘EXCEL’ will help every decision and the subsequent actions be done with excellence.

The single biggest IT risk in small business and 9 ways to deal with it

The dependence of small business on IT systems and the people who run them increases continuously. Whether the accounting systems, corporate web site, inventory system, the online shopping cart, marketing automation, email servers, the customer management system, internal database servers, manufacturing automation servers and the like. The list goes on and on. Without those IT systems, business grinds to a halt. And without the people that maintain them, you risk business grinding to a halt if something goes awry. IT systems have loads of risk vectors. Hackers, Malware, viruses, ransomware, hardware and software failures and the like.

However those don’t create the biggest risk a small business owner has with respect to IT.

The biggest IT risk a small business owner faces is being unprepared for the loss of a (or the) key IT person or key software developer.

Examples of the key person(s):

  • The developer who wrote the code for the product.
  • The sysadmin who knows all the configuration and passwords.
  • The director who knows where all the vendor logins are including the payment processors.
  • The development architect who knows how all the systems fit together and where the vulnerabilities are

Losing any of these types can be hard on a small business. If your business has several of these people in one person then you are at a HUGE risk if that person walks.

What can you do to mitigate the impact if that key person is gone?

Here are 9 steps that can help when that happens.

System configurations backed up

Make sure that the existing staff has backups of key system configurations saved in a known location. Firewalls, key routers, switches, IP addresses of networks and servers and other company configuration setup should be saved in a known and agreed to place that the owner knows about and understands how to access. This should be also documented.

Login/Password locker

It is wise to use a corporate password locker such as 1Password or Lastpass. Key system passwords should be stored here with the master password to the locker available to the owner.

System diagrams

Simple block diagrams should be in a known location that diagram key systems, how they are connected, where they are located etc. This will enable the owner to help locate systems in case an issue arises and will help them direct new personnel or vendors when repairs or service is needed.

Key 3rd party vendor information

A list of all 3rd party vendors that are used by the IT / Development teams should be kept in a known place. Contact information for the account representative, as well as services provided and key contract or agreement details.

Backup locations

The locations of on-site backups of systems should also be documented. Additionally off-site backup locations and / or vendors should be detailed in the 3rd party vendor section.

Process and procedures and site/documents

The owner should know the processes used to get IT and development work done, including how to deploy system updates for key servers, web sites and online apps. If for no other reason than to train the replacement employee.

Monitoring Notifications

If your company uses automated monitoring such as Icinga or similar, then the owner or replacement personnel need to be added to the notification list.

Job Descriptions

A documented set of job descriptions will help in the hiring process after the key person leaves. This will give the owner more detail on what the key person does, and the attributes and skills needed in a replacement employee.

System/Content Deployment steps

The steps, logins and other necessaries required for making site or system updates to key systems need to accessible and understood so that another employees or the owner could execute them or show them to a contractor in a pinch. You may think this is far fetched but if something happens you want to be able to update content and code if needed.

Final Thoughts

As part of your on-going training and planning it would also benefit the company to conduct a risk and vulnerability assessment so that key risks are known and can be planned for. Additionally, transitions can be planned for as well with succession planning as part of leadership/career development and key employees being cross trained regularly. Finally, the owner should audit these areas periodically to validate readiness and expose weaknesses.

The above 9 steps won’t eliminate the pain of losing a key employee but they will enable the business to move along and speed the on-boarding process of the replacement. The wise small business owner will do well to track and keep up with these areas.

 

Why your small business IT is like a Johnny Cash song and what to do about it

In 1976, Johnny Cash released a song called “One Piece at a time“. The song chronicles a GM assembly line worker who builds a Cadillac by taking one piece of a car home each day. Then one day, with enough accumulated parts, the car is put together. When asked what model the car is the reply in the song is:

“Well, It’s a ’49, ’50, ’51, ’52, ’53, ’54, ’55, ’56
’57, ’58’ 59′ automobile
It’s a ’60, ’61, ’62, ’63, ’64, ’65, ’66, ’67
’68, ’69, ’70 automobile.”

You may be wondering what does this have do to with IT and small business?

Well, a lot. Small businesses typically builds out their IT systems the same way as the assembly line worker in Johnny Cash’s song, one piece at a time.

A growing small business is on a treadmill of changing technical needs. The owner has to buy what’s needed when its absolutely necessary and usually can’t afford a gold-plated build out up front. This, after several years of growth and internal system iterations, results in an IT system that resembles the car in “One piece at a time”.

The small business ends up with a whole collection of equipment, software, web service subscriptions, printers, phones, cables that are not labeled, hard drives, switches, WiFi routers and all kinds of other techno-detritus. Some of which may be business critical and some of which no-one can remember why they bought it in the first place.

As the mass of the IT systems grows the resistance to change increases. Things are harder to find, troubleshoot and replace. And, mistakes are more likely.

So what do you do?

Inventory what you have

I can hear the collective groan. Yeah, if you have no idea what you have, you really don’t have much hope for what needs to be done. Get a list of what you have and what it’s function is. It is as simple as creating a spreadsheet or just folder (in a safe location) that details what you have and what it’s for.

Get rid of what you don’t need

Schedule a Friday afternoon with pizza and sodas and get the team to get rid of what you don’t need or no longer use. Recycle, turn it in to Staples or other outlets for responsible disposal of electronic scrap. If you haven’t used it in a year, chances are you won’t. You will reap the benefits of addition free space, better knowledge of what you do have, and the power of tidying up.

Label what you keep

Having cables, switches, servers and any other hardware you use labeled correctly is a big improvement. It will save you a lot of time (which is money). It helps with on-boarding, and when third parties come in for maintenance. Makes it quicker to locate items and helps with replacement planning or dealing with an outage.

Identify priorities for future replacement

Everything has a life. Old servers or user computers may need to be replaced. Network switches lose fans and develop port faults. Everything electronic will fail at some time. So decide what is the most important items of what you have left. Make a list and decide the plan for replacement. Put it on the calendar. Add it to the budget. Do a little at a time, be consistent.

Check and update your warranties

Warranties can be a big help in planning replacement. Some companies like Dell offer onsite replacement. It may be advantageous for your company to extend warranties on eligible equipment. If you can tolerate the replacement window the warranty offers, this can extend the life of your installed equipment.

 

These are just a few simple steps that help a small business deal with the fragmented environment that can emerge with years of growth. With small but consistent steps, a small business can improve their IT situation without massive, disruptive efforts.

 

What is Good Friday and why is it good?

We were sitting in a conference room. The meeting hadn’t started. it was the Thursday before Good Friday. One of my colleagues asked me about doing a task the next day. I stated I was going to be out of the office in observance of Good Friday and would do it on Monday when I returned. That prompted the question “What is Good Friday anyway?”.  My colleague, who happened to be Muslim, was asking something that many probably wonder as well, what is Good Friday and why is it good?

Good Friday is the day, in the Christian tradition, that we remember the betrayal, trails, punishment, crucifixion and burial of Christ. It occurs three days before Easter (the celebration of the resurrection of Christ). The Desiring God blog has a good article that overviews the events of that day as told to us in the New Testament Gospels.

Recalling the tremendous suffering and death of Christ brings feelings of sadness and sorrow. In fact in some countries (Germany for example) the word used for Good Friday means ‘mourning’ or ‘sorrowful’. Not a reason to call the day good.

While the remembrance of those elements can bring sadness, they also foster feelings of thanksgiving. Because of what the death means and what believers receive as a result. In that respect, because of the redemption we gain through Christ’s death, it is good.  A seeming bad thing, His death, resulted in something good for us, redemption.

Various Christian denominations have special services or observances they do on Good Friday as part of the celebration of Holy Week. I encourage you to attend and learn more about why this Friday (and the corresponding Sunday) is so special. I know I will be attending services at my church to celebrate and observe this wonderful event.