Archive for April, 2015


During his tenure in management, every manager has to understand that delegation of responsibilities plays extremely important role in everyday business. Because a lot of managers arise from other professionals, delegation is one of problems they do not address well often. From my experience, the top indicator that there is some problem is if manager is “tired”. Generally, that tiredness is created not by managerial duties, but by a feeling that “I can do something better than my team” and then you have manager becoming a resource.

Manager has to trust his people. When you hire professionals you have to pick people that are professionally trustable and accountable. More senior position is, more you have to be able to trust them. When you delegate some responsibility, you will create a feeling of ownership which creates much better performance and leaves you more time for other managerial duties. If you have to check everything and approve everything it shows: 1. you are not able to hire people properly, 2. you are not well organizing your team, and in the end: 3. you are reducing productivity and output of the team you manage.

If I delegate everything, what should I do?”. This is very often remark that shows other problems. As I already wrote: you have to manage resources, not to be one. When manager is not properly delegating execution of some tasks to his team, he sacrifices some items that should be in the top of his list and that are: creation of strategy, creation of vision, evaluation of previous performance and creating an environment “to make it better next time”. If you have team members coming to you asking how to do something or/and what to choose for every detail, you can know that you broke the system. Team should be able to function without you making decisions for every detail. You will find companies with a lot of senior professionals without any trust to make any decision. That means that: 1. you are overpaying your people or more common: 2. you are not delegating responsibilities enough.

It is never too often to repeat that the top position in the list of duties for every manager is “increase of productivity”. Anything you do has to be oriented towards that and all optimizations of the procedure, changes, hiring and selection of technology has to be in the direction of increasing, communicating and maintaining of productivity:

  1. education of team members – creates people that are solving problems quicker and with more quality
  2. motivation of team members – increases their performance and ideas
  3. promotion of diversity of opinions – creates a much wider “knowledge bag” that will offer more diverse solutions to problems and requirement
  4. creation of feeling that everyone has an important position and role in the team – increases performance
  5. creation of feeling of responsibility – team members will start to fight for tasks they are assigned to, not to be passive and inert

Conclusion. I know it is hard, but you have to see that top managers in the market spend a lot of time in creation of positive thinking, innovative culture and most important: they have people they can trust. Managers generally have really untied hands to do a lot of conventional and unconventional things for the benefit of the company so do not waste that trust from the owner and use that to create a difference.

Every manager tends to create more stable and more “quieter” environment for working. Outcome of that is elimination of all people thinking “progressive”, “different” and introduction of beautiful peaceful environment everyone would wish for. So what is the problem? The only problem is that that system is planned failure in long-term both for that manager and even more for the company.

Positive behavior. More senior manager you are, more you have to understand that you are here to introduce and promote positive behavior in all groups you manage. You cannot do micromanagement because it shows to your managers that you are not trusting them and also elevates the stress among non-managers. Also, you are responsible for the procedure and for organizing and by micromanaging you are giving a direct admission that you failed in that chapter. Ok. You have great managers under you, you have process and one day they discover that you have more and more yes-tellers around you. That only means you are sensitive and you positively react to all people agreeing with you in everything. Soon, you have “your people” against “other people”. Even people who do not agree with you will start to agree of risk to be out of deciding group and definitely out of list for promotions.

Pollution. Even in the most situations it is not intention, but when you start “game of thrones” everyone is loosing:

  1. your players because everyone start thinking that they value is based only on you. Every decision or statement they say is accepted as your and they start to be frustrated,
  2. opposition players because they become demotivated and inert with no contribution to the joint cause,
  3. you because you are spending more and more time to fix dramas and not do business. Later you start to have more and more issues with your superiors or with owners if you are senior manager and
  4. in the end company because you created a chaos that is doing everything opposite from your goals: decrease of productivity, decision instability, lack of trust, increased employees turnover, etc.

In the end: if you are not able to move back to the track you will bring business to the point that everything will stop and complete system will be oriented to fix problems you created with misbehavior. If you let it go too far, you are voluntarily putting you on the list for removal.

The root of the problem. Never forget that management is “managing of resources” and the most valuable resource we manage are people. We have to show the trust relationship with people we manage and build the feeling of responsibility. If we are successful, people start to be stand-alone professionals defending the interest of the company without your interventions. Then you are responsible to keep them motivated and promote positive culture. During hiring process, you have to hire diverse people that will help you in the future. Diverse backgrounds mean diverse experiences and in the end more possible solutions to “need to change” requirements. Completely opposite: if you hire only people that will follow your ideas and support whatever you say, you will never have some kind of internal check about what you do.

Science in management. Management is as many other branches of human activity based on scientific methods. That means that every decision has to be based on need, observation, plan and it should have verifiable success. Sometimes we succeed, sometimes we do errors, but we have to measure them and be able to explain every anomaly happening in the process. That makes us better and better managers every day. As in science, it is good to have independent audit or consult someone who is not “polluted” with our way of thinking to check if the methods we use are aligned with goals we have set and with regulations present in some industries (as HIPAA for healthcare, SOX for corporations, etc).

Way to fix it. Everyone had or will have the situation with lack of people that will make a contribution to our decision making process. As any change, we have to detect the problem, to have some plan and to correct it in some time. In the end we have to see positive impact. We should try to do all efforts to keep best players in the company, promote them to have and express diverse opinions and allow people to feel the ownership and to be productive. In modern business, the good practice is to create small motivated teams and to show everyone how every additional energy spent for the best interest of the company is well appreciated. Promote people that are trusted by others and that are respected without your interference.

Conclusion. Even many managers think that, but we are not here for anything but for the “best interest of the business” that is directly aligned with “best interest of the owners”. The best interest is increasing of value of resources business owns or uses, increasing of responsiveness and productivity which combined leads to increase of revenues. Good culture, motivated professionals, open panels and exchange of opinions dominate in every successful modern company. Reading that, you should think about your process, your people and try to find what could be better tomorrow: what could help and increase your output and quality even more?

Regardless of if we are changing the delivery route for our goods or changing the application used by our employees or users every change of business process has to comply with the process of change. Process is needed even we have smallest business and really small impacting change. Process should be trimmed to really simple one (especially if we follow lean principles).  There are few phases before we start with a change:

  1. detect, describe and understand a need for change
  2. create an idea about what has to be changed
  3. create a plan in steps to introduce the change
  4. create a measurement tools of success for every step
  5. describe and understand potential risks during change

A need for change. Before we do any change, we have to first declare that some change is needed and to describe why. If we do not have this, first phase any move forward will lead us to change of status that is risky and that doesn’t have verifiable outcome. That is definitely not wanted scenario for any business regardless of size of business or size of change.

What to change. If we know what has to be changed, we have to use professional capacity of our team members to create the best idea about what is needed to be changed. Change is very often process and it creates new value for the business. To have the best performance in change, top businesses are investing a lot into creating of teams of diverse players. Diversity promotes ideas and in the end makes business benefit more than if we have group of similar thinkers.

Plan in steps. Never do change in large moves. Large moves have large risk for business. Because we have to try to keep risk in controllable state we cannot allow escalation of size of change steps. Doing change in steps does not mean that change will be slower, but that in the end it should have better stability in the end. Steps allow us to plan much better and to detect any deviation from the original plan.

Measuring of success. Continuing from previous section, every move have to be able to be measurable. All people that are executing the change are somehow biased about the change. For that reason, business needs to develop some system that will allow more or less independent measuring of the success of change. Sometimes it is done by the same team members where we have to focus on numbers that are not easy to misinterpret. In perfect world it should be done by independent peer review where we remove bias. It is more expensive measurement, but creates much more precise data. Decision should be based on impact of change and potential risks.

Risk of change. Every change, even tiniest one has its risks. In many businesses you will see groups of people unable to move anywhere because of ultimate fear to introduce any change. If that is paired with disoriented management you have more and more intensive issues with business performance and in the end business tends to fail. Thinking about that, we have to put all risks in the equation and understand that sometimes change with more risk will remove risk that will accumulate and destroy our business. The complete concept of lean business is partly answering this problem with proper dosing of intensity and complexity of the procedure. Generally there is more risk of business failure because of not having the ability to change or to be adaptable/responsible enough than of risks emerged during the change. As managers, you have to keep in mind that there are always quicker and more responsive business and because we are operating in the free market we cannot afford bad business practices.

Conclusion. Business management, especially management of IT is sensitive because it impacts whole enterprise. We have to understand the procedure, understand majority of principles of good management and do intelligent moves in proper time. Even managing is complex activity, that doesn’t mean that it cannot be done well and better and better every day. After you complete some task, do retrospective and try to make it better in the future. Grow in knowledge and easy adapt.

Different companies are doing different businesses on a completely different way. But many companies are losing money because of lack of understanding of the position of management. If you follow books: “managers are entrusted by owners to do business as eyes and hands of company owners by respecting owners best interest”. That said, what is the problem? Many managers do not know, care about or understand that statement. You will see a tendency of bureaucratization in every management and also transition of management to do their jobs as “union leaders”. If anything will increase the value of staff you manage, do it but do not forget who you represent.

From my experience, common error in communication between owners or upper management and lower management is question as: “how you will fix xyz?”. That is not the question. The right question should be: “how you will use your team, create a lean and effective procedure following quality standards to resolve tasks management above you or/and owners put on your list to do?”. No one want to answer that question and upper managers and owners will rarely ask that one even that is the only proper question for a manager. As I said in one of previous articles: to learn management best practices you have to be able to learn from your and other people’s errors. First error is that managers are playing as “resources” and not managers. In the meeting, they have opinion about all professional topics and they will rarely or never ask their team to help them with something. Also, you will see micromanaging that promotes chaos, dissolves trust and introduces complete demotivation especially with senior staff and always ends with a failure.

The main focus of every team and every manager should be measurable productivity. In IT, a modern CIO has to use architects to create framework for responsiveness, stability and scalability of products. He has to introduce culture of learning and adaptiveness. As every other manager he has to create a positive culture that will increase productivity and quality and that is his best contribution to company he is entrusted to manage. As manager is hired on basis of significant trust, hiring process of all staff members has to follow similar principles. If you are hiring senior position staff member, you have to be able to entrust some task and to rely of his/her decisions. If not, you hired junior staff member as a senior one or you hired wrong person for needed position.

In modern time, good companies’ managers provide really impressive project plans, show dedication and good culture creation which promotes them to A-grade leaders. As a manager, you have to respect the feeling of owners that they are spending too much and that everything can be cheaper. You have to show them all benefits of your decisions and to emphasize ways how to use their money as an investment that brings benefits for the company. You have to have intensive communication on appropriate language with everyone. If you are CIO, you are called to help company in creating longterm strategy and goals in IT. Today, by following of TOGAF architectural principles: “IT is everyone’s business”. It influences all parts of the company so it has to be really reliable and enable company’s growth. When you select best technologies for your business, do not forget that technology is not a goal, but only a path to achieve business goals.

To conclude: As a manager, you have to improve your management skills every day. You have to learn from others, both their successes and failures. After you complete one phase or some task, use some time to analyze what could be better done. If you are not able to find anything wrong, you will not be able to grow and improve your skills in time which leads to deterioration of managers value in time. Ask people for opinion, try to use all resources to improve your performance which will bring fruits both to you and to a company you manage. Never forget: be focused to your team’s productivity because in many cases that is the only visible and important outcome of your work!

Today, more and more engineers are offering and pushing for use of NoSQL technologies. It has better performance, infinite scaling and it is much cheaper. But after some time spent in the same debate I think the question is completely wrong. The real question is are we aware that we cannot use databases as anything else but data storage and also that for connected layer (direct applications use) we can start forgetting about joins and relations between tables.

SQL technology started in 1970-es and it was revolutionary in every point: it allowed structured storage of data, it created a system for not repeating of data (normalization) and it allowed security and easy maintenance. Today, we have large established SQL systems as Microsoft SQL Server, Oracle, MySQL, Postgres, and many more. But with invention of NoSQL technology solved important problems and created grim future for SQL as an approach of storing of data.

What SQL databases were missing? Well, with SQL everything is good if you have small data. If you have a bit more of data you have to start archiving old data and that is the reason your bank account cannot show all data from the past but only predominantly last 12 months of activity. We are all used to it and banks decided to archive everything older to allow new data speed and good performance. And after that you have second example as e-mail accounts that can store infinite number of e-mails from the future (as Google, Yahoo, Hotmail, etc.). Same with Facebook. You do not see disclaimer that “only posts from the last 12 months will be visible”. Why? Because they use NoSQL.

But can we conclude that we have to use NoSQL because it is “better”? Yes and no. My opinion is that NoSQL brought different architecture of data storage, but if you start thinking about why NoSQL can scale indefinitely you will see that SQL can mimic that benefits, but it has to renounce “what is good in SQL”. The first to be shoot is normalized data structure and constraints. Why? Because if data is normalized you cannot store different parts on different servers. Especially if you have strict constraints validation. For example, if you have table of doctors with 100k doctors and other table of patients with 1m patients and if they have relationship you have to keep them together if you want to have any performance. If not, adding a new patient will demand search through all locations of doctors table data to check if that doctor exists which will make whole system really bad performance.

To conclude, I think the real answer is to reduce or even eliminate data normalization wherever it is possible. Also, you have to stop using databases as an integration layer for different systems and different management studios of databases as UIs to change data (as many companies does). As I always say: you can violate all these rules, but if you go with highly normalized SQL it will be really few times more expensive, demand more people for maintenance and will need some compromises for user experience. Every of two technologies should be selected based on use cases: reason, not emotions.

One of most stressful processes in the life of any IT professional and especially in the level of architect is project migration and complete refactoring. It is needed and many times we see half done and failed attempts of migration with a large number of ruined careers. My view on why that happens I will try to explain in next few lines.

Initial idea. How to know that system migration is needed? Simple measurement is when system architecture and foundation is making system so hard to maintain and business to grow in the same time it makes it more and more expensive demanding more and more spending. But, do not forget that “old fashioned systems” weren’t built with idea and knowledge of current business that is as a live organism: changing and growing. Also, in the modern business we have completely different security knowledge we didn’t have before (XSS, etc), demand to have module applications and many other business needs created recently with advancement of technology and especially cloud computing and going mobile. As an architect and or manager, you have to guide business to have good understanding when and why this moment arrived and why investment in refactoring is saving money. You have to spend a lot of time to build trust with business intercepting and resolving of all issues before they reflect on migration process.

Plan. They worst plan you can do in any project planning is to have large switch. That is the last resort because it enormously increases the risk for business failure, data loss, systems outage and rolling back and forth. The most common strategy by IT is to plan a large jump in the distant future and hope that it will never come. The much wiser solution would be to plan gradual transition by using all architectural tricks to help separation of logical components and transition one by one of them. That will provide direct oversight by business owners and reduce risk to much more affordable level.

Roles. Because we are talking of very sensitive process, it is very important to understand roles boundaries between members of the team. In many situations you will have chaos in architecture with architects running after bugs in code, Data Developers installing and hosting servers, and overused managers doing code and testing strategy in the same time while half of team is free, etc. Management has to understand roles and to keep everyone in the scope of the specific position. Management has to “manage” resources and resources (IT professionals) have to behave as one. These rules are not without exceptions, but every exception has to be picked carefully, understood and well documented.

Implementation. The virtue in migration planning is how to migrate with a good control of migration risk. To do that, I like to use a proxy strategy and separation at front-end layer. You have to spend some time thinking about smallest steps you can do: smaller they are, lower is the risk. Proxy strategy means that you create front-end SPA-like integration (HTML+JavaScript) circumventing underlying website backend and instead communicating with a proxy API. Proxy API’s job is to send a request to back-end (for not transitioned items) or servicing them or forwarding to the new system if component is already transitioned. One of larger problems of spaghetti architecture of the enterprise application is integration through the database. That practice is unacceptable in the modern environment because it makes any scaling harder and creates large number points of possible failure. In the modern applications performance and clean verified data is a must so any kind of “database fixes” and other tricks are off the table.

Modular design. Modern architectural design demands separation between APIs and all types of front-end (web, mobile apps, import/export components, etc). Having APIs is helping in eliminating of need to have the same code in different places of the same system. Also, vertically, system has to be built in blocks or modular way. Modules as a building components have to be independent as much as they can be. This allows us to create much cleaner code easier to maintain and scale (both vertically and horizontally).

Final thoughts. Migration is very demanding process for complete business and it has to be conducted with clear understanding of the process. It is sensitive process, but having A player managers, architects and developers with knowledge and a vision is helping a lot. It doesn’t need to be a large drama for a business and if it is dome right it means reduction of costs and much more responsive system. After transition, architects have to intercept potential risk of need for complete refactoring soon again with building of strategy and creating of solid clean core of the system.