Financial transparency with employees is key to long term success?

Financial transparency with employees is key to long term success?

As I look back over my almost 20 years of corporate IT employment in multiple MidWestern companies, I’m starting to detect a pattern.  And for those that know me or read my bio know, I’ve working in multiple industries supporting multiple business groups in both public and privately held companies large and small.  Those groups span retail, commodities trading, natural resource exploration, mining and refining, banking and financial services, legal services and manufacturing.  The pattern or trend I am referring to is:

“The degree of success a company or business unit experiences seems to be proportional to the degree of financial transparency reported to employees.”

The more transparent the company or group was with profits or losses, costs and expenditures, revenues and margin, the more successful the company or business unit was growth-wise.  The more secretive and obfuscated the financials the more downward trending the company or business unit as a whole.  I can even recall the same business unit switching from transparent to obfuscated coinciding with a positive to negative growth switch.

The transparency I’ve referring to is not only the quarterly and yearly reports filed with the SEC and available to the investor community.  It is taking some time out of the daily work schedule to bring employees together and explain the business decisions, strategy, budget and market conditions that are behind and driving those numbers.

In recalling my MBA coursework, I had an excellent course on family owned businesses by Ernesto J. Poza, author of “Family Business”.  Ernesto J. Poza is now the Professor of Global Family Enterprise at the Thunderbird School of Global Management.  I believe he also made this link in his course I took at the Weatherhead School of Management at Case Western Reserve University.  His focus was family owned rather than publicly owned businesses, but I believe the theme can be extended to both.  I recently took a continuing education course through Weatherhead and met a CFO of a small, nearby Internet creative design firm who mentioned his company was experiencing measured growth even through the great recession.  He also spoke of the owners having a monthly financial update where a straight review of the prior month’s numbers gives all employees a direct sense of the health of the company.

The straight reporting of the financial health of a company or business unit gives everyone a clear picture of where the company is headed.  If repeated quarters of downward trending financial indicators are given, then no one should be surprised that costs, including employee overhead, needs to be seriously considered for adjustments.  Managing technical teams is more straight forward when everyone on the team knows the health of the overall company or unit.

Can anyone confirm the link between company and/or business unit growth and financial transparent reporting to employees?  Any disagree?

  • Share/Bookmark
, , , , , , ,
How to marry the classic IT budget and Agile?

How to marry the classic IT budget and Agile?

I’ve been reading more and more about managing large projects with Agile.  I am wondering how best to optimize the merger of the classic IT yearly budget cycle for large scale projects with the Agile principles and agile project delivery.  There has to be a way to balance the constraints of an upfront budget process with the benefits of agile-ly deployed business prioritized deliverables.  Or in other words, how does one keep the dollars and cents focused people happy and the business project sponsors enjoying the benefits of Agile delivery?

The classic IT yearly budget cycle I’m referring to is one of wild guesses at capital such as servers or software licenses, maintenance, expense and internal plus external resource costs to complete projects that involve IT in the next yearly financial calendar.  Projects maybe completely IT driven with IT as the end customer or projects maybe requested by the business to deliver business value that need IT support in delivering that value.  In either case, the classic budgeting versus agility challenges is the same.  Take the typical project mixing IT and business changes:

New Project Request Form:

Project: A456 Enable Call Center Order Confirmation

Scope: Upgrade the FlimFlam call center system from 5.0 to 6.0 to enable the customer communication widget and change the call center workflow to use the widget and not carrier pigeon to confirm orders with customers.

Budget Questions:

  • How much does the upgrade cost?  (easy, ask software vendor)
  • How many consulting hours and dollars are needed to support upgrade? (medium, ask software vendor’s professional services for a typical customer upgrade number, then add fudge factors to map over to your company)
  • How many hours from your internal shared IT resources to support the entire effort? (hard, don’t have the time to go through the project requirements gathering and design phase or collect all stories, get story points, etc., etc., so take a wild guess based on past projects or other similar work, add fudge factors, add more fudge factors, then double it … you get the idea)

Project Budget Submission Criteria:

? = Capital

? = Maintenance

? = Expense

? = Internal Resource Hours

? = External Resources Hours

? = External Resources Hourly Rate

? = Total External Labor Costs

The budget process demands a number to be provided for each question mark.  You know that certain magic number thresholds, if cross, will doom your project or almost as bad, push it into a category that requires a whole new level of business case and ROI sizing effort. This classic IT project budgeting process doesn’t seem to support the majority of the Agile project delivery process.

Does anyone have any experience or references to best practices in this area of marring legacy budgeting and agility?

  • Share/Bookmark
, , , , , , , ,

I was recently asked to help with putting together a logical sequence of steps to help a group go from no Single Sign-On strategy through the discussions to ultimately arrive at an executable SSO strategy. I’ve attached the presentation below in hopes that others might find it valuable.

  • Share/Bookmark
, , ,
Organization Silos Impeding your Enterprise Architecture?

Organization Silos Impeding your Enterprise Architecture?

There are countless sources extolling the benefits of a strong enterprise architecture strategy. The experts all agree on an effective enterprise architecture and even more so the larger the organization’s consumption of IT services. But recently, I’ve been reminded that the IT organizational structure, especially the structure aligned to providing new projects and new technical solutions has a dramatic impact on the ability for an organization to realize the benefits of established enterprise architecture.

In short, the more the IT new project and solution delivery organization is directly aligned with the individual business unit or group it supports, the more likely a spaghetti architecture will be the result. To help outline this point, below is a quick graphic of a sample organization chart that shows the two extremes:

Extreme A = Business group/unit functionally aligned:

Blog - Organizational Structure and Enterprise Architecture A

Extreme B = Common function/service aligned:

Blog - Organizational Structure and Enterprise Architecture B

The “extreme A” example is functioning with each vertical group acting as silo. Each silo is held accountable for delivering solutions to their business unit. In turn, each business unit will drive their IT silo to meet their needs exclusively. There is no inherent need to collaborate with their peers supporting other business units even if there are “enterprise architecture goals”. In my observation, collaboration might actually be viewed as a distraction to getting work done. There is essentially no organizational driver to force standard solutions and re-use of technology assets.

Sure, an architect in one group might have a strong personal relationship with an architect in another group, but unless they are trying to share ideas that happen to be at relatively the same level of “maturity” for each silo’s needs, they will unlikely be able to produce a common, re-useable technology used across both silos. Architect A attempts to work out a common solution with Architect B but suddenly Architect B’s project gets accelerated. Suddenly Architect B has to quick assemble a slimmed down solution that can’t be dependent on Architect A’s requirements or time-line. And sure, everyone might meet and agree to “retrofit” Architect B’s project with a more standardized solution with Architect A’s project in a later phase/iteration, but it would take an amazing level of cross-silo organizational governance to make sure that happens. If that standardization would in any way delay Architect A’s silo from delivering from the business, the standardization most likely gets pushed far and far out until no one remembers or even exists that remembers why the architecture alignment was needed in the first place.

Other potentially non-technology specific negative byproducts can evolve from this structure:

  • Strong versus weak silos

One silo maybe more effective at deploying more current technology by the very nature of the business unit’s needs. As an example, consider a customer product or engineer unit compared to say, finance or one that uses in-house developed technology versus another with outsourced/SaaS technology. This creates a problem of talented architects and developers/others actively seek out roles within the perceived “strong silo” creating an even stronger silo compared to the other silos.

  • Overall increased IT cost of ownership

As each silo is standing up technology to meet the business unit’s needs, they are all solving basically a significant number of the same problems with different solutions. Those solutions come with reoccurring maintenance, product end of life and all the traditional support and vendor management overheard. (I’ve written extensively about vendor management in past articles.) Then, to drive up costs even further, as some business need to see a “single view of the customer” or some other cross silo business challenge pops up, the cost to map all the data across the disparate systems is exceedingly high. In addition, not only does the mapping need to occur, but the technical (and probably some business) workflow needs to be altered to continue to keep all the data in sync. Someone suggests we need “Master Data Management” and now you have the cost and complexity of implementing a system to manage the data across all your systems.

The “extreme B” example brings the solution needs from each separate business unit/group into a common functionally aligned project delivery discipline. The goal is to leverage best practices/success stories from working with one business unit/group across to the other business units/groups via the common management structure by discipline. More specifically, the goals and objectives of each IT service discipline or function can be aligned to efficiencies and re-use within the specific discipline. Project Managers ensure they have common mechanisms to track and report on the project process. Business Analysts make sure they have a common framework for capturing requirements. Architects, develop unique frameworks for common requirements across all projects. Developers follow a consistent coding standard and reuse objects for data access, error reporting, and instrumentation, etc. The same goes for the other disciplines. Each discipline can focus on efficiencies aligned within their area of responsibility. And since each discipline has a somewhat singular work input and output for all business units, there is complete enterprise visibility to what is needed per each discipline. Thus, ultimately, the architecture team is looking across the entire enterprise at all the requirements and multi-year plans and can be charged with common frameworks for essential IT needs:

  • Authentication
  • Authorization
  • Entitlement Management
  • Business Rules/Workflow Management
  • Business Event Management
  • Reporting
  • Data Structure, Storage, Management, Retention, Archiving
  • Auditing and Compliance
  • Capacity Planning
  • Disaster Recovery

… and probably a bunch more that don’t immediately come to mind!

In conclusion, a strong enterprise architecture strategy gets a significant boost from a discipline aligned organizational structure rather than a business unit/group aligned structure.

Anyone have any thoughts to support and/or contradict my thoughts here?

  • Share/Bookmark
, , , , , , , , , ,
Resource Thrashing

What do I work on now?

Have you ever stepped back and observed a [maybe yours?] MidWestern IT technical team and wondered why all the engineers seem legitimately busy, yet there doesn’t appear to be a proportional amount of production (or test, or QA) project changes and/or deployments?  Phones are ringing, emails are being sent, multiple instant message chat session windows are open, requirements and design documents are being revised and shared but environment changes aren’t being implemented.  Sure, your organization maybe large enough that duration from project kick-off till the first production deployment could be over a year and a half or more.  In a past life, I was responsible for a web customer product wide single sign-on system that once we completed a system upgrade of some sort, we had to immediately kick off a project to begin the next upgrade because the software and OS refresh cycles were averaging 1.5 years from start to finish.  Yet, have you ever considered that your resources might be getting thrashed with too many concurrent requests from too many sources without any easy mechanism to determine what to work on first, next and what can be put on hold?

I consider team member resource thrashing to be equivalent to an application server that is being overwhelmed with requests from many clients (such as web servers in a web tier).  If you have ever observed high volume systems, such as heavily used Internet web applications, there is a threshold of total requests at which the system can no longer service all the requests and disasters occur.  As the client request count rapidly approaches this threshold, the application servers continue to spin up more threads to assign to each request.  The closer to this threshold, the more CPU cycles are expended in starting, pausing and managing the threads themselves and not the work the threads need to do to actually complete the original work request itself.  The thread count climbs, the CPU cycles to manage that thread count climb and the whole system eventually falls over and the tough job of recovery under extreme load begins.

This thread thrashing is analogous to team resource thrashing.  There clearly is work for the team to be doing, but so many disparate requests are coming into the resources on the team that every team member is barely able to get someone off the phone with one request before an email arrives with additional requests.

Now, I can’t take full credit for this succinctly brilliant assessment of a common large corporate IT occurrence.  In a past professional life, my wise senior manager was astute enough to identify this depiction during a production issue.  The enterprise service my team was troubleshooting was causing performance issues across a number of highly visible customer web applications.  Many teams were demanding status, asking random technical questions and posing endless theories of the few resources on my team as to why the systems were behaving as they were.  We could barely get any real technical analysis completed as we had to appease this growing horde of interested bystanders otherwise risk being cast negatively as “non-partnering”.  The resource thrashing assessment as a barrier to what they ultimately wanted: answers caused the external groups to take some pause.  This allowed us to dig in, really figure out what is wrong and fix it.

I’ve written a series of articles on making it a priority to establish a single view of the work for you team in order to be able to do effective resource planning.  But in the process of determining the single view, also count up how many different work request sources exist.  You may be surprised to find in excess of eight, nine, ten or more ways work can be requested of a single resource.

So what is the big deal?  If someone is getting ten different sources of requests for work, how does that someone figure out what to work on and what can wait?  Most likely, the “squeaky wheel gets the most grease” adage takes over.  Additionally, many project failure assessments find that excessive multitasking can cause key deliverables to missed or delivered below quality.  (Third most frequent cause of IT project failure in a survey by Steve McConnell with construx.com)

What can you do to improve this situation?

Draw a picture

One of the first things you may want to seriously consider doing is to sit down with the individuals on your team and draw up a picture of all the work request sources.  Peer management maybe generally aware that this resource thrashing is going on, but present them with a picture of just how many sources and it makes a bigger impact.  By making the problem more visual, it sets the tone for why external groups requesting work aren’t getting the expedient service they are expecting.

Identify prioritization mechanisms

Another thing you can do is identify the most critical groups and start a dialog to establish a means of prioritizing work requests.  Is it the project management office that is feeling the most pain from not having a predictable resource model nor consistently met delivery timelines?  Get your single view of the work in front of them and the companion back log of requests and get them to help prioritize.  Setup a re-occurring meeting to bring revised views of the work requests for consistent re-prioritization and the winds of “this is hotter than any other project” blow regularly.  Is it direct product managers or business stakeholders that have to work directly with IT that are frustrated?  Do the same thing as with a project management office, just be prepared to have to cautiously identify other business groups that are claiming higher priority and be prepared for some grandstanding or other self importance postulating as the business groups with the most impact on the bottom eventually rise to the top of your list.

I would like to re-stress, it may seem like a lot of data gathering and schedule building, but I’ve never seen this type of team resource thrashing challenge get solved by any magic external group or process.  As an IT manager, you may have to roll up your sleeves and did into the scheduling data.  Finally, this isn’t a “fire and forget” exercise.  Be prepared for having to repeat this data true-up on a regular basis to continue to establish a more clear prioritized path forward.

Anyone have any other tips on how to get in front of a team of thrashed resources?

  • Share/Bookmark
, , ,

Abruptly in the job market, what to do?

Abruptly in the job market, what to do?

Expansion and contraction of the IT labor force in MidWestern companies is nothing unusual. In America’s boom and bust capitalist economic system of recent decades, during booms, MidWestern companies expand their IT labor force in order to capitalize on automation efficiencies and work volume management through IT enablement. When the boom time is replaced with a bust or significant drop in demand for a company’s products or services, the need for IT automation, overhead spend, etc. follows suit. As some may know, I was recently unemployed. Due to the terms associated with leaving my previous employer, I am unable to share any further details.

Finding myself somewhat abruptly in the job market, I now had to make some choices. There are a number of Internet resources suggesting this new loss of employment state is a great opportunity to re-assess your life priorities and career path. Others have mountains of compelling evidence to jump right back in the job hunt before goofing off becomes your new employment default (such as “Nine Reasons Not To Delay Your Job Hunt or “Clearview Counterpoint: Should Employees Downgrade Job & Salary Expectations For Next Few Years?”). For me, I had contiguous employment from 1991 through mid-2001 (victim of the dot-com IT employment burst, anyone remember the birth of Odd Todd and Laid Off Land?), then late-2001 till May 2010 (now victim of the Great Recession). Thus, for me, I had the benefit of going through this experience once before (although it seems a lifetime ago as I write this) that offered some guidance on what works and what doesn’t work for me when faced with unplanned unemployment. I thought I would share some of my experiences with shifting from the work routine and the familiar office scene to having that routine completely shut off.

Realization = Loss of Structure

Your proverbial 9 to 5 structure is suddenly replaced by a giant void. Nothing really forces you to get up early and jump into the shower. Yet if you are at all like me, you are pre-programmed to do so. Thus, you find yourself compelled to do it anyway. For some, this maybe a gift from the gods, but for folks like me who have had almost 20 years of 9 to 5 familiar work driven structure, it is a striking realization. The realization is that there is no compelling reason to get up and be productive because there is no demanding employer out there. This realization can indeed be a bit shocking.

Opportunity = Replace Old Structure with New Structure: The Schedule

I’ve found that creating a new structure worked for me. I got up relatively at the same time as when I was going to work. I completed the same morning routine. I did choose slightly more casual clothes than I normally would wear to work as a minor benefit. I then grabbed my really old, clunky laptop, jumped in the car and headed to “the office”. This familiarity of schedule helped me to keep focused on the future rather than dwell on the present or the past. I was used to getting to the office and jumping right into the work. Now, I just replaced the previous work with the new work of finding a new job.

Opportunity = Replace Old Structure with New Structure: “The Office”

I replaced “the office” with local coffee shops. And since I was planning on working, not catching up with an old buddy, I sought out coffee shops that met the following criteria (pretty much in the order of priority):

  • Free (reliable) wireless Internet
  • Tables for setting up a work space (not just chairs for lounging)
  • Power outlets in easy reach
  • Free coffee refills
  • Enough noise so that it re-creates your office environment but not so much noise that you can’t focus

I also found having a few different destinations instead of just one helped break up the monotony.

I was surprised by the number of other people with laptops, notebooks, papers and cell phones buzzing around me that helped create that familiar office like environment. I tried local libraries which always offered free Internet and good desk setups, but the quiet was too non-office-like for me.

Realization = No Coworker Interaction

Every IT job imaginable that involves traipsing into an office comes with some degree of coworker banter. In addition, most if not all MidWestern IT jobs come with business/customer/client/management interaction. Once you are unemployed, that interaction ceases to exist. It is always amazing to me how much that professional and social interaction becomes an integral part of your work life. You might not realize how much a part until it is suddenly non-existent.

Opportunity = No Coworker Interaction: Replace with Social Networking

Remember all that career advice to build a professional network of people for times such as these? Now is the time to get some of the payback for your efforts in keeping in touch with people for which you crossed professional paths. You name the social media channel and I announced my availability in the job market. From Linked-In to Facebook to Twitter to even my personal web blog, I let everyone know I was back in the local job market. I also pulled out my list of professional email addresses collected over the recent years and sent everyone a brief personal note indicating my change in employment status and a brief indication of what type of work I was capable of doing. I chose the word “capable” strategically to cast the widest possible net of job options. Sure, I might not want to do X, but rather Y. Yet, if I could successfully do X and there is an opportunity to do X in the near term, why not engage in some hopeful dialog? You never know when a conversation about doing one thing can lead to something more to your preference. In my opinion, when looking for work, having as many proverbial doors open is best.

Results = Surprising

I was completely amazed by the number and immediacy of the responses from all the media channels. Almost instantly, people were responding with understanding and support. I also received a number of direct phone calls to chat about possible opportunities. There was even someone I last interacted with in grade school that volunteered to get my resume in front of a local software company’s head of HR due to his relationship with the HR head from his past.

I continued to share my updates via my social media sites. I didn’t post every five minute statuses “… I just posted to ABC Company, got umpteenth cup of coffee, now headed to the rest room…”, but I focused on periodic upbeat, positive news in reaction to my search progress. Again, the response was equally positive and upbeat. This contributed to maintaining some level of familiar coworker banter to keep oneself positive about future prospects.

Lastly, I’ve heard of people recently losing their jobs and then hiding the job loss from friends and even family. Being my second time around in the forced unemployed state, I completely looked past the possible shame, embarrassment and sense of loss and immediately refocused on letting the world know I have value to bring to a new employer. Also, more than 1 in 10 people are currently unemployed thus it is far from a shameful or embarrassed state to be in. Thus, the more people who know you are looking for a job, the more chances someone will know someone who needs the value you can provide.

Summary

Hopefully some of my experiences captured above will help spark others in the throes of finding employment in the Great Recession. There are probably a whole slew of other tidbits but these were the ones that jumped out at me initially:

  • Consider a job search schedule that somewhat matches your recent work schedule.
  • Reach out to everyone via every media channel you can image and let them know you are looking for a job and what you are capable of doing.
  • Share your successes via those media channels in a reserved but on a frequent basis .

Anyone have any other tips to share?

  • Share/Bookmark
, , , , ,
Get too tactical and get set on fire

Get too tactical and get set on fire

I read Neil’s “How to do Nothing” blog article on the topic of effective management back when I first discovered his blog earlier this year (2010).  I was struck by the pure simplicity of his eight attributes of effective team management at the time.  Neil was gracious enough to comment on a recent article I published on agile project management reducing application over architecture.  I went back and re-read his article and realized it is even more impactful on successful team management than I originally thought.  I thought I would take a few paragraphs to further extend the concepts Neil outlined in this article.

Anticipate rather than react

Neil suggests having your hair on proverbial fire frequently by getting hands-on in addressing issues isn’t the most affective approach.  I agree with him that in these hair-on-fire situations, it can be exhilarating to roll-up your sleeves and jump in and be the hero that saves the project or restores production service, etc.  Once a sense of calm returns after the hero has saved the day, the hero starts itching for the next crisis to be the savior and the behavior gets repeated.  The hero may get initial fame and glory, but it is short lived.  In my experience in multiple MidWestern companies, the hero ultimately gets revealed for his/her display of reactionary management.  Senior management begins to grow tired of the peaks and valleys of crisis, pending doom, disaster avoided, pause and repeat for the next crisis.  I’ve also seen the hero scratch their heads when the next re-organization comes along and the hero finds him/herself as a technical lead over a team with a new management layer above them.

Maintain relationships outside the team

I definitely agree with Neil here.  I would even add the larger the organization, the more this is essential.  As your team provides a service to a larger project or effort, the number of ways other teams can throw a wrench in the works is almost immeasurable.  In addition, the message that gets filtered to your team and then to you may be completely disconnected from the real blockage.  Being able to pick up the phone and call a peer manager, with whom you have established a rapport, and get right to the real issue is invaluable.  Once the real issue is known, you can offer guidance to your team on how to navigate to a successful path forward.  Without this knowledge gleaned from a peer manager, you can easily get caught up in the panic the blockage creates and risk being set on fire in the process.

Big visible task boards

In a word: absolutely!  By all means, assuming everyone knows what to do is a recipe for disaster.  A disaster in a sense that tasks won’t get executed according to plan and you will be dragged back into strategizing on how to go forward while accounting for the missteps of the past.  As Neil says, use a whiteboard or in my case, use some electronic task tracking system that isn’t overly cumbersome yet makes it unbelievably clear who is working on what, doing what and when.  Have you ever considered using your bug or defect tracking system as a light weight task tracking mechanism?

Team collaboration

I’ve written on this topic in the past relative to the leveraging of self-organizing, strong teams with a focus on intense collaboration.  If you make yourself a keeper of all knowledge, you will constantly be engaged to assist with tactical decision-ing and thus at risk of again, being set on fire.  If you drive team members asking you questions back to fellow team members, they will start going to fellow team members directly.  Clearly, once this occurs, you will need to be contingent of when you will need to specifically instruct your team to collaborate with you when you are engaged in some issue that you aren’t at a point of delegating just yet.

Small incremental changes

If you are considering pitching or implementing a significant change that you have dreamed up that will get everyone working better, more efficient and at the same time cure cancer, you might want to put on the brakes.  People accept change in a variety of ways.  The more aggressive the change from the current norm the more likely you will have to invest additional time in addressing how each impacted individual reacts to the change.  If you stretch your change implementation out over time so it seems like you are providing “just in time” solutions to the ultimate problem, you will most likely achieve a more successful end result all around.  Plus, with each incremental small change, you can more easily course correct or tweak your next change to be even more effective and hopefully, even less visible.

Inspect and adapt

Getting the team to contribute ideas and suggest process improvements takes the decision-ing pressure off of you and empowers the people doing the work and most impacted by the process to suggest the most effective improvements.  Plus, if the team is on board with an improvement, they are more than likely to make the implementation successful, because it is their improvement.  On the flip side, how motivated are you if you have the ultimate “my boss told me to do it, thus if it doesn’t work, not mu problem” excuse at the ready when the slightest problem is encountered?  What motivation does anyone have in that situation to try and make it work?

Hire great people

These almost goes without saying … hire great people and then just get out of their way so they can do good work.

Commit to personal development

If don’t have the flexibility to move poor performers out and attract in top performers, and let’s face it, MidWestern companies don’t always have the most flexible staffing models nor the local talent pool to quickly make team changes happen.  Bringing up the level of your current team is more than likely your best option.  Take advantage of any tuition or training bugets available to strongly encourage folks to get away from their desks and get exposed to some additional improvement perspectives.  Consider incremental “stretch” assignments to use as opportunitties to challenge those that have a weakness in a certain skill set.  Catch up with them “offline” and chat with them about what problems or challenges they are facing and offer some tips to help them get over those hurrdles.

Summary

In summary, the concept that a strong manager is precieved to be “doing nothing” is a compelling goal for any team manager to attain.  By essentially making it a top priority for you to empower your team to function as autonomously as possible, it allows you to focus on inter-company relationship building and other functions only you can do.  It also allows you to identifying process and skill set weaknesses without being tactically involved in the work to consider small, incremental improvements and then absorb the result.

  • Share/Bookmark
, , , , , ,
Don't give up on the Gantt!

Don't give up on the Gantt!

I’ve written before that I am not an “Agile” nor “agile” development nor project management expert. I’ve previously proposed that one by product of “agile” development and project management in general is a reduction in over architect-ed software solutions. With project requirements being represented as stories and tools such as Kanban boards for lean software development to show the flow of work through a process, one might think the classic waterfall project management work and schedule reporting tool, the Gantt chart, is obsolete. Before you abandon this tried and true project schedule reporting solution for the more transparent status inherent in agile project management, you may want to keep reading.

So, you have succeeded in transitioning your IT project management and delivery methodology to one that is more aligned with “agile” than “waterfall”. Your non-IT stakeholders are more engaged than ever in the project requirements definition, prioritization and sprint/release scheduling process. You are tempted to stop trying to use MS Project or other tools to represent schedules in Gantt form. In a word: “don’t”.

One of the main criticisms of complete agile project management is: “The dangers are the loss of recognition that systems/solutions change continually over time as well as team members” Put in more direct, bullet point form from my experience of this criticism expressed by product or management stakeholders:

  • What is the big picture?

  • I have the big picture in mind, when am I going to get X?

  • At the current burn rate, how much time will be invested before I get Y?

  • If I add/subtract resources, what will be the impact on the big picture?

These are all criticism subsets that can be directly addressed with the data collection associated with producing a classic Gantt chart. So don’t throw away those Gantt chart creation disciplines just yet.

What is the big picture? I have the big picture in mind, when am I going to get X?

Let the sprint/release iterations continue, but don’t let too much time go by past the releases to meet with the product stakeholders and update your rendition of the product road-map. (You have your road-map, right? You aren’t letting the business surprise you with all requests, right?) This is a great opportunity to get an early indicator if product stakeholders have become caught up in their immediate needs and lost sight of the “cost” of those features. By “cost” I mean the investment in features now means pushing out the product road map. You can gently remind them how the “cost” appears graphically in a Gantt. The Gantt view of their product can clearly show “milestone 45” getting pushed into the next quarter due to their recent feature bonanza. It is much easier to have the “hey, I thought I was getting milestone 45 this quarter” discussion as soon as the schedule shows initial signs of slippage rather then at the start of the next quarter.

At the current burn rate, how much time will be invested before I get Y? If I add/subtract resources, what will be the impact on the big picture?

Here again is where your mastery of tools such as MS Project and the Gantt chart view of the product road map are exceedingly important. If you are working for a MidWestern company, rather than say, a start-up, you can’t ignore traditional budget and resource management constraints. As a start-up in growth mode, your focus is getting your product out the door with the resources you have or your resources plus the on boarding of additional resources. In a MidWestern company, you are most likely trying to maximize the resources you have or being asked to reduce your head count while still meeting project expectations. Thus, prioritizing features to be delivered against a shrinking resource pool is a given. You need something beyond the agile sprints/releases under way to manage project stakeholder expectations on what can be accomplished when.

The Gantt view of the work allows for a graphical view of “if this is more important, what else is impacted” realities. Additionally, add in the need to manage a fixed pool of resources across multiple agile projects and you absolutely have to have some way to represent a view of the prioritized work across all resources. In addition, you may need additional tools to help represent the “what if our team member Sally gets assigned to the VP’s ‘special project’, what does that do to our resource model and what can get done when?”

Conclusion

As an IT manager or IT project lead in a MidWestern company that is moving towards more agile project management and technology delivery, you may be tempted to relax the project management disciplines that come with the more traditional waterfall approach, specifically tracking project schedules in a Gantt chart. In order to avoid the inevitable product stakeholder expectation mismatches as well as pending budget cutbacks and/or uncontrollable resource re-allocations, keep collecting that “program management” data. Continue to have re-occurring meetings to review the “big picture” Gantt chart view of the work and use other tools to reflect “what if” scenarios and their impact on the big picture.

  • Share/Bookmark
, , , , , ,
IT Role Spectrum

IT Role Spectrum

Someone noticed, when reviewing my work experience on LinkedIn, that over my tenure, I’ve had the opportunity to manage both IT infrastructure teams and IT software development teams.  They posed the question of what are the differences between managing the two different teams.  This question got me thinking.  People that focus on infrastructure compared to software development do represent potentially opposite sides of the IT engineering spectrum.  Further more, I believe there is a middle of that spectrum. There is a role for individuals that integrate disparate vendor software products on top of infrastructure to create a technical service provided back to the organization.  I am not sure there is a universal name for this functional team of individuals, but I’ve heard them referred to as integration engineers.  I have also had the opportunity to manage an integration engineering focused team as well.

Note: Check out Part 1 for an excellent interview with Jim Shelton, Executive Recruiter; Information Technology for MRI North Canton to get his perspective on the differences he sees in MidWest IT managers looking to hire infrastructure versus software development resources.

“IT Role Spectrum” or Differences between the Three Engineering Teams

The most striking differentiation between the three teams is the reliance on vendor technology versus custom built technology.  At one end of the spectrum is the infrastructure team which is 100% reliant on vendor technology.  I can’t imagine any MidWestern company in the present that is ordering individual PC components and assembling their own PCs or servers.  Even when I was first introduced to corporate IT infrastructure back in the very early 1990s, companies were buying complete PC and server solutions from vendors, not building their own.  At the complete other end of the spectrum is the software development team that will use a programming language that may involve some separately licensed third party components, but primarily is completely custom building technology with every detail of what is being built known to the team.  Even software development third party components are designed to automate some aspect of the software development process that every piece of software needs, such as displaying information in a table or rendering an image.  Since the components are destined for a team that demands customization and flexibility, the components by design are extremely flexible in nature with significant transparency on what functions they perform so the development team still is in complete control of the technology.

Thus you have what I am calling the “IT Role Spectrum”:

blog - IT Role SpectrumAs you slide from the left to the right, your hardware focus shifts to a software focus and your vendor management/dependency goes from exceedingly high on the left to practically non-existent on the right.  Thus, as an example, integration teams need a bit of knowledge and experience from both sides of the spectrum.

Managing Different IT Engineering Teams

Now, finally on to answering the original question of what are the differences in managing these teams?  Let’s start from the left side of the spectrum:

Infrastructure Team Management

It has been awhile for me, but thinking back, the first thing that stands out is the likelihood that your team is made up of more junior level folks.  Individuals that are starting out in their career based on tinkering at home with computers and networks and Internet connectivity, finding it interesting, and getting into the work force motivated by those interests.  Or, if not their first IT job, possibly their second coming into an infrastructure team from a company help or service desk function.  These individuals are that guy or gal that builds up their skill set providing technical assistance over the phone and wants to keep learning by becoming more hands on.  Depending on the size of the organization, these may be formal cross department job transitions or a job change within an existing team.  I am certain there are probably other motivations for individuals to want to get more hands on with technology, but the theme I recall is a tendency for aspiring IT engineers to want to continue to get more hands on with technology.  Similarly, with low barriers to entry comes propensity to join, reach a learning plateau and then move into another role outside the team.  Thus, turnover is a challenge for an infrastructure manager.

This tendency for more junior resources puts an additional burden on a manager.  As a manager, you have probably been exposed to a number of business-isms that dictate patterns of service behavior.  Examples such as the larger the office, the higher priority that should be applied to corresponding requests.  Priority is kicked up another notch if the office has a door, or a couch, etc.  Administrative assistants need additional priority above and beyond the “a level 4 ticket is a 2 day response and 5 day resolution SLA” standard.  Additionally, certain individuals, regardless of rank or file, require a higher level of service because they have direct lines of communication to important people or your management.  Thus, these people need high touch service even though the rules and SLAs don’t indicate that they should.  Inquisitive junior resources need extra coaching from their manager to help put these business-isms into a context they can understand.

Additionally, infrastructure as a whole is constantly been squeezed for cost efficiencies.  Infrastructure teams aren’t growing in size and service catalog in proportion to other areas of IT.  Thus, more coaching and context setting for junior resources is needed to explain why the workload is increasing and yet the staffing support is not.  Plus, infrastructure is ever increasingly viewed as the same as turning on a light switch.  It is just expected to work.  Corporate email systems are the perfect example of this.  I bet if you get a hold of your contingency planning or disaster recovery strategy documentation, email is listed as not a mission critical service to restore.  Customer systems come before most corporate systems.  But anyone with infrastructure experience knows that massive panic and dooms day scenarios erupt when corporate email is offline for even a few minutes.  Infrastructure is just expected to work all the time without fail.

This pressure to have constant 38 nines uptime for infrastructure services makes it challenging for a manager of an infrastructure team.  The biggest hurdle I see for new managers is to choose between empowering team members to do the work or take on the most critical changes and service outages yourself.  The later seems like the easiest.  Based on your wealth of experience compared to your team members, just roll up your own sleeves and take over the hard stuff.  That way, you can avoid the disaster that is the failed infrastructure service or maintenance change that results in blowing up something senior management can’t live without, even for two seconds.  Sure, it seems risky to delegate to a more junior team member to implement that patch or update, thus just do it yourself and you know it will get done right.  But is this really the best approach?  [Look forward to more on this topic in Part 3 of this series]

Infrastructure Management Summary

  • Junior resources = more management coaching/mentoring involvement
  • Cost reductions = continually pressuring staff to do more with less and justify requests with data (ROI, etc.)
  • Focus on up-time = little room for error, thus need to balance do it yourself with staff empowerment

Back to answering the original question of what are the differences in managing these teams?  Let’s go to the right side of the spectrum:

Development Team Management

If one could imagine an IT team that is a juxtaposition of an infrastructure team it would be a development team.  Instead of a heavy reliance on vendor products, you have a heavy reliance on internal knowledge.  Instead of having to build up a knowledge base based on usage and vendor interaction (infrastructure), you have the knowledge built up from the development team along with the software and applications as they are being constructed.  Instead of having to reverse engineer how the user base is interacting with the technology, you have some level of uses cases that were part of the design effort to build the applications and software so the user base can actually use it.  Instead of “I don’t know, let me open a ticket with the vendor”, you have “I don’t know, let me look at the source code”.  Instead of “we can’t do that until the vendor provides the next version next year”, you have “we can do that, should we fit that into the current development effort as a requirement?”  Hopefully you are getting the picture of the differences in approach due to the total reliance and total lack of reliance on third party and/or vendor components within the technology between the infrastructure and development teams.

Thus, one of the first challenges you have is to manage the scope of work requests.  Since you have no perceived vendor or external limitations, given enough time, your resources can develop anything.  Thus, in managing a development team, you have to have some methodology to blend requirements, resources and time.  Thus, you also have to mentor and coach your team to work within these parameters.  If not, you may have a bunch of “hey, we can do that” adding up to over promising features that can’t be delivered within the time frame needed.

Another challenge is leveraging some mechanism or methodology to assist in prioritizing development requests.  If business product owners have a direct line of communication to a development resource or team, they will most likely drive the prioritization.  Thus, as a manager, you need to constantly coach your team to redirect requests back through some sort of prioritization process to ensure appropriate visibility.  I’ll cover more on this concept in a future article, but lack of attention in this area will lead to problems in over architect-ed solutions as well as minimalistic point solutions that don’t scale to handle minor tweaks in the supported business process.  All of these combine to frustrate your team since they aren’t seeing their work being received well by their end users.

A third is constantly looking for ways to get your staff to share what they are working on and how others can avoid reinventing the proverbial wheel by developing a solution to a need that has already been developed by another individual.  Thus, a manager is challenged to constantly look for ways to get team members to collaborate and share what they are working on, etc.  At the same time, balancing the value each individual contributor makes with their personal goals and professional aspirations.  Finding a balance increases efficiency both in development and testing.  It also reduces maintenance costs by not having to maintain fifteen different ways to do the same business function.  Lastly, reaching that balance finds your team members more engaged and more positive about their overall work.

Development Management Summary

  • Creative resources = need to be coached to drive all feature/requirement requests through the project methodology in order to avoid over promising
  • Resources working on correct work = resources need to be coached to only work on feature/requirements that come out of a formal project or prioritization process
  • Resources need to collaborate yet be recognized for individual achievements = need to manage resources to share what they are working on and use common solutions to problems rather than invent your own and at the same time, balance their individual achievements against the combined achievements of the team

Back to answering the original question of what are the differences in managing these teams?  Let’s go to the middle of the spectrum:

Integration Team Management

In MidWestern companies with considerable vendor product deployments, there are teams that are not 100% infrastructure focused and not 100% pure software development focused which lands them somewhere in-between the two teams above.  I’ve labeled this middle as “integration teams.”  In managing these teams, a manager has to juggle the same challenges as both a development and infrastructure manager.

You may find yourself managing junior resources and thus have to invest time and energy in coaching and mentoring them on business-ism as well as drive junior team members to document more what they are doing as well as follow instructions from senior members in order to achieve consistency.  Having “Bob” be the only one on the team that can install product X on a particular operating system is not scale-able.  At  the same time, having “Bob”, “Sally”, and “Joe” each install the same product on the same operation system three completely different ways makes for a propensity for defects or issues as well as a troubleshooting nightmare in the future when “Bob” needs to solve a problem on a system “Sally” originally installed.  At the same time, a manager needs to divvy up the work so that junior resources get some challenging work rather than it all go to the senior members.  Throw in deadlines and the risk of a junior resource “learning on the job” and you have quite a balancing act going on all the time.

You also have to manage requirements and feature requests with a similar level of vigor as in software development and keep your resources all on the same page with these requests.  Sure,  the vendor may have a feature called “auto-enables the coffee machine to start brewing when the first person comes into the office” but until the product is installed in your company’s environment and the feature is turned on a tested, there is no guarantee it is going to work as all stakeholders think it should work.  Thus, a manager has to coach team members to be cautious about promising features without the appropriate caveats of testing prior, supportability, etc.

Another challenge is in managing creative team members.  Similar to software developers, if a vendor feature doesn’t quite work as desired, an energetic resource might break out the vendors API* and start developing the desired functionality.  Once promised and or deployed, now one has to maintain that customization through patches, fixes and version upgrades.  What seemed like a great benefit to the team member has become a cost and maintenance nightmare.  Thus, appropriately coaching resources to avoid making customization commitments without your full support is critical.

Integration Management Summary

  • Junior resources = more management coaching/mentoring involvement, focus on consistency across multiple resources yet keep challenging each resource safely to keep all engaged
  • Creative resources = need to be reminded to drive all feature/requirement requests through the project methodology in order to avoid over promising as well as include testing/verification of all features
  • Resources working on correct work = resources need to be coached to only work on “approved” work in order to avoid driving up costs with maintaining custom enhancements

Hopefully, after reading this article, you have a greater appreciation for management nuances between the three teams I’ve presented along the “IT Role Spectrum”.  Building on the points present in this article, part 3 in the series will offer some helpful tips aligned with each team’s unique management challenges.  Look for part 3 to be available soon.

*API = An Application Programming Interface (API) is an interface implemented by a software program to enable its interaction with other software. It is similar to the way the user interface facilitates interaction between humans and computers.

  • Share/Bookmark
, , , , , , , , ,
Over Architected?

Over Architected?

First off, I am by no means an “Agile” (nor even “agile” with a small “a”) software development expert.  There are many more individuals out there that are way more experienced and in a much better position to speak authoritatively about the Agile methodology and its associated principles on driving efficient and effective software development.  A few blogs where I consistently find great Agile perspectives are included at the end of this article.  But as I’ve participated in Agile and agile-like development efforts over the years, I’m finding an interesting pattern.  Agile and agile-like approaches have a positive by product of reducing the occurrence of over architect-ed software solutions. Over architect-ed solutions put stress on the delivery of a software application project as well as drive up the cost of software development and maintenance, in general, disproportionately to the business value produced.

As an example, a sample development effort starts out with:

Product: “We need a super widget in the product by next release, can we have that?”

Project: “We are going to need detailed requirements for the super widget in order to start developing it.”

Product: “Oh, it needs to be able to interface with the dry cleaners to know when it is time to pick up the laundry as well as make coffee for the customer before they get out of bed in the morning.  Basically the same features as our competitor’s recent release, but with these additional benefits. <Or some other description that is actionable at a high level, but lacks the detailed requirements needed to feed a development team with actionable development tasks>”

Development: “Ok, we’ll get started since we don’t have much time before the code freeze for the next release.”

… Time goes by …

A project status meeting occurs sometime in the future.

Product: “So, where are we with that super widget?”

Development: “We have the basic framework setup but it isn’t going to have all the features working by the next release.”

Product: “But I thought …”

Development: “But you said …”

Project: “What happened?  How come we are X days from the code freeze and we don’t have a viable solution?  I thought …”

Now sure, this isn’t the most perfect example of capturing how the requirements drift between stakeholders leads into an over architect-ed solution, but hopefully you get the scenario.  Or possibly another example would be when a solution is developed and released into the production environment.  Extending the example above, weeks later, when enhancements, tweaks or feature extensions are requested, a tense conversation occurs around:

Product: “But I thought the super widget would do X?  How come I am hearing it will take 30 hours of development to get X?  The testing cycle is already elongated due to the complexity of the super widget thus I thought it included X?”

Development: “But we said that the framework would support X, but we never said X would actually function without more development!  We developed the super widget to do W, Y and Z but only stubbed out X.”

Project: “But according to the requirements, it says X should be …”

And yes, an argument can be made that if:

  • more effective requirements gathering occurred
  • more effective project management captures more depth of what would be developed and available when
  • more effective product management defines a more exhaustive product feature road map that more clearly outlines what would be available and not available when, feature-wise

… These problems wouldn’t have occurred.  But the nature of an agile-like approach puts a tighter focus on all the stakeholders:

Product: They can share the “overall vision” of what they ultimately desire the product to do, but they are forced to consider what they really need within the shorter duration of the agile-like release schedule.  Thus, product walks away with a clearer picture of what they are really getting in the next release.

Development: They get the benefit of the product’s “overall vision”, yet, they get to quickly dive into the critical features and start the dialog of how long different feature components will take to develop.  Thus, development knows exactly what they need to do now for the next release, yet they benefit from knowing where this product feature is going in the future.

Project: As long as they keep the product and development stakeholders talking about granularly defining what needs to really be built by when, the project management function has much greater clarity into what is going on and what details to track.

From what I am observing, all of the above create a stakeholder forum of information sharing that reduces the likelihood that an over architect-ed application will get developed. Most importantly, instead of leaving the feature set open and vague enough to allow a creative and motivated development team to start building and building and building only to re-surface with a highly complex solution to a loosely defined problem or need, it brings more cohesion between what is really needed first.  Once the “first” has been built, the “seconds” and “thirds” get built inline with the product roadmap.

In researching this theory, I wasn’t able to find any articles that linked agile-like development efforts to a direct reduction in software over architect-ing.  This article entitled “Agile Architecture: Strategies for Scaling Agile Development” had some interesting content on baking architecture into an agile-like effort.

Anyone else have any direct experience in agile-like compared to waterfall-like development efforts yielding less application over architecture?  Can anyone share any links to good web articles on this topic?

Agile related blogs I follow:

David’s Software Development Survival Guide

http://softwaresurvival.blogspot.com/

NOOP.NL

http://www.noop.nl/

Software Project Management

http://blog.brodzinski.com/

fragile

http://fragile.org.uk/

Regular Geek

http://regulargeek.com/

Critical Results

http://criticalresults.com/

  • Share/Bookmark
, , , , , ,