Friday, May 13, 2016

"It is the library of patterns that defines a good software architect"

I have recently read an interview with Ray Ozzie, Microsoft’s chief software architect where he spoke about his role as chief software architect and what makes a good software architect.

Over the last 10 years I have met a few CIOs who did not believe in the role of the software architect. More often than not those CIOs left to the senior developer or team leader in charge of the architecture. That is a very dangerous practice with many negative consequences to the organisation.

Ray Ozzie says that good software architects are the ones that have spent time building and debugging applications. He says that one can learn a lot by reverse-engineering applications. The more systems you develop and debug, the more you develop an understanding of good software architecture. “It is the library of patterns that defines a good software architect”.

Ray Ozzie’s view makes sense. A good architect should have plenty of experience in order to develop a comprehensive knowledge of the patterns required to build applications. A good software architect is the one that is always researching and learning about new technologies and how to apply them to solve real-life business problems. A good architect will not reinvent the wheel, there is probably a pattern out there for most issues in solutions architecture.

Wednesday, April 27, 2016

IT professionals - make it your business to know your business

Over the last few months I have been collecting the skills/experiences that feature more often in IT job adds. It has been quite an interesting little research that highlighted a few interesting points in relation to technology demands in the market.
The research was done during the 3 months leading into April and covered about 60 IT job adds. I was focusing mainly on IT management and business applications positions.

One of the main findings is the ongoing need for IT professionals to bridge the gap between IT and the business. Professionals who can understand and speak business language, professionals who can translate "IT talk" into something that makes business sense.

The following chart summarizes the skills that featured more prominently in my research.

It is no surprise to me that the two skills in high demand are leadership & management and bridging the gap between IT and the business. These are interrelated as quite often leadership relates to leading the business during a transformational phase which certainly involves bridging the gap between IT and the business.

On a side note, I hate the term "IT and the business". IT is an integral part of the business and IT professionals  should not use this language. I always work with my teams to ensure that this term is not utilized and to ensure they position themselves as an integral part of the business. Maybe I will right a post on this topic sometime in the near future.

Following are a few of my thoughts on how to bridge the gap between IT and the business. I have put all of these ideas in practice and have seen very positive results.

Business education

I got the shock of my life when I first saw my schedule as a 1st year computer science student. There were no IT subjects, I was so frustrated. All I wanted to do was to write code, instead I had to spend all of my first year, and subsequent years, with a significant focus on business, language and critical thinking subjects.

Little did I know that the focus on those subjects was going to be so critical for my career. I still remember the struggle we all went through with accounting, and get that, literature. Yes I had literature as a subject in computer science. I count myself fortunate for having that sort of foundation. The only subject we had in the first year remotely close to writing code was logic. I still remember what the teacher said in the first day, she said "This is not about computers, it is all about the business". I have kept this mantra all throughout my career.

Business education has to be a key educational component for all IT professionals, particularly if you are in the business applications area. Software exists to serve a business purpose, it is imperative for you to know  what that purpose is and exactly how your application addresses it. Furthermore having business related education will equip you not only with the expertise but also the terminology you need to be familiar with in order to communicate with business peers.

Know your business

Business applications are at the core of every business. In order to be a successful applications professional you need to know the ins and outs of your business. It is not good enough to know the industry you are in, you need to know exactly how your business makes money and what is involved in the process.

Let me give you an example, the performing arts industry. There are many different moving parts in a performing arts business. Good music, programs, artists and artistic management. However, how does the company make its money? It is not through artistic management alone, or even great programs, the company makes its money through the marketing of the performances which leads to ticket sales. There are many parts that make the whole and it is important to consider and support all parts of the business, however without ticket sales the company wouldn't survive at all. IT professionals must know and understand deeply how the business generates revenue in order to support and enable its operations.

You need to know exactly how your business makes money and all the supporting technology infrastructure and applications that support and enable its operations.

Make it your business to know your business as well as those who are running the front line business functions.
IT professionals, make it your business to know your business
Be a business professional with a lot of IT expertise

In the last few years IT strategies have gone towards business partnership whereby IT business partners work very closely with other business functions in order to drive technology strategy and implementation.

IT Business Partners must be so close to the business unit they are working with that to an external observer the IT business partner is seen as a member of that business unit.

A few years ago when I was leading the business solutions team of a fast growing organization. I worked so closely with the Marketing team that I was named an honorary member of that business unit. I did speak their language and understood their function, objectives and KPIs thoroughly. I knew the strategy was working because they considered me an integral part of their team and over time the business partner I appointed to marketing did quite well and we were able to achieve great things together.

A successful IT professional must be a business professional first, who can advise the organization on the technology opportunities that can support it to achieve its objectives. You must be a business professional first.

Taking this approach can even lead to IT professionals taking roles outside of IT. For almost one year now I have setup a business function within the Commercial area of my organization. It has been so far a fantastic opportunity despite the many challenges. This assignment will make me a far better IT professional.

Wrapping it all up

IT professionals, make it your business to know your business. The IT function must be seen and operate as a business partner to the rest of the organization delivering value that drives the business forward. In order to be a successful IT professionals you must know your business as well as you know your technology.

Friday, March 22, 2013

"To improve is to change, to be perfect is to change often"

The current business environment is very volatile, things are always changing. Companies need to be able to change quickly in order to keep up with the market, or even better, in order to drive the market.

Winston Churchill said "To improve is to change, to be perfect is to change often". Another interesting quote about change comes from Charles Darwin, he said "It it snot the strongest of the species that survive, not the most intelligent, but the one most responsive to change".

Organisational change management is something that not many professionals, including senior executives, know how to deal with it. I have encountered one too many executives that think that training is all there is to change management.

Wikipedia defines change management as an approach to shift organisations or individuals from a current state to a future desired state. It is an organisational process aimed at helping members of the organisation to embrace, or even desire, change in their business environment.

Change management uses structures and tools to control an organisational change effort. The goal is to maximise benefit and to minimise impact on workers to avoid distractions.

Responsibility for change management lies with executives and managers. They are responsible for introducing change that brings about improvement in a way that employees can cope with.

One classic mistake in change management occurs when managers spend months working on a change process and then expect everyone to accept it. Change needs to be gradual but constant.

John Kotter is a well regarded author of change management books. He recommmends the followwing steps for successful change.
  •  Increase urgency. Explain and lead others into accepting and desiring the change.
  • Build the guiding team. Gert the right people with time, commitment and the necessary skills to achieve the desired future state.
  • Get the vision right.
  • Communicate for buy in. Communicate the change often with the objective to get buy in. You want people to desire the change and see it as positive to their circumstances. Make communication simple and straight to the point. Although communication is important, getting the balance right is vital so you will not be overbearing and bore everyone to the point they don't want to hear about it.
  • Empowerment actions. Senior management must empower  change agents into action, remove obstacles and do all they can to  support the process.
  • Create short term wins. Gradual change is ideal and easier to process. Constant and positive change minimises the impact on the organisation and keeps the moment going.
  • Don't let up. Long change process can be hard to achieve. Keep everyone motivated and working towards achieving the next milestone. Gradual change that can be achieve in bite-size chunks will keep everyone motivated and moving towards the final objective.
  • Make change last. Make change part of company culture, employ workers that embrace change and always want to achieve new heights.
Business change is not only necessary but it is vital for businesses to survive in volatile business environments.

Sunday, March 17, 2013

How to loose your job by being a good manager

If you have done any formal eduction in management and leadership you will know that these terms are different and have profound practical differences.

Let me give you an example. I once worked for an IT manager who was a very good manager. His planning skills were great, fantastic attention to detail, he was organised, he was able to get the team organised and he controlled the activities quite well, ensuring that deadlines were met and the department operated within the budget constraints. These are the basic functions from a manager, planning, organising and controlling.

This manager was always prepared for his meetings and he was very proud of being logical and getting people on his side using his critical thinking and argumentative skills. However what he didn't realised that he didn't win every argument because people agreed with him, instead, he was always right because nobody could argue him out of his views, even if they didn't agree. He was actually very good at presenting his views and getting others to "agree" with him.

I must confess that I thought that working under him was great. The team was producing good outcomes and delivering projects on time and within budget.

However something was happening in the background. Other mangers and directors were getting resented of

Tuesday, February 26, 2013

Project management tools for Agile projects

This is a post by guest blogger Steward Copper

A few days ago I was attending the IT Project Management Conference and participated in a survey. All the attendants were asked one question: "What project management tool or solution do you use for the Agile projects?" Among the Top-10 Agile tools there were the ones I'd used to manage, plan and track my projects and processes - MS Excel, Pivotal Tracker, Comindware and VersionOne. So, let me share my thoughts and experience of using them for task management, sprint and iteration planning, daily meetings, burn-downcharts creation, project tracking and other Agile techniques.

MS Excel

The tool is a standard part of the MS Office package. The main general advantage of choosing it for your next project is that almost everybody is familiar with it and you don't need to spend time for the team training. It's used by many Agile PMs because it:

 - allows to create a product backlog while listing user stories, placing estimates and deadlines;

 - allows to plan iterations or sprints (it's good to create a template on a specific sheet);

 - allows to group tasks into sprints using a using a standard group tool;

 - allows to add any kind of comments for the tasks, stories and other entities using a standard commenting tool;

- allows to support daily stand-ups while filling a sprint progress data;

- provides very high level of flexibility while drawing graphs including burn-down chart, creating custom reports including digital dashboards and so on.

Excel helps many of us to manage projects but it's not so good for remote teams and big projects. Some managers don't use Excel because it doesn't provide the set of predefined processes.

Pivotal Tracker

The tool was created as a SaaS issue tracking system and evolved into a complex solution to support all the main processes of an Agile project. It's chosen thanks to the following:

- it's developed especially for Agile projects and uses Iterative Management Workflow approach;

- it allows to create iterations or sprints including tasks (tickets) of different priority;