Ana içeriğe atla

Data Mesh Principles and Logical Architecture

 Data Mesh Principles and Logical Architecture The great divide of data What do we really mean by data? The answer depends on whom you ask. Today’s landscape is divided into  operational data  and  analytical data . Operational data sits in databases behind business capabilities served with microservices, has a transactional nature, keeps the current state and serves the needs of the applications running the business. Analytical data is a temporal and aggregated view of the facts of the business over time, often modeled to provide retrospective or future-perspective insights; it trains the ML models or feeds the analytical reports. The current state of technology, architecture and organization design is reflective of the divergence of these two data planes - two levels of existence, integrated yet separate. This divergence has led to a fragile architecture. Continuously failing ETL (Extract, Transform, Load) jobs and ever growing complexity of labyrinth of data pipel...

Rotation

 Rotation

I've spent a lot of time of the last year wandering around ThoughtWorks, talking to lots of people on lots of projects. One message that's come home really firmly to me is the value of rotation.

We practice rotation in lots of ways. One of the most notable is rotating around countries. We've put in a deliberate program to encourage people to spend 6-18 months in a different country. Living a good length of time in a different country does a huge amount to widen people's perspective of the world. I've benefitted personally from living both in the UK and USA, even though they are very similar cultures. This mental expansion is even greater for those that spend time in somewhere like India, where the cultural differences are greater.

Geographic rotation presents lots of challanges, particular for older people with familes. One of the things we need to figure out is how to make geographic rotation easier for people, so more people do it. Already there's a notion growing that to prosper in the company you need to spend a spell or two in a foreign office. But I wouldn't want this to be compulsory, because there often are genuine reasons why people can't do it.

My sense is that geographic rotation will be one of our key techniques to avoid the company dividing into national fiefs. We are very much of the lean belief that local optimization often gets in the way of global performance. So we need people to think of the company's success as a whole rather than the success of the office they work for.

As well as geographic rotation, we're also increasingly pushing project rotation. Time and time again I've listened to project teams talk about how bringing in new people with fresh ideas has invigorated the team. For those who rotate, there's also the benefit of more varied work.

One of the biggest difficulties in project rotation is that clients often don't like to lose known able people and get someone new and unproven. I quite understand this. With most consulting companies I would argue hard against allowing the consulting company to rotate - my mantra was "pick the people not the company". I came to this view when working for a Big 8 (as it was in those days) consultancy. The typical tactic was to send in a strong team for the proposal and then swap them out with a distinctly inferior team once the contracts were signed. (In one case a project manager was sold to a client when the company already had that PM allocated to another project in another continent. What's worse they pretended to the client that the PM was still working on the project even when he was thousands of miles away. Oddly they were suprised when the client was annoyed.) One of ThoughtWorks's difference is that there's no second rate team - but it takes time to clients to learn that this isn't just a marketing slogan.

Project rotation is particularly vital to help in propagation of techniques and skills. It's long been my view that knowledge management and reuse are primarily human issues - not a matter to technology or process. Rotation is a practice which we've seen to promote knowledge transfer and reuse, and I think its efficacy is due to the fact that it addresses the human element.


Yorumlar

Bu blogdaki popüler yayınlar

Data Mesh Principles and Logical Architecture

 Data Mesh Principles and Logical Architecture The great divide of data What do we really mean by data? The answer depends on whom you ask. Today’s landscape is divided into  operational data  and  analytical data . Operational data sits in databases behind business capabilities served with microservices, has a transactional nature, keeps the current state and serves the needs of the applications running the business. Analytical data is a temporal and aggregated view of the facts of the business over time, often modeled to provide retrospective or future-perspective insights; it trains the ML models or feeds the analytical reports. The current state of technology, architecture and organization design is reflective of the divergence of these two data planes - two levels of existence, integrated yet separate. This divergence has led to a fragile architecture. Continuously failing ETL (Extract, Transform, Load) jobs and ever growing complexity of labyrinth of data pipel...

Pair Programming Misconceptions

Pair Programming Misconceptions A bunch of common misconceptions about Pair Programming. You have to do pair programming if you're doing an agile process. This is utterly false. 'Agile' is a very broad term defined only in terms of values and principles, most notably in the Manifesto for Agile Software Development. The manifesto doesn't mention pair programming and most agile methods don't make it part of their approach. Since pair programming is a practice of XP it's had a lot of influence in the agile community. As a result it's often mentioned as an agile practice - meaning a practice that's commonly used by people on agile projects. But that's an observation not a prescription. Extreme Programming forces you to do Pair-Programming This is much more nuanced issue. Pair-Programming is one of the practices of XP and has been since its inception. The nuance here is whether XP practices are mandatory for a team that claims to be doing XP. This is actu...

ActivityOriented

  ActivityOriented Any significant software development effort requires several different activities to occur: analysis, user experience design, development, testing, etc. Activity-oriented teams organize around these activities, so that you have dedicated teams for user-experience design, development, testing etc. Activity-orientation promises many benefits, but software development is usually better done with   OutcomeOriented   teams. Traditionally, big businesses with large IT departments (Enterprise IT) have tended to execute IT development projects with a bunch of activity-oriented teams drawn from a matrix IT organization (functional organization). The solid-lined arms of the matrix (headed by a VP of development, testing and so on) are usually along activity boundaries and they loan out “resources” to dotted-lined project or program organizations. Common justifications for doing so include: It helps standardization of conventions and techniques in development if a...