Thursday, August 12, 2010

Considerations for always-on environments

In today’s information technology (IT) departments, more and more applications are becoming 24x7 in nature, requiring availability at all times, with minimal or no downtime to accommodate upgrades, patches, troubleshooting or maintenance activities. This is a tall order with today’s integrated solutions. Ensuring that all pieces of an environment work regardless of maintenance, outages or upgrades is a complex challenge, often only addressed by companies with large resources at their disposal.

There is no magic bullet to solve all availability problems. But, if you are in a position to develop a solution interactively and own the entire infrastructure, there are considerations that can be planned for ahead of time to provide significantly better available of an application than could be obtained through traditional methods for supporting always-on type applications.

The most common challenges in today’s always-an environments are:

  • Hardware Failures - Hardware fails, there is nothing that we can do about that. The more hardware you have, the more components that will fail. All modern environments should be designed to ensure that critical applications and services are not taken offline by failed hardware.

  • Facility Failures - Modern data centers are a complex combination of traditional construction, complex power generation and distribution, cooling and environmental controls. These systems, while redundant, can still fail for a variety of reasons. Additionally, data centers in many locations are susceptible to environmental disasters. All modern application environments should span multiple locations in a way that ensures a failure of the application is not caused by the failure of a single facility.

  • Upgrades Must Occur - Upgrades are one of those activities within IT that must occur. There is a lot of flexibility around when and how they are completed, but eventually, all hardware and software will need to be updated to ensure new features are available, the solution is secure and stable.

  • Rapid Growth - Today’s IT environments are growing at a very rapid pace compared to even 5 years ago. Many organizations add new servers and applications on a weekly basis. This growth must be managed at the same time that legacy systems are upgrades, eliminated and supported through all this change.

  • Data - Both data size and the life cycle of that data is becoming more complex to manage. More and more data presents challenges to upgrades, backup, recovery, available bandwidth and a list of other pieces of the environment. As data grows, it also becomes more valuable to the organization and the life cycle of the data much be managed in a more automated way to ensure that data is deleted when required and and the flip side, is available when required.

  • External Dependencies - No matter how many resources and skills a company has internally, almost all firms have to use a third-party product that is developed by an outside firm for some portion of their IT environment. These third-party products present challenges in integration, management and support that consume time and resources from the IT department using them.

  • Shifting Loads - Very few solutions today have a consistent load on the environment every day, and every hour. This variation adds complexity by requiring a constant monitoring of capacity and adjustments based on user demand.

  • Variety of Delivery Platforms - Most applications today are delivered via a variety of platforms including web browsers, smart phones, exposed web services or appliances. Each of these requires a separate set of development and testing procedures, each has separate security policies and all have very different methods for storing, rendering and handling dynamic content. Modern applications must support a seamless experience across all of them for each individual user and their preferences.

While that is not an exhaustive list, it is a good intro to the kinds of challenges that are encountered in most IT departments today. In order to overcome those, many shops develop their own software to ensure they have features and capabilities to make the above challenges easier to manage. Here are some of the most common design considerations that can ultimately lead to design solutions when designing new software within your environment:

  • Mindset of Rolling Upgrades - In today’s environments, 100% up time is not an unreasonable expectation when serving an application supporting users in multiple timezones and countries. Modern software should be designed in a way that upgrades can be done in a non-disruptive way, allowing users to continue using the application during upgrades and other maintenance activities. While taking the entire application offline is not often an option, software can be written to allow some subset of servers or features to be down for periods of time, while preserving other portions of the application.

  • Inflight Transaction State Tracking - Modern applications often times will communicate with many different systems across a single or multiple data centers. All this communication must be properly tracked so that an application can recover and a user continue with their transactions, even if hardware and software within the environment fails. It is critical that modern software implement mechanism for tracking the state of communications between servers, this state can be used to recover should a failure of a server or facility occur. This tracking and ability to recover automatically will allow the application to function regardless of the underlying hardware state.

  • Consistent and Automated QA Processes - Quality assurance within the software development realm has become more and more critical as applications have become more complex and upgrades more often. Having a fully automated regression testing environment will allow new builds of an application to quickly be tested and allow for new tests to be developed as bugs are found to ensure that they do not make it into future releases.

Today’s 24x7 IT environments are extremely complex and very difficult to manage. As they grow and user demands grow, they will only become more complex. Automation is one primary way to stay ahead of this challenge - any process, from QA to deployment that can be automated, should be automated, this increases quality, decreases variation and limits the chance for human mistakes. That paired with distributed software and hardware environments will ensure that as the environment scales, it will not become more susceptible to a failure of any single component. Finally, design all applications assuming that things will fail. By ensuring that applications can recover from failures, either hardware or software, you can ensure that the end user experience is as positive as possible.

Monday, August 2, 2010

The Trend of consolidation in IT

Consolidation is a common term with Information Technology (IT) departments, it is often used by CIOs and set as a goal for IT departments. While consolidation is a valuable goal, IT departments need to focus less on the concept of Consolidation, and more on setting good, long term habits for the department around hardware purchases, reuse and elimination of assets. Consolidation makes for a good short-term project with defined end dates and targets. What is more critical for IT departments, is to embrace the concept of Return on Investment (ROI) and ensure that any solution deployed has a solid ROI for the business and properly factors in all costs for the life-cycle of the purchase. The more focus on long term planning and ROI calculations, the fewer times an organization will find itself in a place that it fells it must start a Consolidation project. By using the ROI calculations during all projects it ensures the IT portion of the business is as efficient as possible.

I have used this term consolidation multiple times already, but what does it really mean? Within the context of IT, consolidation is most often the process of reviewing all applications and the servers they are hosted on and getting rid of components that are not necessary any more with the goal of utilizing the most up to date technology to better match capacity needs with actual capacity.

In my mind, more important then working on consolidation projects, IT can better utilize their project time and resources by looking at Return on Investment (ROI) for the entire enterprise while working the many projects that make up an IT environment. By reviewing ROI as part of projects a company can ensure that the solutions being implemented will be the cost-effective over the life of the project and not require large consolidation projects that consume time, money and human resources. ROI can be influenced both positively and negatively by a regular update cycle being defined for both hardware and software. This regular cycle ensures that all projects are reviewed for changes on a regular basis to ensure a chance is made to go with modern hardware, less capacity or different solutions to minimize cost.

What type of things should be reviewed by all projects to ensure that capacity does not grow so large that a consolidation project is needed?

  1. Reducing hardware - As part of all new projects, updates, changes or capacity requests the hardware needs should be closely reviewed to ensure that the amount of hardware is not excessive, but rather just enough to handle the availability needs, performance and geographic distribution. A capacity plan should be developed to ensure that additional capacity can be added as needed, but before performance is negatively impacted.

  2. Reducing the number of vendors - ROI for all projects should include a review of complexity and the associated cost of managing that complexity. Consolidation often targets reducing the number of vendors with an IT environment. Carefully reviewing vendors at the beginning of projects can ensure that all vendors have a strong reason for being added and adding costs to projects related to vendor management, support escalation and compatibility matrices.

  3. Reducing the number of instances - Often times companies will have multiple copies of applications or data sets, often referred too as instances, running within the environment. These are created for a variety of reasons, but often contribute to high administration costs and difficulty when auditing the environment. Projects should carefully review the use of multiple instances and ensure that there is a valid business need prior to deploying a solution that could require consolidation or high administration costs after initial deployment.

  4. Rotation of hardware - All hardware will eventually hit the end of it's useful life and have to be upgraded or replaced. To minimize the need for consolidation, new projects should plan during implementation what the minimum and maximum life-cycle of the hardware for the project will be. This will ensure that as the capacity needs grow, hardware can be rotated in for the project to ensure capacity and needs match.

  5. Upgrades of software - Software requires regular patches and upgrades to ensure stability and the ability to easily apply required patches later in the lifecycle of the solution. Projects should include adequate time for applying incremental patches as needed to eliminate the potential of costly downtime periods and staffing resources should a critical patch become available, but not be able to be applied due to missing prerequisites. All project plans should include adequate time for upgrades, maintenance and testing to ensure maximum stability and manageability.

  6. Placement of new applications - Often times the assumption is made that a new application requires a new server, or some variation on that theme. All projects should include a careful review to ensure that all capacity being added will be utilized at it's maximum levels and ensure that duplication of services, hardware and capabilities are not being added into the environment.

  7. Proactive addition of capacity - One method of ensuring that consolidation is not needed down the road, and your IT environment is running efficiently is through the use of capacity planning, and proactively adding the necessary capacity to handle demand and by using centralized management of capacity. This centralized management of capacity will ensure the environment has capacity to handle growth, old hardware is adequately retired and that capacity being added is based on adequate planning and not guesses or last minute panicked needs by end users.

I have used the term return-on-investment (ROI) several times. What components make up the ROI for an IT focused project:

  1. Current administration costs - These administration costs include the physical power and cooling necessary to run the servers for a given set of applications and the associated data, the labor necessary to upgrade, patch and keep the environment stable and the maintenance costs for any hardware or software being used in the environment.

  2. Delta in new solution administration costs - The delta, or difference, in the cost of managing the new solution being proposed. This delta could be represented in weeks, months or even years, depending on the size and complexity of the project being assessed.

As you can probably tell, I am not a fan of consolidation projects. I prefer to manage an enterprise proactively and ensure that capacity added, is capacity needed. But, that is not always an option. in the event you are beginning to look at your environment for potential areas of efficiency, here are some items to review for possible consolidations savings:

  1. Application review - The quickest way to consolidate is to eliminate duplicate applications and functionality from the enterprise. Review all applications and ensure they have a valid business need, executive sponsor and are not a duplicate for other functionality found within the enterprise.

  2. Hardware review - A thorough review of all hardware in the data center will allow you to catalog it's age, power consumption, speed, memory capacity and use in the environment. This information can be compared to the latest information on systems available and determine if power or space savings can be gained by moving to newer hardware platforms.

  3. Data center costs - Paired with the above data, a review of the costs for space and power for your data center can be completed to see if savings can be found through the use of less space within the data center.

Consolidation is a commonly used buzz word in IT today. Consolidation is most often the use of visualization to cut back the number of servers utilized in an environment, and reaping cost savings from the lower power, cooling and space costs. Consolidation can also include work like eliminating applications with duplicate functionality and eliminating pockets of information that must be managed separately from the rest of the corporate enterprise. While consolidation is a worthwhile goal in all IT departments, it is equally important that IT leadership ensure that as new solutions are deployed, they are done in a cost efficient manner and with the necessary amount of capacity. This will ensure capacity is not sitting idle and will need to be consolidated down the road. IT departments can save both money and time by ensuring that a solid strategy is in place to add capacity, tools, servers and applications in a way that is the most efficient for the enterprise.

Thursday, July 22, 2010

Developing "your network" at a new job

Today, one of the most important tools for any job is "your network." This network is not the one that your computers connect too, nor is it a physical item in your office. "Your network" is the group of people that you have established relationships with that can assist you in doing your job more efficiently. These relationships allow you to quickly gather information, answer questions and complete tasks by quickly knowing who within "your network" to call on and who is best suited to assist with a task.

"Your network" is critical to ensuring you can be a success in any role. As people become more distributed in the jobs they complete and jobs become more complicated, the number of other staff you must work with will quickly grow. By having a network of established peers, you can:

  • Quickly locate those folks that are necessary to collaborate with on projects to be successful

  • Ensure that you focus on your tasks and not tasks that another organization is better suited to complete

  • Have a group of staff to ask questions of, get advise from and look too for mentoring or leadership guidance

  • Look good in the eyes of your peers and customers by efficiently completing tasks and projects

  • Have a group of folks to speak to when things at work get stressful

  • Avoid unnecessary mistakes by learning from your peer's experiences

The most critical time to have a strong network to rely on is when you start a new job, or position within the same company. A strong network will allow you to quickly learn the position and be successful at your new tasks. The most common ways to build "your network" in a new role are:

  • Call your peers or sit down over a cup of coffee with them. You can use this time to discuss team dynamics, their roles, their capabilities and understand what they do to be successful on the team.

  • Make a note of important names mentioned during conference calls, meetings and in passing. Reach out to these individual offering a short introduction, and ask about their role. This will help understand when they can be engaged on projects.

  • The most important item in my mind when building your network is asking questions. As a new member of any team, it is not expected that you know everything on day one. Asking questions and following up with the proper subject matter experts shows engagement, passion and a desire to grow with the team.

Until now, most of what I have written is geared towards developing your network within your primary job, at work and with your coworkers. Another important aspect of "your network" is developing relationships with those that are in other industries and similar roles at other companies. These types of networking opportunities allow you to grow not only in your role, but within your industry and develop as an authority within your field.

Long term, the larger your network, the more opportunities you will have for exciting projects, new roles and assistance on your projects. With the mobility in the modern job market, and the uncertainties around long term, consistent employment, having a large network ensures you always have methods for locating new opportunities and sharing your capabilities with others.

These networks do not develop over night, they often take months or years to develop at any company or within a new role. Patience pays off, when starting in a new role, reach out to as many people as possible to introduce yourself and ask about their roles. Some folks will be more receptive than others, but the key is to share your capabilities, understand other peoples and in time, you will develop a strong network to assist in completing your duties.

Ultimately, some of these contacts you develop may turn into longer term relationships. Some of my best friends are people that I first met as peers or members of my network while at a job or working on a project.

Tuesday, April 6, 2010

Enabling Users

The primary goal of any organization responsible for the deployment and support of desktops, laptops and telephones should be to enable the end users to do their job as efficiently as possible. These users often have a primary job that does not include supporting the platform (desktop, laptop, application or mobile device), only using the platform for their primary job. The first step to providing a sufficient level of service is to clearly define your user base, this will help your organization group users based on common skills, common usage patterns and common support requirements. After the user base has been categorized, a support model and list of required tools for each category can be assembled.

By properly grouping your users, IT leadership can more clearly understand how their needs evolve, what their training requirements are and what tools are necessary to enable them to perform their primary job function(s). Grouping users is an evolutionary process that should be reviewed and updated yearly at a minimum, but more often if a companies' structure is regularly changing.

The first step is to create categories to put the various users into, four to five groups is often enough to include all users, but not too many that managing the documentation for them becomes cumbersome. The most common user groups I have seen and worked with are classified as:
  • Company Administration - This group includes people like executive assistance, accountants, human resources and managers. This group's primary use of Information Technology (IT) resources is to complete their job, and traditionally these staff have little to no IT support or troubleshooting experience. This group will most often have little to no opinion about what applications they use for their job, just that the applications allow them to complete their job. They are completely at the mercy of the IT department for system setup, configuration, upgrades and repair.
  • Executive Staff - This group is characterized as often having the same IT skills as Company Administration, but needing a higher level of access to corporate resources and mobility because of travel and meeting schedules. This group's primary characteristic is the higher need for the ability to safely use, transport and protect highly confidential company information, as well as access it in a timely manner.
  • Information Technology Staff - IT staff are characterized as needing high levels of access to a majority of the systems and data within the environment. This group will also commonly need remote access to a majority of the environment to facilitate after hours work, upgrades and outage management. This group is often capable of supporting their own systems for operations like new software install, troubleshooting and upgrades.
  • Power User - A Power Use is someone that would traditionally fall under the Company Administration category, but is distinguished by their opinions of what applications they prefer to use based on previous experience, as well as their ability to provide basic support for them-self by installing new applications, upgrading applications and troubleshooting the most common support problems they may encounter.
  • Developer - Software Developers often fall into their own category as a user type because of their need for testing and development environments, in addition to their need for common business tools like documents, email and web browsing. Developers often need places to compile code, the ability to change administrative settings and install differing versions of libraries that common users to not need access too. Developers often require multiple systems that can be quickly built and rebuild as their testing needs change.

After defining your categories of users, you can define a support model for each group. This support model will include what types of systems they are assigned, what level of support they get during business hours and off business hours and what software licences will be acquired for all staff in each respective group. These definitions can be used to understand the cost for supporting each group of users, as well as the cost for upgrades when new software becomes available or is requested by large groups of staff. The most common support models, that can then be paired with user categories, are:
  • Full-Support - This model is typical of providing a help desk that is capable and properly staffed to respond to support requests 7 days a week, 24 hours a day. This model is the most expensive, but is critical if staff are expected to work off hours like weekends and holidays. This model is most commonly used for users in the Executive Staff category and Company Administration category.
  • Business-Hours Full-Support - This model is typical of providing a help desk that is capable and properly staffed to respond to support requests 5 days a week, 12 hours a day. This support model is most often used for Company Administration staff that require IT support for all issues they may encounter, but do not commonly work after regular business hours. This model of support is less expensive then supporting users 24 hours a day, but creates the potential that staff will not be able to work after hours if they experience severe IT problems after hours.
  • Partial Support - This model is typical of providing a help desk that is capable and properly staffed to respond to support requests for staff that have completed the first level of support and require an escalation to the IT department for support or resolution. The Power Users and Developers will most often use this model for requesting additional information or an exception to company policies after doing the necessary research to support the request.
  • Self-Support - This model is typical of providing on-line help for users with no telephone or live component for the most common support requests. This model is typically used for highly capable users that prefer to manage their own IT environment. This model typically provides a ticket or automated system for requesting work to be completed by the IT department.

We have now defined our users, based on their common support requirements and usage. We have paired that with a support model to ensure both cost efficiency, as well as a balance to ensure users can work when necessary and get support quickly when needed. Now we must define what tools each user category gets based on their business and productivity needs:
  • Desktop Computer - Desktop computers are still the least expensive method to provide access to email, web browsing and network based applications. They can be very powerful for demanding users, but lack the portability to allow users to work from home, or while traveling. While desktop computers are still viable for Company Administration staff, Power Users and Executives tend to avoid them.
  • Laptop Computer - Laptops are growing as a percentage of the systems in use in most companies because of their flexibility, portability and smaller power consumption. Laptops, while often slower then desktop systems, have advanced in the past few years and provide for even the most demanding users. Laptops are most common for Company Executives and Power Users.
  • Smart-phone - Smart phones cover a wide range of products including the iPhone, Blackberry devices, and Android powered devices. These are designed to allow for calendar, email and basic document access while on the run or out of the office. These are becoming more common across all categories of workers to enable them to stay in touch no matter where they are during the day. The use of smart-phone like devices will only increase and more and more applications are optimized for mobile access.
  • Cloud-hosted Virtual Machine - With the popularity of cloud computing, it is becoming very inexpensive to dedicate multiple hosted Virtual Machines to every developer or staff member for development and testing purposes. These are most commonly assigned to Developers and Information Technology Staff. While these do provide a lot of benefits for productivity and testing, they must be implemented to ensure corporate security is maintained.
  • Administrative Access - Administrative Access, regardless of Operating System, refers to the ability of a single user to install software locally and manipulate local configuration parameters. While there are varying levels of Administrative Access with today's fine-grained access tools, this category most often applies to Power Users, Developers and Information Technology Staff.
  • System Performance - System performance is a tool defined by the speed of the equipment assigned to a given user, as well as the amount of storage space it contains and physical memory the device has. Commonly speaking, the faster a system an employee has, the more they can multitask and the faster they will be able to complete actions. All users, regardless of category, should be assigned systems that are fast enough to ensure they are not waiting for operations to complete. Human capitol is much more expensive then faster computers.
  • Bring Your Own PC (BYOPC) - Bring Your Own PC is a new method many companies are looking towards to enable their Power Users by allowing the user to choose the type of system they use for work. This allows the employee to choose the system that they are most comfortable and productive with. It will take some time if this does catch on because of the increased complexity involved for IT departments to ensure various platforms can access common company resources like time cards, email and file sharing. BYOPC also creates security issues that must be managed by the company.

Today, companies have a variety of user categories, each with their own, specific needs for the IT systems they need to complete their job. By carefully grouping users, they can be better understood and provided with the tools and a support model that enables them to be as efficient as possible. This common support model can then drive company planning for costs, upgrades, and other changes. Understanding that not all users are the same is the first step to ensuring that IT provides all users the tools they need to complete their job, regardless of their individual IT skills or opinions.

Wednesday, March 24, 2010

Capacity planning for business IT Systems

Capacity planning is a critical part of all Information Technology (IT) environments. It ensures that the number of servers, licenses, physical memory, bandwidth, disk space, room space, etc is sized properly for the maximum return on investment. This ensures that the user experience is positive, while ensuring that unused capacity is not being paid for and managed without a valid return on investment. Capacity planning is ensuring that the workload for a given environment is properly understood and mapped to create a link between a specific number of users and the amount of infrastructure needed to handle those users’ applications. That information is then laid out on a calendar to ensure that the load over time is understood so that capacity can be added and removed as necessary, without a negative impact on user experience.

This document is meant to serve as a guide to what information to consider when beginning the process of capacity planning within your environment. The purpose is to list the most common considerations and strategies for ensuring your capacity plan is an adequate model for infrastructure growth. First, let’s cover some terms and concepts that are important to understanding capacity planning:

Types of Capacity – Capacity is a very broad term, and within the realm of IT there are a variety of places that need to be considered when evaluating current and future capacity needs. While these are separate areas within the same context, each of them directly affects each other. The most common areas of focus for capacity planning are compute power (CPU speed and quantity), memory capacity (both RAM and hard disk), bandwidth (both within a single server and between devices), space (data center, office and storage facilities), data center (power and cooling), and human capitol (staff and contractors for operating the environment, and the relevant skills they posses).

365-day Calendar – Every business has highs and lows in terms of capacity needs. These can vary from month to month, and as often as hourly within the same day. As part of any long term capacity plan, a long-term calendar is needed to show the highs and lows in capacity needs. This should incorporate in holidays that affect the load on the environment, the needs of the business for reporting and trending and any audit needs based on industry specific rules.

User Load relative to Capacity – This is a formal mapping of a specific user load, to a defined amount of capacity with constraints around user response time, availability and user experience. This is the building block for a corporate wide capacity plan and enables staff to understand how much capacity must be added based on user growth. Most organizations will use their Service Level Agreements (SLAs) for setting this relationship.

The process to developing a capacity plan can be long and involve many steps depending on the complexity of the environment, dynamic nature of the work load, and the type of software being using. These are the most common steps (in no particular order) for information gathering as part of developing this capacity plan:

Load Testing – This is the process of testing specific user loads on a known capacity of hardware. These, when done multiple times on varying configurations can develop a capacity model for how many users a set of hardware can support at maximum without performance degradation.

Review of similar environments/workloads – This step is to ensure that knowledge gained within the industry, in similar environments is applied to your capacity plan and your specific environment. This step is not meant to assume some other workload is identical to yours, it is probably not, but there probably are similar workloads that can provide guidance on what to test in the Load Testing phase and what models need to be developed to properly plan capacity.

Trial and Error – A large part of load testing is trial and error. Many environments are simply too large to fully test in a development or test environment. This trial and error can be done in a strategic manner, testing types of capacity needs that are the most likely to be impacted by large or abnormal loads.

SLAs – This is the process of documenting what contractual requirements are in place for ensuring the users get the level of availability, uptime, and performance they expect and have paid for with the service.

The above steps are part of the technical process to developing a capacity plan that is unique to your environment and its needs. These, in addition to carefully documenting when and how to increase capacity can ensure that when the environment hits pre-set triggers, capacity can be added easily, ensuring a consistent user experience.

Capacity planning is ensuring that a clearly defined user experience can be mapped to a specific amount of infrastructure to support that experience. This plan should include not only what increments capacity can be added in, but also what triggers cause that capacity increase to occur. This plan, when associated with a calendar of business needs, trends and holidays can ensure the proactive growth of the environment and a consistent user experience, without having excess capacity that is costing the firm money and not being fully utilized.

Monday, March 8, 2010

Remote Team Dynamics

In recent years companies have increased the speed at which they downsized offices and subsequently hired more staff "working remote." "Working remote" can include a variety of alternative working arrangements, but is most commonly characterized by staff that work primarily from their home, or the customer location. This has created many teams that the staff are distributed across the country and the world. These remote employees typically have the freedom to work the hours they are most productive, as well as at the location they are most comfortable at, this could include coworking spaces, coffee shops or parts.

One significant change as a team becomes more distributed and remote is that communication channels and patterns must evolve to ensure staff feel the same level of connection that they would if they worked in a traditional office setting. Communication models must adapt to ensure that staff not only feel connected to their team and manager, but that they have effective methods to reach out to their team for discussions, advise and coordination.

I have worked in a variety of roles where my manager and I were in different states, as well as managed teams spread out as far as Australia, while I was based in Texas. This presented a unique challenge in ensuring that all team members had the same information and capabilities to do their job, regardless of their specific locations or timezones. Below are a few of the most successful methods I have found for managing a team that is distributed:

Weekly Team Meetings

The primary method for team communication, pass down and discussion should be a weekly call. This provides a known, consistent forum for the team to discuss changes within the team, within the company and pass down information from management to the team. The focus of the call should be kept on items and topics that are relevant to the majority of the team, sideline discussions should be scheduled at a different time to discuss topics in detail that do not interest or affect the entire group. Regular team calls are a great opportunity to foster team trust. These calls provide a place for team members to share their knowledge and experience as well as allow for open communication on issues that need a second opinion or escalation.

The time of the day that these calls are held is critical to ensuring maximum participation and limiting the impact of the call on the regular work of the team. For teams that are spread across timezones it is beneficial to hold calls at alternating times, either presenting the information twice, or to ensure that if one timezone must be up for a very early call, they do no have to make that sacrifice every week, but other regions have calls at off times periodically as well. Another option is to record the calls so that folks can listen to them at a more convenient time.

An agenda for the call should always be sent ahead of time, this will allow people to prepare for the call. An agenda can also be used to set time limits for various topics to ensure that one topic does not unexpectedly consume the entire schedule time for the call.

Finally, meeting notes should be provided after each call. These reinforce any policies stated to the team and allow the staff a reference to refer too later should they forget what was said or decided on the call. These meeting notes can also serve as the official record for any decisions that require review and approval by the team or management.


Every call should contain a roundtable, this provides all team members a brief period to share lessons learned that impact the rest of the team, and allow folks to understand what their peers are working on and may be able to collaborate on.

Each person's time should be limited so that they may mention one highlight and one lowlight of the week. The purpose is to share lessons learns with the team so that best practices can be shared across the organization.

Alternative Team Communication

In addition to a regular team call, there are several other methods that can be used for communicating with the team and building strong bonds between members, regardless of location.

Team Discussion List - An email distribution list should be available for the members of the remote team to communicate on topics that would normally warrant a hallway conversation. This could be technical discussions, product discussions or questions posed to the team about a customer or product. This forum provides the team a known path for team communication and input.

Team Watercooler List - One item that gets missed a lot with remote teams is the loss of hallway discussions on personal issues or announcements. A separate distribution list should be available to the team for topic discussion that is not immediately applicable to the company, but allows employees on the team to get to know each other better and share good news from their personal lives. This allows a name and personality to be shared for each member of the team.

Remote teams are a new challenge that companies are beginning to experience as more and more staff work from home or other alternative working arrangements. By having regular communication with the team, it allows these staff that are separated to keep in close contact, develop a trust for one another and ensure all team members have quick paths for discussion with the team. Ensuing communication flows regularly ensures that these remote employees feel connected to the team and have the information they need to be successful in their roles at the company.

Thursday, January 14, 2010

Defining Seniority in IT

Seniority within Information Technology (IT) departments has always been a hard thing to define. The technologies in use shift so rapidly and people move jobs quite often; that determining who is the most Senior person on a team is often not as simple as who has been there the longest or who has worked in the field the longest.

Seniority in the sense of this posting is having the position and experience that the fellow members of your team go to you when they have questions, need advice or otherwise need a second opinion on what they are working on. Seniority is also defining the person that your managers are most likely to go to when they need direction on a project, or need to delegate important work.

Traditionally, companies have often set seniority within a team based primary on time within a given job. This is a less adequate measure in IT because the technology changes so rapidly, a person must keep up with both the technology and what are often called soft skills. These soft skills enable an employee to be more flexible in what they work on, and more dynamic in who they interact with within a company, based on the project and needs of the day.

So, ultimately, what makes you as an employee more senior within your team and subsequently more valuable to the organization?

When positioning the more senior staff up with the lower experienced team members, it is a balance of multiple skills and experience types. One does not necessarily replace another, and a truly Senior member of any team must posses all the following skills at a minimum, with an emphasis on some more then others based on the job role:

  • Contributions (Time, Company Goals, Knowledge) - Contributions are the most important part to establishing a position as a Senior member of an IT team. Contributions can be technical in nature, time or knowledge, but all show other members of the team both your dedication, capabilities, and commitment to the future success of the company.
  • Experience (Current Technologies, Past Technologies) - Experience with a wide range of technologies and hardware will enable you to make informed decisions and suggestions on future direction and architectures. A wealth of knowledge and hands-on experience will ensure that no matter the problem, you will have experience in how to approach it, even if the specific technology is a new one.
  • Understanding of the existing IT Infrastructure - A solid understanding of any existing IT infrastructure will enable you to fully understand legacy burdens when making future planning decisions. It also enables you to understand where the company has been and what has been tried so that if something worked or did not, that can properly be taken into account on future solutions.
  • Understanding of the business problem to be solved by IT - Information Technology (IT) is not the primary, driving factor for the majority of businesses. The majority of the companies out there only use IT as a way to meet their primary market more effectively. The most senior staff in IT must understand not only the IT aspect, but the technology and business behind the companies primary market. This ensures that IT is properly aligned and working towards the larger company-wide goals.
  • Ability to interact with varying levels of staff and management - Interacting with various levels of staff and management within a company is an important skill. It shows that you not only understand the challenges of each level, but you understand what types and details of communication need to be understood at each level. The proper level of detail and big-picture at each level of communication can ensure quick decision making and solid support from executive management when escalations are necessary.
  • Understanding of the company direction - Having a full understanding of a companies long term goals and direction allow IT staff to ensure that suggestions, plans and comments will not become obsolete early in the project life cycle. By showing your managers that you understand the direction, allows you to put the companies best interests first and work towards hitting those goals.
  • Time Management - Time management is your ability to prioritize projects based on deliverable dates and ensure that appropriate forward progress is made on all projects to meet the appropriate targets for delivery. Time management shows senior leaders at the company that you understand the complexities of juggling many projects and can compensate as unexpected items come your way.
  • Project Management - Project Management is your ability to manage not only your tasks and deliverables, but the dependencies between them and the work of other staff. This type of leadership enables you to work with larger, more complex teams, as well as provide status updates to management on project progression.
  • Knowledge Transfer (Mentoring) - This is your ability to assist other staff in developing, both company specific knowledge, as well as industry knowledge. The goal in this category should be to develop into a staff member that others are comfortable speaking with for advise and input, knowing that you can provide a unique, relevant insight for them.

Now - the big question - "What about my salary, how does that relate?" - Salary is a difficult subject for some folks. Some people prefer to discuss salary as a very private matter, others feel it is a public topic for discussion. Regardless of a person's choice, their salary is a reflection of the value a company sees in them. If a company is willing to provide a higher salary, they expect a higher level of return. The more traits you posses from the above list and the higher level of development of those traits will translate into your ability to provide more value to your employer.

I hope this has provided some insight into how staff are defined as Senior within IT. Ultimately, it should be your goal to develop the proper balance of the skills listed above, based on your job role. The more experience you can gain in each area and the more expertise, the wider a range of jobs you can hold and staff you can interact with. That flexibility will create value for the company you work for and put yourself at the top of your peers.