Zachman “Framework”

August 4th, 2011

Many years ago my friends and I had multiple discussions on what architecture was and who architects were. We were figuring out multiple details and were trying to give a definition? description? of software architects, solutions architects, systems architects, enterprise architects. Belonging to the domain where these terms were abused (or at least used loosely), we felt a necessity for properly defining who we were and what we did.

Many years passed.

Today I witness same discussions, but I don’t participate in them anymore; I have had my share of pioneer excitement. However, when I observe a significant deviation from the original meanings of these terms primarily by people who have no idea about the domain, it makes me think about one of characters I worked with in my previous life. He a priori believed that people were fools, which eventually made him a lot of money. I may also believe that I deal with fools, but that rather makes me sad…

The Enterprise Architecture term itself is being misused all the time. It does not make me laugh anymore when someone calls a software architect working on big projects an enterprise architect, it happens so often… So much they have no idea that EA is about strategic planning of the enterprise… Well, what I really want to talk about in so called Zachman ‘Framework’.

As you may know, the essence of the Zachman ‘Framework’ is a 6×6 matrix that models an enterprise and suggest a convenient way of documenting processes and analyzing the enterprise architecture. The rows represent different views/perspectives, the columns represent areas to consider for each view and are named using the words ‘what’, ‘how’, ‘where’, who’, ‘when’, and ‘why’. There is nothing much more to it, just a few rules prescribing consistency and describing the monadic view of the cells. Why on Earth is it called a framework? This is simply a model, even a matrix, presenting a view of an enterprise. I should admit that it is a very convenient way to deal with enterprise architecture, and should be definitely considered a great tool… not a framework.

Once looking into the Zachman matrix for one organization, I realized that the columns in the Zachman matrix are all one word questions in English language. Which means that if John Zachman spoke Russian, he would create more columns. Actually this thought helped me get over the limitations of the model and reasonably expand it. But much more entertaining was realizing the connection between the Zachman matrix and the following verse by Rudyard Kipling:

I keep six honest serving men
(They taught me all I knew);
Their names are What and Why and When
And How and Where and Who.

I send them over land and sea,
I send them east and west;
But after they have worked for me,
I give them all a rest.

Software Tech Market in Vancouver is Dying?

July 31st, 2011

We have been noticing recently that there are some significant changes in the Vancouver hi-tech market. Hi-tech professionals are moving to the States or even to Toronto.:) Why? One of answers I see is a significant discrepancy between the cost of living and salaries. According to the survey (numbeo.com); consumer prices, rent prices, groceries prices, etc. is higher in Vancouver… pretty much everything… with the exception of salaries. Salaries are 11% lower in Vancouver, according to numbeo.com.

I bet, if you dig the statistics comparing Vancouver and major cities in the US, the gap will be even huger.

As a result, the quality of skills of an average software professional in Vancouver is significantly below the used-to-be norm. Project managers keep adding contingency that does not cover low quality work and re-work anymore. Products are being developed rarely on-time and never on-budget. Managers tend to save money by hiring even cheaper (and therefore even less skilled) staff, and the entire quality of software products is degrading constantly and rapidly.

One may notice that in the last few years several noticeable software companies have been looking for new (and replacing former) technology executives; CTOs and VPs. Some of them are being replaced again, since changing the people did not change the paradigm, and some CEOs still believe that software products can be developed by a bunch of smart and enthusiastic young people working over time for pizza and pop. Unfortunately, cheap labour is akin to slavery; the quality is low and the value of the result can barely cover the cost.

I believe that most of the software development can be done cheaper and more effectively if companies let 60% of their employees go and hire real professionals with competitive salaries; competitive enough to keep the brain in the company. (Actually, just getting rid of morons would save money :) but how many companies are willing to do that?) I used to estimate projects I have been involved in as a consultant (used to… before I figured out the rule and got bored), and I guarantee that the majority of those projects could have been performed at 10%-20% of their official budget.

And what’s next? With the 2010 Olympics and changes in the demographics there is a high possibility that Vancouver becomes a retirement city. This factor adds even more pressure to the hi-tech community. I feel that companies like Absolute Software and PNI Media will start shrinking or looking for new investment ideas, and if they don’t restructure the businesses (or sell them, which is restructuring as well), they will reach the point of hibernation very soon.

And the real question is: “Does it create a business opportunity for people like myself who can fix the problem?” And the answer is … (to be continued)

Project Management Anti-patterns

July 19th, 2011

The more I work in IT industry, the more I want to publish a book named “Project Management Anti-Patterns”. Looks like every project I have been on (especially, big projects… especially, government projects) have some project management, well, … challenges. My last project is an great example of a total absence of communication. Work (good work!) that some people do is getting undone by others. Like two forces moving a load into different directions.

What I figured out… If I just do nothing, I will bring more value to the project… because I will not be creating an opposite force.

VB.NET Loop Performance

July 5th, 2011

A couple years ago I have developed a huge WPF VB.Net program.  Once in a while, my customers get back to me with questions; and recently I was trying to improve the performance of the application.

Remembering my discussions with the Barbarian Programmer, who suggested using for i loops instead of foreach, I immediately applied it to my program.  And surprise… surprise… the data processing time increased.  An average time of performing an operation for 160,000+ records in foreach loop increased from 5.22 sec to 6.81 sec when I replaced the foreach with for i.

I was too lazy to look into IL; however trying to explain the phenomenon I came up with this thought. VB started using foreach before C-like languages.  Microsoft guys spent some time optimizing it, which apparently did not find its way into other languages; that’s why VB.NET foreach’s performance is better of that in C#.

Unskilled and Unaware of It

July 1st, 2011

People tend to hold overly favorable views of their abilities in many social and intellectual domains.  The authors suggest that this overestimation occurs, in part, because people who are unskilled in these domains suffer a dual burden.  Not only do these people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of metacognitive ability to realize it.

Article by Justin Kruger and David Dunning