Secrets of Modern IT Management

As technologies and methodologies have advanced, a lot of things have changed. So it’s natural that in the revolution of new processes and methodologies in the IT industry, also leadership and management models must be developed in order to be able to meet new challenges. I will briefly discuss about probably two best-known methodologies, ITSM/ITIL® and DevOps, and also correct some misunderstandings.

“Choose your side: ITSM/ITIL or DevOps?”

Headlines like that seem to become more and more common in today’s IT Industry, where organizations are struggling with ever-growing demands; Just On Time –deliveries, resourcing, predicting the future & markets, social media’s opinions, end-user requirements, and of course the need for profitable business.. And then a faceless consultant steps onboard and promises to solve all the problems with yet another “-ism”. While some time ago the “ism” was ITIL, nowadays it’s often DevOps with a touch of some other Agile –derivated method like Kanban or V-model.

Now, who do you believe? Does a highly structured methodology like ITSM/ITIL solve your problems or is it DevOps that releases your internal beast and assures your products and services are top-notch quality?

While some time ago the “ism” was ITIL, nowadays it’s often DevOps with a touch of some other Agile –derivated method like Kanban or V-model.

Correcting common ITIL and DevOps –related Misconceptions

In my latest blog text I wrote about common Misconceptions people have about Cloud Services, so I can continue writing about misconceptions, this time about the ITIL vs. DevOps –combat.. ..which really should not exist in the first place.

ITIL is set of guidelines, the best practices. It’s highly process-oriented approach on organizing the IT Services, including life cycle phases from Service Strategy to Continual Service Improvement. ITIL has somewhat gained reputation as a bureaucratic giant with enormous requirements for documentation while every function should have a lot of resources available for 24/7.

Partly the reputation is deserved, but largely it’s also about misunderstanding the paradigm: ITIL is about a set of guidelines. It’s like a toolbox where you choose the best and most suitable practices – not the whole nine yards. You don’t need to implement all the aspects of ITIL available in order to call your Services “being aligned” with ITIL.

On the other hand, whereas ITIL is missing the essential software development methodologies, DevOps comes in.

DevOps concentrates in software development and delivery process emphasizing on filling the silos between the development and operational phase.

DevOps emphasizes modern sw developmental actions such as continuous integration, testing, deployment and in a way blows new spirit to the old’n’ good sw development industry. DevOps introduces a new kind of culture where the need for collaboration and teamwork is highly appreciated. At the same time DevOps requires a bit different approach to leadership.

I’ve already written about the loopholes and demerits of DevOps here, so I won’t repeat myself.

So, what’s it gonna be: ITSM/ITIL or DevOps?

In case you didn’t quite get it, there is no idea in putting these two against each other, because for the most part they are solving different issues!

I suggest taking the best from the two approaches. ITIL is still today – by far – the best set of guidelines for running the IT operations, but I can recommend DevOps especially from the SW development point of view without forgetting DevOps’ main idea of covering the silos between the development and operations’ phases.

I suggest taking the best from the two approaches.

Attention! Lead your troops General!

How should DevOps –team’s management be organized? Some people say employees shouldn’t be controlled in any way but they should be given a 100% freedom to do their job, while others are on the opinion that the working hours shall be measured and more or less control is needed in order to get the results.

While there are a number of great posts written about managing a DevOps “teams”, for example here and here, there’s remarkably less articles addressing the challenge of leadership, leading the people in the holistic perspective.

 

The majority of executives today probably share the opinion, that when it comes to leading a specialist organization in the IT industry, a traditional  line-organizational management model is dead, because it doesn’t provide adequate set of tools to support leadership in modern IT environment. Those modern, self-guided teams are on the other hand eagerly saying they don’t need to be managed. Don’t listen to them, they don’t know what they are saying!

More than ever, in the era of Agile SW development there’s a pressing need for (good) leadership! A distinguished DevOps team can be working effectively without any outside guidance as long as someone is paying their salaries and bonuses. But bear in mind that a hundred sprints with huge amount of new features in the software don’t necessarily provide anything useful.

Those modern, self-guided teams are on the other hand eagerly saying they don’t need to be managed. Don’t listen to them, they don’t know what they are saying!

Leading and orchestrating the big picture of SW development is crucial for organization’s success. Can you cut it or is your organization going downfall?

1st level issues

To be able to even remotely manage your Orchestra, the following essential 1st level issues must be addressed:

  • What’s in the pipeline (or backlog if you wish)?
  • What’s currently under development?
  • Will the upcoming new features correspond the requirements agreed on with a customer (no matter internal or external customer)?
  • Do the outcomes of your SW development (both released and those still in the backlog or under development) match the organization’s strategic goals? (Assuming there ARE strategic goals defined, of course!)

Now that your things are basically going as planned, you can move on to the next level in management issues. Even though they are 2nd level issues, they are very important. Ignore the possible problems on level 2 and they will become 1st level problems in a way or another.

Ignore the possible problems on level 2 and they will become 1st level problems in a way or another.

2nd level issues

  • Outside the clear SW development issues you have of course other issues to be taken care of, i.e.
    • Resourcing
      • Are you certain people are in their appropriate positions? Need to make any changes?
    •  Sales
      • Are your sales personnel getting deals closed – short or longer term?
    • Hr
      • What’s the rotation speed of your personnel in your organization? Is there constantly coming new people in while those who have stayed longer are leaving? Should you do something about it and if not, why not?
      • Benefits and salaries: are you competitive against your fellow competitors?
    • Business
      • Is your business profitable or are you creating loss?
    • Customer satisfaction
      • Do your customers keep coming back to you or are they changing the supplier?
    • Legal issues
      • Are your legal & compliance issues in order?

The list goes on and on, but the message is clear: leave 2nd and lower levels unnoticed and they will eventually become 1st level problems.

Things listed above are only the tip of an iceberg, but I wanted to shake the buzzed thoughts that a modern SW Development running Agile methods only needs very little management if at all. That’s one of the risks in a well-welded DevOps team; it becomes too self-assertive and slowly ceases to consider the surrounding reality.

More than ever, there’s need for brilliant leadership and management! If someone is challenging my thesis about this, I’ll be glad to participate in the debate.

 

Pictures are from Pixabay.

ITIL® is a Registered Trade Mark of AXELOS Limited.

License Management – trick or treat?

Sailing through the murky waters of License Management can be frustrating. I’ll share some ideas and pitfalls I’ve gone through with the topic in question, and I’ll make one suggestion which would help people dealing with License Management issues.

That was then…

Once upon a time there was a customer who needed certain software to run his/her business. Back in time everything was relatively easy: customer bought a software (application), which was delivered on a media like 5.25” or 3.5” floppy disk. Customer used the software as long as it was needed and later on bought perhaps a new application.

In case there was no proper software available, customer most probably contacted a software company to help specify the requirements and develop the software in question.

Plain and simple, neat and tidy. Development of hardware was so rapid that one didn’t usually reach a new version of the software until his/her workstation was already outdated.

floppy-disk-214975_640At that time, if there was need to run the software on more than one workstation either you bought another piece of the same software or (probably) violated copyrights by installing the software into a new workstation. But who was ever going to know about that, as your workstations were not networked?

Somebody then came with the idea of licensing: why to demand customers buy yet another copy of the same software, when you could just sell a ”licence” (for example a string of letters and numbers) and grant customer install the software to n pcs of different workstations?

Around the same time more and more workstations joined the network called the Internet and the first concurrent user licenses appeared to the market.

…this is now!

Nowadays it’s a jungle out there! As long as you have a small business with <5 workstations and less than 10 applications you’re doing OK. But once you run even a little bit bigger business – not to mention global scale enterprises, it’s a whole different story.

Let’s dig a little bit deeper into the world of licenses.

Licensing models

Let’s assume you are a CIO in a global scale company and it’s in your best interests to grab the best license agreement with your software vendor(s).

  • ”What should I do?”, you may ask.

Well, I have a rock solid answer that usually works: go to the basics. You should first define and specify certain basic information about the usage of the software you’re about to buy licenses for. Start with i.e. something like that:

  • amount of total users
  • amount of concurrent users
  • geographical locations of your users
  • number of servers
  • number of processors in servers running the software
  • number of cores in processors in servers running the software
  • pretty much anything, all the available information!

 processor-583695_640

Number of total users is often used as a pricing basis, but there may be other situation factors as well.

Concurrent user licenses

You have operations, say, in Australia, Poland and Argentina. Your total number of users for this particular software is 9000 users. But the user base is split between the three office sites in different countries, different continents. In this case you should find out if you could agree on paying only for the concurrent users and actually save money by buying software license for 3000 concurrent users instead of 9000 total users.

Concurrent user licensing is relatively fair model of pricing the licenses. The downside is it often requires almost continuous network access. Normally it’s not a problem, but in certain field services –based work it can still be an issue today. The licensing service, which lies on a license server pings workstations at certain intervals to make sure there’s a license in place. It releases unused licenses from workstations and reserves licenses to workstations whenever needed. If you run out of licenses, you usually have to wait until someone stops using the software and the license is released into the license pool. Or you go out to buy some more concurrent user licenses.

Other licensing models

There’s a number of software where licencing costs are calculated regarding the environment they run. In other words you may need to report very detailed-level information describing your data center: number of servers (installed/using the software in question), number of processors (in the server that is running the software in question) and the number of processor cores (in the processors residing in your servers that have the software installed or are using it).

Now, I’m not going to go further into the world of different licencing models. But I want to make a question:

Why has license management been made so god damn difficult!?

It’s everything but straightforward to manage your licences. Buying can be relatively easy, if you have very deep pockets and you are willing to throw your money away. But buying just the licenses you need, for the time-period needed, and the correct amount of ’em.. you name it. It’s like a jungle out there.

 3rd parties showing up

There are companies performing license auditing in favor of the IPR owning companies. For example Microsoft performs – or their license auditing partner company does the job – a so-called ”true-up” auditing for an organization and then they report to Microsoft about the situation, and MS then tells the amount of needed new licences. In the world of volume licensing, true-up –stylish approach is quite good because the idea is that software can be installed wild and free, and then the auditing is conducted once a year to calculate the number of required new licenses. So one doesn’t necessarily need to purchase new licenses at the same time when installing new software, but accounts are being balanced annually.

 Sniffing through the environment

The auditing itself usually consists of investigating the environment. Normally the party that performs the check-up asks for certain figures (numbers of workstations, servers, cores etc.) and they often come up with a small software that sniffs through the agreed networks and creates a report regarding all the foundings (for example, databases).

Quite often the license auditing ends up with the software company presenting a bill to the customer and the customer usually doesn’t have any other choice but to pay the price, whatever it is.

Every license has its price tag

There is basically nothing wrong with this: if you want to use licensed software, you ought to pay for it. But..

..what bugs me in this scenario is the fact that customer pretty seldom has any real possibilities to question the calculations regarding the price tag. Unless customer happens to be one of the Fortune 500 companies or similar size, they don’t have a department filled with software license architects and lawyers.

Customer pretty seldom has any real possibilities to question the calculations regarding the price tag

So the set-up is often like a David and Goliath where David in fact has nothing to fight with. I’m not saying there shouldn’t be a price to be paid if you use licensed software, but the customer lacks the possibility to really check the calculations in many cases.

In addition to that, there are certain loopholes that make it possible to save some money in software licenses. For example, if a customer can prove that usage for certain software is intended to be only temporary, a very short time, or usage of the software differs somehow greatly from regular usage of the software, there might be a possibility to negotiate lower price for licenses under such use cases. However, there’s again need for department of software license architects and lawyers.

In my opinion, the ICT sector is clearly in need of actors working in favor of a customer! There should be consulting companies who take role for the customer regarding licences. These companies could provide end-to-end service for customer companies, all the way from designing and specifying the need for licenses (by evaluating the required platform solutions), then they could play the center role in purchasing required licenses, and yet they could be analysing and evaluating license auditing in favor of customer companies.

The ICT sector is clearly in need of actors working in favor of a customer

For sure, that wouldn’t be cheap. But then again, it’s very easy to waste money by buying i.e. enterprise licenses instead of standard licenses or too much licences ”just in case” etc.

If there were such actors, I’d definitely recommend using their services!

Yadda yadda

This must be – by far – the most hazy, fuzzy, unclear, inconsistent and frustrating blog text I’ve ever written. Partly because the License Management is very treacherous area and partly because I might have tried to swallow and elephant on one bite. I believe I’ll get back to this topic in the future with more specific approach to a limited section of world of License Management.

Pictures are from Pixabay.

DevOps – what and why?

Let’s talk about software and service design, development/engineering and maintaining.

Traditionally, software development has meant a team who first designs the software, then they give the specification to another team who does the hands-on programming and testing the software. These phases have been thought of being the ”project” state and the project manager has been doing his/her job using a waterfall project management approach: design – develop – release.

After releasing the software there’s usually been a supply team who takes care of the software and pretty much makes use of ITIL®’s Service Operations best practices. It’s also notable that the past waterfall-styled projects have often been pretty big in terms of the project scope.

Think about this: Wouldn’t it be good if your product or service would be developed in a controlled way, piece by piece and you could be certain your production and development do the things together, hand in hand?

Silos

Traditional moffice-875695_640odel of software project development has been widely critized for causing silos. Silos are the infamous grey area where responsibilities are unclear, often ending up in the situation where somebody didn’t do anything, because he/she/they thought that someone else did something and finally nobody did nothing.

In practice this means that a) when the Design team has finished the specifications, they don’t care about helping developers get into the speed, but they just hand out the specs pages and think their job is done. Then b) developers do the programming according to the specs and c) throw the release to the services team for support & maintenance. And then after a while there will be a new version ready for release and to be maintained.

Silos are the infamous grey area where responsibilities are unclear, often ending up in the situation where somebody didn’t do anything, because he/she/they thought that someone else did something and finally nobody did nothing.

Problems with silos

What if the specs are somehow inadequate? Coders code and the result is something else than it should have been? What if the production environment where the software is supposed to be run and maintained differs greatly from the test environment where the product was developed? Whose responsibility is to make sure these kind of issues won’t get in the way?

ITIL has addressed this dilemma at least a little bit. There are notions that Service Operations should be involved early in the process. For example in ITIL’s Service Transition life cycle, in transition planning and support there’s a question if the plans have been agreed and authorized by all relevant parties (customers, users, operations, and support staff)? The idea is clearly to get all the relevant parties – including naturally Service Operations people – involved early enough in the new/changing services.

But according to my experience ITIL doesn’t cover all the possible silos there are. I was once discussing with a Canadian guy who was the responsible for the project management department  in a big German-based transportation & logistics company and he told me he hates ITIL because in his opinion ITIL didn’t do anything good but was cannibalising the software projects.

I believe that’s true up to some point. Even though ITIL is not a project management method, it lacks a credible way of linking the project management and service management.

He told me he hates ITIL because in his opinion ITIL didn’t do anything good but was cannibalising the software projects.

And that’s what the DevOps is bringing on: better co-operation between the different parties involved!

Definitions of DevOps

There are probably as many definitions about DevOps as there are organisations involved with it. But the following AgileAdmin’s definition of DevOps is the best I’ve seen: ”DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support.”

To simply put, the idea is to enforce and empower co-operation and participation between the different parties.

The IT industry is evolving and changing rapidly. There’s an ever-growing need to improve products’ time-to-market, so there’s no space for silo-focused thinking any longer. Designing, developing, operations and retiring the product must happen as quickly and smoothly as possible. That’s where DevOps enters into the game.

There’s an ever-growing need to improve products’ time-to-market, so there’s no space for silo-focused thinking any longer.

It’s also worth noticing, that there’s a big difference between the Agile methods and more traditional project management methods. In the Agile world the idea is to build the product or service piece by piece, little by little. When following the Agile method it’s not clearly known what the final product or service will be or how it will look. Development is done in small steps and there won’t be too many new features implemented at the same time. Developmental phases, so-called “sprints” are usually measured by days and in some cases even in hours.

In the more traditional software development there’s usually a fixed specification which describes how the product or service will look like when finished. There’s usually a somewhat-fixed budget to cover all the expenses of the project. The project itself can be gigantic and the time frame can be anything from months to years.

Responsibilities in DevOps

Let’s face it: in the old world there was a number of people supporting and maintaining the systems. In the new DevOps world there’s no need for so many pairs of hands, because the idea is to automate processes as much as possible. DevOps should steer the operations of products and services to the new normal were the manual routine work is no longer needed in a large scale.

There are also many things in development phase that have been previously made manually and will be automatised. Theagileadmin.com says the following: ”In the DevOps world there’s been an explosion of tools in release (jenkins, travis, teamcity), configuration management (puppet, chef, ansible, cfengine), orchestration (zookeeper, noah, mesos), monitoring, virtualization and containerization (AWS, OpenStack, vagrant, docker) and many more. While, as with Agile, it’s incorrect to say a tool is “a DevOps tool” in the sense that it will magically bring you DevOps, there are certainly specific tools being developed with the express goal of facilitating the above principles, methods, and practices, and a holistic understanding of DevOps should incorporate this layer.”

So DevOps combines a number of different tools under the DevOps umbrella.

In my opinion it’s absolutely great that many boring prone-to-error routine-tasks will be handled automatically by a bunch of tools. But it would be a lie to claim there wouldn’t be any impact on the number of personnel involved in the developing phase. Of course it does! There will be less demand for i.e. people doing module- and performance testing, (manual) configuration management and so on. Many things like application performance monitoring and continuous integration have been automated to a greater extent etc.

I have pretty often come across a claim that ”now they (developers and operations people) have more time to focus on developing and continual improvement activities”. While this is of course true to some people, there are and will be people who simply don’t have any meaningful tasks to do any more. That’s the way it goes.

In my opinion it’s absolutely great that many boring prone-to-error routine-tasks will be handled automatically by a bunch of tools. But it would be a lie to claim there wouldn’t be any impact on the number of personnel involved in the developing phase.

Then there are also (bad) examples on how Dev(elopers) have been forced to take over the responsibilities of Op(eration)s people. That leads to a bad situation. Mr. Jeff Knupp has addressed this problematic in his writing very clearly.

He discusses about the Totem Pole and he expresses an idea that there’s a hierarchy of usefulness of technology roles in an organization and that Developer is at the top, followed by sysadmin and DBA. QA teams, “operations” people, release coordinators and the like are at the bottom of the totem pole. He states that each role can do the job of all roles below it if necessary.”

Forcing developers do all kinds of tasks leads to the situation where developers get frustrated and they cannot show or use their best abilities. So even though I completely understand that in a startup company people end up doing almost everything, I totally agree with Jeff Knupp that not every company is a start-up and that whenever possible “let developers write code!”.

office-875693_640

 

I personally really, truly like the idea to bring people to work closer together. It surely helps tackling silos away, improves transparency and most probably shortens development-cycles and thus shortens time-to-market of a product or service. I believe in DevOps in that sense and I’m sure when correctly utilized, DevOps can keep its promise.

 

But then again, if you think of introducing DevOps in your organization because of cost optimization, be sure not make the mistakes Jeff Knupp addressed.

 

Pictures are from Pixabay.

ITIL® is a Registered Trade Mark of AXELOS Limited.